パソコンにあるファイルやディレクトリを扱う上で、パーミッション(Permission)を適切に設定しないと、プログラムが正しく実行されなかったり、最悪、情報漏洩などを引き起こしたりすることがあります。
ターミナルでのコマンド入力作業中、パーミッション設定変更に手間取ったことがあり、今後のために、パーミッションの概要・表示方法・見方・チートシートなどを備忘録としてまとめてみました。
パーミッションとは?
Unix系OSでは、ファイルパーミッションやアクセスモードは非常に重要な役割を果たします。これらのパーミッションは、ファイルやディレクトリに対するユーザーやグループのアクセスを制御するために使用されます。正しく設定されていないと、セキュリティリスクにつながる場合があります。
パーミッションの基本
ファイルのパーミッション
ファイル:パーミッション | 表記 | 意味 |
---|---|---|
読み取り(read): | r | ファイルを読み取る権限 |
書き込み(write) | w | ファイルにデータを書き込むまたはファイルを削除する権限 |
実行 (execute) | x | ファイル(プログラムやスクリプトなど)を実行する権限 |
権限なし | – |
ディレクトリのパーミッション
ディレクトリ:パーミッション | 表記 | 意味 |
---|---|---|
読み取り(read): | r | ディレクトリ内のファイル名リストを読み取る権限 |
書き込み(write) | w | ディレクトリ内でのファイルの作成、削除を許可 |
実行 (execute) | x | ディレクトリ内のファイルやサブディレクトリにアクセスする権限 |
権限なし | – |
ディレクトリの実行権限が自分にあれば、そのディレクトリに入ることができますが、ディレクトリの実行権限がなければディレクトリに入ることはできません。
ユーザークラス
上記のパーミッションは、3つの異なるクラスのユーザーに対し割り当てることができます。
所有者 (user) | ファイルを作成したユーザー |
所有グループ (group) | ファイルの作成者が属するグループ |
その他 (others) | その他全員 |
これらを組み合わせることで、特定のユーザーやグループに対する細かなアクセス制御が可能です。
パーミッションの表示
ターミナルにてls -l
コマンドを使用すると、ファイルパーミッションを確認できます。
ls -l
出力例は以下の通りです。
-rwxr-xr-- 1 user group 12345 Jan 23 12:34 example.txt
出力例の行は以下の情報を表しています:
-rwxr-xr– | ファイルパーミッション |
1 | リンクの数 |
user | ファイルの所有者 |
group | ファイルの所有グループ |
12345 | ファイルサイズ(バイト) |
Jan 23 12:34 | 最終更新日時 |
example.txt | ファイル名 |
パーミッションの見方
上述の-rwxr-xr--
がパーミッションと言われるもので、それぞれの文字は以下を表します。
- 最初の1文字 : ファイルの種別
- 「d」はディレクトリ、「-」はファイル
- 2~4文字目, 5~7文字目, 8~10文字目 : それぞれ3つの異なるクラスのユーザーに対する権限を表しています。
- 2~4文字目 : 所有者のパーミッション
- 5~7文字目 : 所有グループのパーミッション
- 8~10文字目 : その他全員のパーミッション
これを出力例 -rwxr-xr--
で考えると、
- 最初の1文字
-
: ファイル - 2~4文字目
rwx
: 所有者(読み取り、書き込み、実行) - 5~7文字目
r-x
: 所有グループ(読み取り、実行) - 8~10文字目
r--
: その他全員(読み取りのみ)
というパーミションが設定されていることがわかります。
パーミッションの変更
各ユーザークラスに対するパーミッション設定するには、chmod
を使い、3桁の数値を組み合わせて設定できます。最初の桁は所有者のパーミッション、2桁目はグループのパーミッション、そして3桁目はその他のユーザのパーミッションです。(chmod
は change mode の略で,ファイルやディレクトリのパーミッションを変更するコマンドです。)
コマンド例(chmod xxx ファイル名)
chmod 644 example.txt
重要なのは3桁の数値で、以下権限の数値の合計となっています。
- 権限:数値
- 読み取り可能:4
- 書き込み可能:2
- 実行可能 :1
したがって、このコマンド例は、ファイル「example.txt」に対し、所有者に読み取りと書き込みの権限を与え、グループとその他のユーザーには読み取りのみの権限を与えるたい場合のコマンドとなります。
合計 | 数値 | 読み取り r | 書き込み w | 実行可能 x | ||
---|---|---|---|---|---|---|
所有者(owner) | 6 | (4+2+0) | ◯ | ◯ | – | rw- |
所有グループ(group) | 4 | (4+0+0) | ◯ | – | – | r– |
その他ユーザー(others) | 4 | (4+0+0) | ◯ | – | – | r– |
以下は、chmod
コマンドを使用した際の主要な数値とそれに対応するパーミッションのチートシートです。
パーミッションのチートシート
基本的なパーミッション数値
0 | 何の権限もなし | — |
1 | 実行のみ | –x |
2 | 書き込みのみ | -w- |
3 | 書き込みと実行 | -wx |
4 | 読み取りのみ | r– |
5 | 読み取りと実行 | r-x |
6 | 読み取りと書き込み | rw- |
7 | 読み取り、書き込み、実行 | rwx |
chmod コマンド 例
数値 | 所有者 | グループ | 他のユーザー |
---|---|---|---|
700 | 全ての権限 | 権限なし | 権限なし |
755 | 全ての権限 | 読み取り・実行 | 読み取り・実行 |
644 | 読み取りと書き込み | 読み取りのみ | 読み取りのみ |
600 | 読み取りと書き込み | 権限なし | 権限なし |
666 | 読み取りと書き込み | 読み取りと書き込み | 読み取りと書き込み |
400 | 読み取りのみ | 権限なし | 権限なし |
444 | 読み取りのみ | 読み取りのみ | 読み取りのみ |
注意事項
- 注意事項として、パーミッションは、正しく設定されていないと、悪意のある第三者にファイルを不正に見られたり書き換えられる可能性があります。
- そのため、権限を設定する際は、必要最小限の権限をユーザーに与えることで、セキュリティリスクを減らします。例えば、特定のユーザーがファイルを読み取る必要があるだけの場合、そのユーザーに書き込み権限を与えるべきではありません。