chmod ファイルやディレクトリの権限を変更する
chmod [オプション] モード ファイル...試してみる
ls -l memo.txt今の権限を確認します。先頭の -rw-r--r-- が権限です。
chmod 640 memo.txt数値で指定します。所有者は読み書き、グループは読み取りのみ、その他は権限なしになります。
chmod u+x hello.sh記号で指定します。所有者に実行権限を足します。
./hello.sh実行権限が付いたので、スクリプトを実行できます。
chmod -R go-rwx docsディレクトリの中身もまとめて、グループとその他の権限をすべて外します。
ls -lR docs中のファイルまで変わったことを確認します。
主なオプション
-R | ディレクトリの中身にもまとめて適用する |
|---|---|
-v | 処理したファイルごとに結果を表示する |
-c | 変更があったファイルだけ結果を表示する |
--reference=ファイル | 指定したファイルと同じ権限にする |
解説
数値での指定
権限は「所有者・グループ・その他」の順に、3桁の数字で表します。各桁は、読み取り 4、書き込み 2、実行 1 の合計です。
| 数値 | 権限 | 意味 |
|---|---|---|
| 7 | rwx | 読み取り、書き込み、実行 |
| 6 | rw- | 読み取り、書き込み |
| 5 | r-x | 読み取り、実行 |
| 4 | r– | 読み取りのみ |
| 0 | — | 権限なし |
たとえば 644 は、所有者が読み書き、グループとその他が読み取りのみです。755 は、所有者がすべて、グループとその他が読み取りと実行です。
記号での指定
「誰に(u 所有者、g グループ、o その他、a 全員)」「どうする(+ 足す、- 外す、= その通りにする)」「何を(r w x)」を組み合わせます。数値の指定は権限全体を置き換えますが、記号の指定は一部だけを変えられます。
ディレクトリの権限
ディレクトリでは意味が少し変わります。読み取りは中の一覧を見ること、書き込みは中でファイルを作ったり消したりすること、実行は中に入ることです。実行権限がないディレクトリには、cd で入れません。
特殊な権限
4桁目を付けると、特殊な権限を指定できます。4 が SUID、2 が SGID、1 がスティッキービットです。chmod 1777 dir は、誰でも書き込めるが、自分のファイルしか消せないディレクトリにします(/tmp がこの設定です)。記号では u+s、g+s、+t と書きます。
権限を変更できるのは、そのファイルの所有者と root だけです。