Linuxのchmodで数値指定(755・644)を理解する方法!パーミッション設定を初心者向けに徹底解説
生徒
「Linuxでファイルのパーミッションを変更したいんですが、chmod 755とか644とか数字の意味がわからなくて困っています。」
先生
「数字でパーミッションを指定する方法は、最初は難しく感じますよね。でも仕組みを理解すれば、実はとても便利で簡単なんですよ。」
生徒
「数字だけで何を設定しているのか、まったくイメージできないんです。どういう意味があるんですか?」
先生
「わかりました。では、数字の意味を一つずつ丁寧に説明していきますね。実は規則性があって、覚えると一生使えるスキルになりますよ。」
1. パーミッションとは何か?
パーミッションとは、Linuxでファイルやディレクトリに対して「誰が何をできるか」を決める権限設定のことです。これは、複数の人が同じコンピューターを使う環境で、他の人に勝手にファイルを削除されたり、読まれたりしないようにするための仕組みです。
たとえば、あなたが書いた日記のファイルを「自分だけが読み書きできて、他の人は見ることもできない」ように設定したり、プログラムのファイルを「誰でも実行できる」ように設定したりできます。
Linuxでは、このパーミッションをchmod(チェンジモード)というコマンドで変更します。そして、パーミッションを数字で指定する方法が「数値指定」と呼ばれるものです。
2. 3つのグループと3つの権限
パーミッションを理解するには、まず「誰に対する権限か」と「どんな操作ができるか」を知る必要があります。
誰に対する権限か(3つのグループ)
- 所有者(Owner):ファイルを作った人、つまりファイルの持ち主
- グループ(Group):所有者と同じグループに属している人たち
- その他(Others):それ以外のすべての人
どんな操作ができるか(3つの権限)
- 読み取り(Read):ファイルの内容を見ることができる(記号は
r) - 書き込み(Write):ファイルの内容を変更・削除できる(記号は
w) - 実行(Execute):ファイルをプログラムとして実行できる(記号は
x)
この3つのグループそれぞれに、3つの権限を設定できます。つまり、全部で9つの設定項目があるということです。
3. パーミッションの確認方法
実際にファイルのパーミッションを確認してみましょう。ls -lコマンドを使うと、ファイルの詳細情報が表示されます。
ls -l example.txt
-rw-r--r-- 1 user group 1024 Jan 09 10:30 example.txt
最初の-rw-r--r--という部分がパーミッションを表しています。この10文字の意味を分解すると次のようになります。
- 1文字目:ファイルの種類(
-は通常ファイル、dはディレクトリ) - 2~4文字目:所有者の権限(
rw-は読み書きできるが実行できない) - 5~7文字目:グループの権限(
r--は読み取りのみ) - 8~10文字目:その他の権限(
r--は読み取りのみ)
この文字表記を数字に変換したものが、数値指定のパーミッションになります。
4. 数値指定の仕組みを理解しよう
数値指定では、各権限に数字を割り当てます。この数字を覚えることが、数値指定を使いこなす第一歩です。
- 読み取り(r)= 4
- 書き込み(w)= 2
- 実行(x)= 1
そして、与えたい権限の数字を足し算します。たとえば、「読み取りと書き込みができる」という権限なら、4 + 2 = 6になります。「読み取りと実行ができる」なら、4 + 1 = 5です。
すべての権限の組み合わせは、次の8パターンしかありません。
0= --- (何もできない)1= --x (実行のみ)2= -w- (書き込みのみ)3= -wx (書き込みと実行)4= r-- (読み取りのみ)5= r-x (読み取りと実行)6= rw- (読み取りと書き込み)7= rwx (すべての権限)
この数字3つを並べて、所有者・グループ・その他の順に権限を指定します。
5. chmod 755の意味を解説
chmod 755は、Linuxで非常によく使われるパーミッション設定です。この数字を分解してみましょう。
- 最初の7:所有者の権限 = 4 + 2 + 1 = 読み取り + 書き込み + 実行
- 真ん中の5:グループの権限 = 4 + 1 = 読み取り + 実行
- 最後の5:その他の権限 = 4 + 1 = 読み取り + 実行
つまり、755は「所有者はすべてできるが、他の人は読み取りと実行だけ」という意味です。プログラムファイルやスクリプトファイルによく使われます。
chmod 755 script.sh
ls -l script.sh
-rwxr-xr-x 1 user group 512 Jan 09 11:00 script.sh
実行すると、パーミッションが-rwxr-xr-xに変わります。これは、所有者がrwx、グループがr-x、その他がr-xを意味しています。
6. chmod 644の意味を解説
chmod 644も頻繁に使われる設定です。特に、HTMLファイルやテキストファイルなど、実行する必要がないファイルに適用されます。
- 最初の6:所有者の権限 = 4 + 2 = 読み取り + 書き込み
- 真ん中の4:グループの権限 = 4 = 読み取りのみ
- 最後の4:その他の権限 = 4 = 読み取りのみ
つまり、644は「所有者は読み書きできるが、他の人は読み取りだけ」という意味です。自分だけが編集でき、他の人は見るだけという状況に最適です。
chmod 644 document.txt
ls -l document.txt
-rw-r--r-- 1 user group 2048 Jan 09 11:15 document.txt
この設定により、文書ファイルを安全に共有できます。他の人が誤って内容を変更してしまう心配がありません。
7. よく使われるパーミッションの数値一覧
実務でよく使われるパーミッションの数値をまとめました。これらを覚えておくと、すぐに適切な設定ができます。
- 777:すべての人がすべての操作ができる(セキュリティ上、推奨されない)
- 755:所有者は全権限、他は読み取りと実行のみ(実行ファイル向け)
- 700:所有者だけがすべての操作ができる(プライベートなスクリプト向け)
- 644:所有者は読み書き、他は読み取りのみ(一般的なファイル向け)
- 600:所有者だけが読み書きできる(機密ファイル向け)
- 666:すべての人が読み書きできる(一時ファイル向け)
- 444:すべての人が読み取りのみ(設定ファイルの保護向け)
ディレクトリの場合、実行権限は「中に入れるかどうか」を意味します。そのため、ディレクトリには通常755や700が使われます。
8. chmodコマンドの基本的な使い方
chmodコマンドの基本構文は次の通りです。
chmod [パーミッション] [ファイル名]
複数のファイルに同時に設定することもできます。たとえば、カレントディレクトリのすべてのテキストファイルに644を設定する場合は次のようにします。
chmod 644 *.txt
ls -l *.txt
-rw-r--r-- 1 user group 1024 Jan 09 12:00 file1.txt
-rw-r--r-- 1 user group 2048 Jan 09 12:05 file2.txt
また、-Rオプションを使うと、ディレクトリとその中身すべてに再帰的にパーミッションを設定できます。これはウェブサイトのファイルをまとめて設定するときなどに便利です。
9. 実践例:ウェブサイトのファイル設定
ウェブサーバーでHTMLファイルやPHPファイルを公開する際、適切なパーミッション設定が必要です。一般的には次のように設定します。
- HTMLやCSSなどの静的ファイル:
644 - PHPやCGIなどの実行ファイル:
755 - 設定ファイル(config.phpなど):
600 - ディレクトリ:
755
これにより、ウェブサーバーが正常にファイルを読み取れる一方で、第三者が勝手に書き換えることを防げます。セキュリティ対策として、必要最小限の権限を与えることが重要です。
10. 数値指定と記号指定の違い
chmodには数値指定以外に、記号を使った指定方法もあります。たとえば、chmod u+x file.shは「所有者に実行権限を追加する」という意味です。
数値指定のメリット
- 一度にすべての権限を明確に設定できる
- 短く書けるため、スクリプトで使いやすい
- 現在の設定に関係なく、確実に指定した状態にできる
記号指定のメリット
- 現在の権限を保ったまま、一部だけ変更できる
- 直感的でわかりやすい場合がある
状況に応じて使い分けると効率的です。一括設定には数値指定、部分的な変更には記号指定が向いています。どちらも理解しておくと、Linuxの操作がさらにスムーズになります。