パーミッションの変更
chmod
chmod コマンドでパーミッションの変更を行う時、2種類の指定方法がある
- 記号
chmod a+rx hoge.txt
- 数値
chmod 755 hoge.txt
数値の方は、過去に書いた気がするので割愛
記号での記述の仕方
chmod 利用者を表す記号 オペレータ アクセス権 ファイル名
利用者を表す記号
u | ファイルの所有者(「user」の略) |
g | ファイルに設定されている所有グループ(「group」の略) |
o | その他のユーザー(「other」の略) |
a | すべてのユーザー(「all」の略) |
オペレータ
+ | 許可を加える |
- | 許可を取り消す |
= | = で設定した権利のみを設定する |
アクセス権
r | 読み出し(「read」の略) |
w | 書き換え(「write」の略) |
x | 実行(「execute」の略) |
- read はファイルを閲覧することができる
- write はファイルに書き込み、上書きして保存ができる
- execute はファイルを実行することができる。(ls コマンドの実態は /bin/ls ファイルの用に)
※ ファイルを削除できるかどうかは、そのファイルが置かれているディレクトリのパーミッションに依存する。ディレクトリの書き換え権限が許可されていればファイルは削除できてしまう。
ディレクトリのパーミッション
- read ディレクトリ内のファイルの一覧を表示できる。(ls コマンドを実行できる)
- write ディレクトリ内でのファイルの作成、削除、名前変更ができる(コピーは可)
- execute ディレクトリの中に進めるかどうか。(cd コマンドでの移動、find コマンドでのディレクトリ内の検索、さらにファイルの作成もできない)
マスク値
ファイルを新規作成、コピーした時、Linux が指定する値からマスク値という数値を減算して決定される
ディレクトリ | ファイル | |
---|---|---|
Linux が指定する値 | 777 | 666 |
unmask値(root) | 022 | 022 |
設定されるパーミッション(root) | 755 | 644 |
ディレクトリ | ファイル | |
Linux が指定する値 | 777 | 666 |
unmask値(一般ユーザー) | 002 | 002 |
設定されるパーミッション(一般ユーザー) | 775 | 664 |
unmask値は、シェルの初期設定ファイル bashrc に設定されている
- /etc/bashrc
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 # 一般ユーザー else umask 022 # root fi