utte

chmod ファイルやディレクトリの権限を変更する

chmod [オプション] モード ファイル...

試してみる

主なオプション

-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 だけです。

このコマンドを使う問題

  1. chmodでファイルの権限を変更する
  2. chmodの記号指定で実行権限だけを追加する
  3. スティッキービットで共有ディレクトリを安全にする
  4. SSHの公開鍵をauthorized_keysに登録する

関連するコマンド

LinuC 101の出題範囲