linuxで扱われるファイルには全て「オーナー」、「グループ」、「権限」が設定されていて、オーナーは権限を自由に変更できる。
グループ
グループとはユーザーをまとめた集まりのこと。グループに対して権限を与え、グループにユーザーを所属させることによって複数のユーザーに対してまとめて権限を与えることができる。
- ユーザーは必ずどこかのグループに所属する
- 複数のグループに所属することも可能
- ユーザーを作成したときにグループの設定をしなかった場合ユーザー名と同名のグループが作成されそこに所属する
ファイルのパーミッション
ファイルに対して「誰に」「どのような操作」を許可するという権限を設定することができる。
この情報のことをパーミッションと呼ぶ。
ls -lコマンドによって表示されるファイルのパーミッションの読み方
-rwxrw-r--
先頭の文字 | ファイルの種類を表す | -:通常のファイルd:ディレクトリl:シンボリックリンク |
---|---|---|
次の3文字 | 所有者の権限 | r:読み取り権限w:書き込み権限x:実行権限 |
次の3文字 | グループの権限 | r:読み取り権限w:書き込み権限x:実行権限 |
最後の3文字 | その他のユーザーの権限 | r:読み取り権限w:書き込み権限x:実行権限 |
例えば、-rwxrw-r-- の場合:
- 先頭の「-」は通常のファイルであることを示す
- 所有者は読み取り(r)、書き込み(w)、実行(x)の全ての権限を持つ
- グループは読み取り(r)と書き込み(w)の権限を持つ
- その他のユーザーは読み取り(r)のみの権限を持つ
ディレクトリのパーミッション
ディレクトリに対するパーミッションは、ファイルとは少し異なる意味を持つ:
r (読み取り) | ディレクトリ内のファイル一覧を表示できる(ls コマンドが使用可能) |
---|---|
w (書き込み) | ディレクトリ内でファイルの作成・削除・名前変更が可能 |
x (実行) | ディレクトリへの移動(cd コマンド)が可能、ファイルへのアクセスが可能 |
重要な注意点:
- ディレクトリの実行権限(x)がないと、そのディレクトリ内のファイルにアクセスできない
- ディレクトリ内のファイルの作成・削除はディレクトリの書き込み権限(w)で決定される
- ディレクトリに対する実行権限(x)がないと、読み取り権限(r)があってもファイル一覧を見ることができない
- ディレクトリのパーミッションは、そのディレクトリ内のファイルのパーミッションより優先される
chmod ファイルのモードを変更する
シンボルモードによる指定
u | ユーザー(所有者)を指定 |
---|---|
g | グループを指定 |
o | その他のユーザーを指定 |
a | 全て(u, g, o)を指定 |
演算子の意味:
+ | 権限を追加する |
---|---|
- | 権限を削除する |
= | 指定した権限に設定する(他の権限は全て削除) |
モードの種類:
r | 読み取り権限 |
---|---|
w | 書き込み権限 |
x | 実行権限 |
chmod [ugoa] [+-=] [rwx] ファイル名
# 元々の権限
-r--r--r-- (全ての対象に読み取りのみ許可している)
# オーナーに書き込みを許可する場合
chmod u+w ファイル名
# オーナーの書き込みを禁止する場合
chmod u-w ファイル名
# グループ、その他のユーザーの権限を読み取り(r)のみに書き換える場合
chmod go=r ファイル名
数値モードによる指定
パーミッションは3桁の8進数で指定することができる。各桁は以下の権限:
4 | 読み取り権限 (r) |
---|---|
2 | 書き込み権限 (w) |
1 | 実行権限 (x) |
0 | 権限なし (-) |
各桁の意味:
1桁目 | 所有者の権限 |
---|---|
2桁目 | グループの権限 |
3桁目 | その他のユーザーの権限 |
# 7(rwx):所有者に全ての権限を付与
# 5(r-x):グループに読み取りと実行を許可
# 4(r--):その他のユーザーに読み取りのみ許可
# とする場合
chmod 754 ファイル名