Linuxのchmodコマンドは、ファイルやディレクトリのアクセス権限(パーミッション)を変更するための基本かつ重要なコマンドです。すべてのLinuxユーザー・管理者が正確に理解することで、セキュリティと運用効率の大幅な向上につながります。
chmodコマンドの基礎
基本概念と役割
- chmodは「change mode」の略で、ファイル/ディレクトリのパーミッション設定・変更を行います。
- 対象は「所有者(u)」「グループ(g)」「その他(o)」「全体(a)」の4区分。
- 各区分ごとに「読み取り(r)」「書き込み(w)」「実行(x)」の3種類の権限を設定できます。
各権限の意味
chmodの指定方法(数値/記号)
数値(オクタル)指定
- 形式:
chmod 755 ファイル名
- 数値は
r=4
, w=2
, x=1
の合算。
- 左から「所有者」「グループ」「その他」の順。
例
chmod 644 myfile.txt # 所有者はrw、他はrのみ
chmod 700 secret.txt # 所有者だけが全権限
chmod 755 script.sh # 所有者は全権限、他は実行と読み
記号(シンボリック)指定
- 形式:
chmod [対象][演算子][権限] ファイル名
- [対象]:u(所有者)/g(グループ)/o(その他)/a(全員)
- [演算子]:+(付加)/−(削除)/=(上書き)
- [権限]:r/w/x
例
chmod u+x script.sh # 所有者に実行権
chmod go-w data.log # グループ・その他の書き込み権を削除
chmod a=r public.txt # 全員「読み込みのみ」
主なオプション一覧
chmodを使いこなすテクニック
特殊権限
- SUID(Set User ID): 実行時に所有者権限
- SGID(Set Group ID): グループ権限を付与+ディレクトリ配下のグループ継承
- スティッキービット: ディレクトリ内ファイルの削除権限制限
findやxargsとの組み合わせ例
find . -name "*.sh" -exec chmod +x {} \; # シェルスクリプトを実行可能に一括変更
find . -type d -exec chmod 755 {} \; # ディレクトリのみ権限修正
find . -type f -exec chmod 640 {} \; # ファイルのみ一括修正
find . -perm 777 | xargs chmod 755 # 権限777を検出して755に修正
パーミッションの確認
ls -l
:権限状態を一覧確認
- 出力例:
-rw-r--r-- 1 user group 1234 日付 ファイル名
よく使うchmodコマンド早見表
セキュリティ上の注意点
- 最小権限の原則:必要最小限の権限のみ付与
- 権限の定期チェック:とくに777のパーミッションは不用意に使わない
- 秘密ファイル/ディレクトリは600・700指定を推奨
まとめ
chmodコマンドを正しく使い分けることで、Linuxシステムの安全性・管理性が大きく向上します。慣れないうちはls -l
やchmod --help
で都度確認しつつ、まずは基本的な数値モード・記号モードから実践しましょう。
コメント