【保存版】Linuxファイル操作と権限の「完全攻略」バイブル!黒い画面を支配する基礎教養

Linux

【保存版】コマンド入力の手が止まるあなたへ贈る、ファイル操作の全て

こんにちは!「Linux工房」管理人のリナックス先生です。
そして、サーバー構築の荒波を乗り越えてきたコウ君、最近の調子はどうかしら?

コウ君

先生…正直に白状します。
手順書通りにサーバーを作ることはできるようになったんですけど、いざ自分で設定ファイルを書き換えようとしたり、バックアップを取ろうとしたりすると、手が止まっちゃうんです。
「Permission denied」って怒られたり、ファイルをどこにコピーしたか分からなくなったり…。
基礎が抜けている気がして、怖くて夜も眠れません!

リナックス先生

それは多くのエンジニアが通る道よ。
「なんとなくコピペ」で動かすことはできても、LinuxというOSの「呼吸」を理解していないと、トラブルが起きた時に手も足も出なくなるわ。
今回は原点回帰!
ファイル操作、権限(パーミッション)、そしてストリーム操作まで、Linuxを自在に操るための基礎知識を、これでもかというくらい徹底的に解説するわ。
この記事を読み終える頃には、黒い画面が「友達」に見えてくるはずよ!

第1章:Linuxの地図を読む(ファイルシステムとパス)

コマンドを覚える前に、まずは自分が「どこ」にいて、「どこ」に向かおうとしているのかを理解する必要があります。
Linuxの世界地図である「ディレクトリ構造」から始めましょう。

1. ツリー構造の頂点「ルート」

Windowsでは「Cドライブ」「Dドライブ」といったドライブごとに別れていますが、Linuxにはドライブという概念がありません。
すべては /(ルートディレクトリ) という一つの頂点から始まる、巨大な樹木のような構造(ツリー構造)になっています。

どんなファイルも、USBメモリなどの外部機器でさえも、すべてこの「ルート」の下のどこかに配置されます。

ディレクトリ 役割 Windowsでのイメージ
/ (root) すべての始まり。 マイコンピュータ全体
/home 各ユーザーの個人部屋。
/home/kou のようにユーザーごとのフォルダがある。
C:\Users
/etc システムの設定ファイル置き場。
ApacheやSSHの設定などは全部ここ。
コントロールパネル+AppData
/var 変化するデータ(Variable)置き場。
Webサイトのデータ(/var/www/html)やログ(/var/log)など。
該当なし(データ保管庫)
/bin, /usr/bin コマンド(プログラム)の実行ファイル置き場。
lscp などの正体はここにあります。
C:\Windows\System32
/tmp 一時ファイル置き場。
再起動すると中身が消えることが多い。
Tempフォルダ

2. 「絶対パス」と「相対パス」の完全理解

目的地(ファイル)を指定する方法には2種類あります。
これを使い分けることが、コマンド操作の効率化への第一歩です。

  • 絶対パス(Absolute Path):
    住所を「北海道札幌市…」と最初から最後まで書く方法。
    必ず /(ルート) から書き始めます。
    例:cd /var/www/html
    メリット: 今自分がどこにいても、必ず目的地にたどり着ける。
    デメリット: 文字数が長くなりがち。
  • 相対パス(Relative Path):
    「ここから右に曲がって…」と、現在地を基準にする方法。
    / から始まりません。
    例:cd html (今 /var/www にいる場合)
    メリット: 短く書ける。
    デメリット: 現在地を把握していないと迷子になる。

3. 魔法の記号「.」と「..」と「~」

相対パスを使う上で、絶対に覚えておかなければならない特殊な記号があります。

記号 読み方 意味 使用例
. ドット 「ここ(カレントディレクトリ)」 ./script.sh
(ここにあるプログラムを実行せよ)
.. ドットドット 「一つ上の階層(親ディレクトリ)」 cd ..
(一つ上のフォルダに戻る)
~ チルダ 「自分のホームディレクトリ」 cd ~
(実家に帰る=ホームに戻る)

第2章:基本操作の「CRUD」を極める

ファイル操作の基本は、Create(作成)、Read(参照)、Update(更新/移動)、Delete(削除)です。
それぞれのコマンドには、教科書には載っていない「現場でよく使うオプション」が存在します。

1. ls:ただ見るだけじゃない

ファイル一覧を表示する ls コマンド。
ただ ls と打っているだけでは素人です。以下のオプションを指に覚え込ませましょう。

ls -l    # 詳細情報を表示(権限、所有者、サイズ、日付)
ls -a    # 隠しファイル(.から始まるファイル)も表示
ls -lh   # ファイルサイズを「KB, MB」など人間が読みやすい単位で表示
ls -rt   # 更新日時が「古い順」に表示(一番下が最新になるのでログ確認に便利!)

プロの合わせ技:
ls -lah (詳細、隠し、見やすく)が鉄板です。

2. cp:コピーの落とし穴

ファイルを複製する cp コマンド。
注意すべきは「ディレクトリのコピー」と「上書き確認」です。

cp file1.txt file2.txt        # ファイルのコピー
cp -r dir1 dir2               # ディレクトリごとコピー(-r 必須!)
cp -p file1.txt file2.txt     # 日付や権限などの情報を保持したままコピー(バックアップに最適)
cp -i file1.txt file2.txt     # 上書きする前に「本当にいい?」と聞いてくれる

現場の常識:
設定ファイルを編集する前には、必ず cp -p でバックアップを取りましょう。
例:cp -p httpd.conf httpd.conf.org

3. mv:移動と改名の一人二役

ファイルを移動する mv コマンドですが、Linuxには「リネーム(名前変更)」という専用コマンドがありません。
「移動」を使って名前を変えます。

mv old.txt new.txt            # 同じ場所で名前を変える = リネーム
mv file.txt /tmp/             # ファイルを /tmp ディレクトリへ移動
mv file.txt /tmp/new.txt      # 移動しながら名前も変える

4. rm:取り扱い注意の最終兵器

LinuxのCUIには「ゴミ箱」がありません。
rm で消したファイルは、基本的に二度と戻ってきません。
指差し確認をしてからエンターキーを押す癖をつけましょう。

rm file.txt                   # ファイルを削除
rm -r dir1                    # ディレクトリごと削除
rm -f file.txt                # 警告なしで強制削除(Force)
rm -rf dir1                   # ディレクトリを警告なしで強制削除(最強かつ最恐のコマンド)
リナックス先生

rm -rf / というコマンドは、Linuxシステム全体を破壊する「滅びの呪文」として有名よ。
冗談でも絶対に打っちゃダメ。
特に sudo をつけて実行する時は、震える手で確認しなさい。

第3章:権限(パーミッション)の数学

初心者を最も苦しめる「Permission denied」。
これを理解するには、Linuxの「所有者」と「権限」の概念を、数字で理解する必要があります。

1. ls -l の暗号を解読する

ls -l を実行すると、以下のような文字列が表示されます。

-rwxr-xr--  1  kou  staff  1024  Jan 01 12:00  script.sh

一番左の -rwxr-xr-- が権限を表しています。
これは、以下のように分解して読みます。

部分 記号 対象 意味
1文字目 - ファイル種別 - ならファイル、d ならディレクトリ。
2-4文字目 rwx 所有者 (User) 持ち主(kouさん)は何ができるか?
5-7文字目 r-x 所有グループ (Group) 同じグループ(staff)の人は何ができるか?
8-10文字目 r-- その他 (Other) 赤の他人(世界中の誰か)は何ができるか?

2. r, w, x の意味

  • r (Read): 読む権限。
    ファイルなら「中身を見る」、ディレクトリなら「lsで一覧を見る」。
  • w (Write): 書く権限。
    ファイルなら「書き換え・削除」、ディレクトリなら「中にファイルを作る・消す」。
  • x (eXecute): 実行する権限。
    ファイルなら「プログラムとして動かす」、ディレクトリなら「cdで中に入る」

重要ポイント:
ディレクトリの中を見たり入ったりするには、x 権限が必須です。
「Webページが見れない(403 Forbidden)」というエラーの多くは、ディレクトリに x が付いていないことが原因です。

3. 755とか644って何?(8進数の魔法)

権限を変更する chmod コマンドでは、数字を使うのが一般的です。
この数字は、権限を足し算したものです。

  • r (読む) = 4
  • w (書く) = 2
  • x (実行) = 1

計算例:

  • 7 = 4+2+1 (読み・書き・実行すべてOK = 最強)
  • 6 = 4+2 (読み・書きOK)
  • 5 = 4+1 (読み・実行OK = 書き換え不可)
  • 0 = 権限なし

つまり chmod 755 とは、
「自分は最強(7)、グループは読み実行だけ(5)、他人も読み実行だけ(5)」
にするという意味です。
これがWebサーバーのディレクトリの推奨設定です。

4. 所有者を変更する chown

どんなに権限設定(chmod)を頑張っても、持ち主(chown)が違えば動かないことがあります。
特にWebサーバー(Apache/Nginx)の場合、ファイルの持ち主を apachewww-data にする必要があります。

chown apache:apache index.html   # 所有者を apache、グループを apache に変更
chown -R apache:apache /var/www  # ディレクトリの中身も全部まとめて変更(-R)

第4章:テキスト処理とパイプライン(Linuxの真髄)

Linuxが強力なのは、複数のコマンドを組み合わせて複雑な処理を一瞬で行えるからです。
その鍵となるのが 「パイプ(|)」「リダイレクト(>)」 です。

1. ファイルの中身を見るコマンド

コマンド 特徴
cat ファイルの中身を全部一気に表示。
短いファイル向け。
less 1ページずつスクロールして表示。
長いログファイルなどはこれ。q で終了。
head 最初の10行だけ表示。
head -n 5 で5行表示。
tail 最後の10行だけ表示。
tail -f で追記されるログをリアルタイム監視できる(超重要)。

2. 検索する grep

ファイルの中から特定の文字を探し出します。

grep "Error" access.log        # ログから "Error" を含む行だけ表示
grep -r "config" /etc/         # ディレクトリ内の全ファイルから検索

3. パイプ(|)でコマンドを繋ぐ

前のコマンドの結果を、次のコマンドに渡します。
これが使えると「エンジニア」っぽさが格段に上がります。

例:大量のプロセスの中から、httpdだけを探す

ps aux | grep httpd

例:ログファイルからエラー行を抽出し、その数を数える

cat error.log | grep "Critical" | wc -l

4. リダイレクト(>)で保存する

コマンドの結果を画面に出すのではなく、ファイルに書き込みます。

  • > (上書き): ファイルの中身を空にして、新しい内容を書き込む。
  • >> (追記): ファイルの末尾に内容を追加する(ログ保存などはこれ)。
echo "Hello" > test.txt      # test.txt に Hello と書き込む
date >> access.log           # ログの最後に日時を追記する

第5章:知っておくと得する便利コマンド集

1. find:迷子のファイルを探す

「あれ、あの設定ファイルどこだっけ?」という時に。

find /etc -name "*httpd*"    # /etc以下から、名前にhttpdを含むファイルを探す

2. ln:ショートカットを作る

Windowsのショートカットと同じ「シンボリックリンク」を作ります。
Nginxの設定有効化などでよく使います。

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

3. tar:圧縮・解凍

Linuxではzipよりも tar.gz が標準です。
オプションが覚えにくいですが、語呂合わせで覚えましょう。

  • 圧縮(zcvf): Zip Create View File(ジップで作って見せてファイルに)
  • 解凍(zxvf): Zip eXtract View File(ジップ展開して見せてファイルに)
tar -zcvf backup.tar.gz /var/www/html    # 圧縮
tar -zxvf backup.tar.gz                  # 解凍

まとめ:黒い画面は怖くない

お疲れ様でした!
かなりのボリュームでしたが、ここにあるコマンドと概念を理解していれば、日常のサーバー運用で困ることはほぼなくなります。

最初は lscd だけでもおぼつかないかもしれません。
でも、自転車と同じで、一度体が覚えてしまえば、意識せずに指が勝手に動くようになります。

まずは、このページをブックマークして、VPSをいじる時の「辞書」として使ってください。
失敗を恐れず、たくさんコマンドを打って、Linuxと仲良くなりましょう!

リナックス先生

プロのエンジニアでも、コマンドのオプションを全部暗記しているわけじゃないの。
大切なのは「何ができるか」を知っていることと、「困った時にマニュアル(manコマンドやこの記事)を調べる力」よ。
さあ、今日もVPSにログインして、レッツ・ハッキング!

▼練習用サーバーを持っていない人はこちら(推奨VPS)

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント