Linuxを使う上で、ファイルやディレクトリの権限と所有権を適切に管理することは非常に重要です。
この記事では、初心者でもわかりやすく、chmod、chown、umaskといったコマンドを使いながら、
ファイル管理の基礎を学んでいきます。
パーミッションと所有権の基本
Linuxでは、各ファイルやディレクトリに対して、誰が何をできるかという
パーミッション(権限)と、所有者とグループが設定されています。
これによって、ファイルを誰が読み込んだり、変更できるかが決まります。
ファイルのパーミッション例
まずは、ls -l
コマンドを使って、
ファイルのパーミッションと所有権を確認してみましょう。
ls -l
出力例:
-rw-r--r-- 1 user group 1024 Sep 14 10:00 example.txt
この出力から、次のような情報が得られます。
- -rw-r–r–:ファイルの権限(パーミッション)
- user:ファイルの所有者
- group:ファイルの所有グループ
パーミッションの見方
-rw-r--r--
の部分を3つのグループに分けて読みます。
- 所有者(user)の権限:
rw-
(読み取り&書き込み) - グループ(group)の権限:
r--
(読み取りのみ) - その他のユーザー(other)の権限:
r--
(読み取りのみ)
パーミッションの見方を詳しく
-rwxr-xr--
という文字列のパーミッションを確認してみましょう。
これを分解すると以下のようになります。
最初の文字 (-
):
-
は「通常のファイル」を意味します。d
は「ディレクトリ」を示します。l
は「シンボリックリンク」を示します。
次の9文字 (rwxr-xr–):
この部分は3つのグループに分かれていて、
それぞれユーザー、グループ、その他のユーザーに対するパーミッションを表しています。
最初の3文字 (rwx) – ユーザーの権限:
r
= 読み取り (read)w
= 書き込み (write)x
= 実行 (execute)
- 例えば、
rwx
の場合、ユーザーには
「読み取り」「書き込み」「実行」権限があることを示します。
次の3文字 (r-x) – グループの権限:
r
= 読み取り (read)-
= 書き込み不可x
= 実行 (execute)
- この例では、グループメンバーには「読み取り」と「実行」のみ許可されていて、
書き込みはできないということになります。
最後の3文字 (r–) – その他のユーザーの権限:
r
= 読み取り (read)-
= 書き込み不可-
= 実行不可
- その他のユーザーには「読み取り」しか許可されていません。
chmod:ファイルやディレクトリのパーミッションを変更する
chmod
コマンドを使って、ファイルやディレクトリのパーミッションを変更できます。
読み書き権限の追加
たとえば、example.txt
に書き込み権限をグループにも追加したい場合、次のコマンドを実行します。
chmod g+w example.txt
これで、example.txt
のグループに書き込み権限が付与されます。
再度、ls -l
コマンドで確認してみましょう。
ls -l
出力例:
-rw-rw-r-- 1 user group 1024 Sep 14 10:00 example.txt
グループの権限が rw-
に変更されていることがわかります。
パーミッションの数値表記
chmod コマンドでは、数値(モード値)を使って権限を設定する方法もあります。
たとえば、読み書き実行権限を全ユーザーに与えたい場合は、次のように数値表記で行います。
chmod 777 example.txt
数値の意味:
- 7:読み取り(4)+書き込み(2)+実行(1)= 7
- 5:読み取り(4)+実行(1)= 5
- 0:権限なし
数値(777)の左から「所有者/グループ/その他」に対する割り当てがされており
各権限の2進数の組み合わせで権限が決まります。
例えば、
- 644:所有者は「読み取り」と「書き込み」可能・グループは「読み取り」のみ可能・その他は「読み取り」のみ可能
- 755:所有者は「読み取り書き込み実行」すべて可能・グループとその他は「読み取り」と「実行」が可能
となります。
chown:ファイルの所有者やグループを変更する
ファイルやディレクトリの所有者やグループを変更するには、chown
コマンドを使います。
所有者を変更する
次のコマンドで、ファイル example.txt
の所有者を newuser
に変更します。
※所有者の変更はrootユーザーのみで実行可能なのでsudo
を使用します。
sudo chown newuser example.txt
所有者とグループを同時に変更
所有者とグループを同時に変更したい場合、次のようにコマンドを使います。
sudo chown newuser:newgroup example.txt
これで、example.txt
の所有者が newuser
に、グループが newgroup
に変更されます。
再び、ls -l
で結果を確認しましょう。
ls -l
出力例:
-rw-r--r-- 1 newuser newgroup 1024 Sep 14 10:00 example.txt
umask:新規ファイル作成時のデフォルトパーミッションを設定する
umask
は、ファイルやディレクトリを作成したときに適用される
「デフォルトのパーミッション」を決定します。
デフォルトのパーミッション
通常、Linuxではファイルのデフォルトパーミッションは 666、
ディレクトリのデフォルトパーミッションは 777 に設定されています。
これらは次のように意味します。
- 666: ファイルに対して、ユーザー、グループ、その他の全員が「読み取り」と「書き込み」を行える。
- 777: ディレクトリに対して、全員が「読み取り」「書き込み」「実行」を行える。
umask の計算
umask
はこのデフォルトパーミッションから「許可しない権限」を指定するためのマスク値です。
たとえば、umask 022
の場合、次のように計算されます。
- ファイルの場合:
- 666(デフォルト)から 022 を引く → 644
- この結果、ユーザーには「読み取り」「書き込み」権限があり、グループとその他のユーザーには「読み取り」だけが許可されます。
- ディレクトリの場合:
- 777(デフォルト)から 022 を引く → 755
- これにより、ユーザーには「読み取り」「書き込み」「実行」が許可され、グループとその他のユーザーには「読み取り」「実行」だけが許可されます。
umaskを確認する
現在のumask
設定を確認するには、以下のコマンドを実行します。
umask
たとえば、0022
と表示されれば、新しく作成するファイルのパーミッションは644、
ディレクトリのパーミッションは755になることを示します。
umask
を設定することで、システムの安全性を保ちながら
ファイルやディレクトリの作成時に適切な権限を割り当てることができます。