Linuxパーミッション完全攻略!ls -lで見れるファイル権限と所有権の仕組み
生徒
「Linuxを使っていると、ファイルを編集しようとした時に『許可がありません』と怒られてしまいました。これってどういうことですか?」
先生
「それは『パーミッション』が原因ですね。Linuxには、誰がそのファイルを読んでいいか、書き換えていいかという厳しいルールがあるんですよ。」
生徒
「難しそうですね…。どうすれば今の設定を確認できるんでしょうか?」
先生
「まずは ls -l というコマンドを使いましょう。これを使えば、ファイルにかけられた『鍵』の状態が丸わかりになります。一緒に読み解き方を覚えましょう!」
1. Linuxのパーミッション(権限)とは?
Linux(リナックス)というシステムは、世界中のサーバーなどで使われている非常に安全なOSです。その安全性を支えている仕組みの一つが「パーミッション(権限)」です。これは、簡単に言うと「このファイルは誰が触っていいですよ」というルールのことです。
例えば、あなたの家の住所録や日記が誰にでも勝手に見られたり、書き換えられたりしたら困りますよね?Linuxでも同じように、システムを守るために「管理者だけが触れるファイル」「自分だけが読めるファイル」「みんなが使えるプログラム」といった具合に細かく制限がかかっています。
パソコンを初めて触る方にとっては、少し窮屈に感じるかもしれませんが、この仕組みのおかげで、ウイルスが勝手に大事なファイルを消したり、他のユーザーが勝手に設定を変えたりすることを防いでいるのです。
2. ls -lコマンドで詳細情報を表示しよう
ファイルにどのような権限がついているかを確認するには、ターミナル(黒い画面)で「ls -l」というコマンドを入力します。単なる ls コマンドはファイル名を表示するだけですが、 -l という「オプション」をつけることで、詳細な情報をリスト形式で表示できます。
実際にコマンドを打ってみると、以下のような表示が出てきます。
ls -l
-rw-r--r-- 1 user group 1024 Jan 10 10:00 memo.txt
この中で特に注目してほしいのが、一番左側の -rw-r--r-- という10文字の記号です。これがそのファイルの状態や、誰が何をしていいかを示す「パーミッション」の正体です。初心者のうちは暗号のように見えるかもしれませんが、読み方が分かれば非常にシンプルです。
3. パーミッション文字列の読み解き方
先ほどの -rw-r--r-- という文字列を分解して考えてみましょう。この10文字は、大きく4つのパーツに分かれています。
まず、一番左の1文字目は「種類」を表します。ハイフン - なら普通のファイル、 d ならディレクトリ(フォルダ)を意味します。
その後の9文字は、「3文字ずつ」のセットで読みます。
- 左の3文字: 所有者(自分)の権限
- 真ん中の3文字: グループ(仲間)の権限
- 右の3文字: その他(第三者)の権限
つまり、「自分にはどんな権利があるか?」「仲間にはどこまで許すか?」「全く知らない人にはどうするか?」という3段階でルールが決められているのです。
4. r・w・xの意味を知ろう
パーミッションに使われるアルファベットは主に3種類あります。これらがファイルの「鍵」の種類を表しています。プログラミング未経験の方でも、以下の3つの英単語の頭文字だと覚えれば簡単です。
- r (read): 読み取り権限。中身を見ることができます。
- w (write): 書き込み権限。中身を書き換えたり、消したりできます。
- x (execute): 実行権限。プログラムとして動かすことができます。
もし、その権限がない場合はハイフン - で表示されます。例えば、 r-- となっていれば、「読むことはできるけど、書き換えることも動かすこともできない」という状態を指します。読み取り専用のファイルなどはこのようになっていることが多いです。
5. 所有権(オーナー)とグループの違い
ls -l の結果をもう一度見てみましょう。権限の文字列の右側には、名前が2つ並んでいるはずです。
ls -l sample.sh
-rwxr-xr-- 1 taro sales 500 Jan 10 11:00 sample.sh
ここで taro と書いてある部分が「所有者(ユーザー)」です。このファイルを作った人、あるいは現在の持ち主です。その隣の sales というのが「グループ」です。Linuxでは複数のユーザーを「営業部」「開発部」のようにグループにまとめることができ、そのグループ単位で権限を与えることができます。
上記の sample.sh の例で見ると、所有者の taro さんは rwx(何でもできる)、 sales グループの人は r-x(読むことと実行はできるが書き換え不可)、それ以外の人は r--(読むことしかできない)という設定になっていることがわかります。
6. 特殊な権限!管理者「root」の存在
Linuxには、あらゆる制限を無視して何でもできる最強のユーザーが存在します。それが「root(ルート)」です。Windowsでいうところの「管理者」にあたります。
通常、一般のユーザーがシステムの重要な設定ファイルをいじろうとすると、「許可がありません」と拒否されます。しかし、設定を変更する必要があるときは一時的にrootの権限を使って操作します。この時に使うのが sudo という魔法の言葉です。root権限でファイルを確認する例を見てみましょう。
ls -l /etc/shadow
-rw-r----- 1 root shadow 1234 Jan 10 12:00 /etc/shadow
このように、システムにとって非常に重要なファイル(パスワード情報など)は、所有者が root になっており、一般ユーザーが中身を盗み見ることができないように厳重に守られています。Linuxを学ぶ上で、この「一般ユーザー」と「rootユーザー」の使い分けはとても大切です。
7. ディレクトリの権限には要注意
実は、ディレクトリ(フォルダ)における rwx の意味は、ファイルの場合と少しだけ異なります。ここが初心者がつまずきやすいポイントです。
- r(ディレクトリ): 中にあるファイルの一覧を表示できるか。
- w(ディレクトリ): 中に新しいファイルを作ったり、削除したりできるか。
- x(ディレクトリ): そのフォルダの中に「入る」ことができるか。
意外なのが x です。ファイルなら「実行」でしたが、ディレクトリの場合は「中に入る(アクセスする)」ための通行証のような役割を果たします。もしディレクトリに x 権限がついていないと、たとえ中のファイル名を知っていても、その場所に移動することすらできません。
8. 数値で表されるパーミッション
Linuxを勉強していると、 chmod 755 のように、権限を数字で表現することがよくあります。これは rwx を数字に置き換えて合計したものです。
| 記号 | 数値 | 意味 |
|---|---|---|
| r | 4 | 読み取り |
| w | 2 | 書き込み |
| x | 1 | 実行 |
例えば、 rwx なら 4+2+1=7 となります。 r-x なら 4+0+1=5 です。これを「自分・グループ・その他」の3人分並べて、「755」や「644」といった3桁の数字で表現します。エンジニア同士の会話では「このファイルの権限はロクヨンヨンにしておいて」といった風に使われます。少し専門的ですが、仕組みを知っておくとプロっぽくなりますね!
9. なぜ権限の確認が必要なのか
最後に、なぜ初心者のうちから ls -l で権限を確認する癖をつけるべきなのかをお話しします。プログラミングの学習を始めると、プログラムを書いたのに動かない、画像が表示されない、といったトラブルによく遭遇します。その原因の多くが、実は「コードの間違い」ではなく「権限不足」だったりするのです。
自分が作ったプログラムが実行できないとき、あるいはWEBサイトの画像が表示されないときは、まず落ち着いて ls -l を叩いてみましょう。所有者が自分になっているか? 実行権限 x はついているか? 読み取り権限 r が欠けていないか? これを確認するだけで、解決までの時間が大幅に短縮されます。
Linuxを使いこなす第一歩は、このパーミッションを正しく理解し、コントロールできるようになることです。ターミナルの向こう側に広がる安全な世界を守るために、この ls -l の見方をしっかりマスターしておきましょう。
10. 実際の操作例で復習
最後におさらいとして、新しくファイルを作成した直後の状態を確認してみましょう。通常、新しくファイルを作ると、システムの設定に基づいた標準的な権限が自動的に割り当てられます。
touch newfile.txt
ls -l newfile.txt
-rw-rw-r-- 1 student users 0 Jan 10 13:00 newfile.txt
この結果を見ると、このファイルは「所有者の student さんと users グループの人は読み書きができるけど、それ以外の人は読むことしかできない」という状態であることがわかりますね。このように、コマンド一つでファイルを取り巻く人間関係やルールが瞬時に把握できるようになります。最初は難しく感じるかもしれませんが、何度も見ているうちに自然と体が覚えていきますよ!