ファイル操作
chmod
ファイルやディレクトリのパーミッション(アクセス権限)を変更する
SYNTAX
chmod [options] mode file... パーミッションの仕組み
ファイルには 所有者(user)・グループ(group)・その他(other) の3種類のアクセス権が設定されている。
-rwxr-xr--
^^^ 所有者(user): 読み(r) 書き(w) 実行(x)
^^^ グループ(group): 読み(r) 書き(-) 実行(x)
^^^ その他(other): 読み(r) 書き(-) 実行(-)
| 権限 | 記号 | 数値 |
|---|---|---|
| 読み取り | r | 4 |
| 書き込み | w | 2 |
| 実行 | x | 1 |
| なし | - | 0 |
数値モードの例
| 数値 | 権限 | 意味 |
|---|---|---|
755 | rwxr-xr-x | 所有者はフル、他は読み・実行のみ(スクリプト・ディレクトリの標準) |
644 | rw-r--r-- | 所有者は読み書き、他は読みのみ(通常ファイルの標準) |
700 | rwx------ | 所有者のみフルアクセス(秘密鍵など) |
600 | rw------- | 所有者のみ読み書き(設定ファイルなど) |
777 | rwxrwxrwx | 全員フルアクセス(通常は使わない) |
使用例(数値モード)
# スクリプトに実行権限を付与
chmod 755 deploy.sh
# 設定ファイルを所有者のみ読み書き可能に
chmod 600 ~/.ssh/id_rsa
# ディレクトリ以下を再帰的に変更
chmod -R 755 ./public/
シンボリックモード
u(user)、g(group)、o(other)、a(all)と +(追加)、-(削除)、=(設定)を組み合わせる。
# 実行権限を追加(所有者・グループ・その他すべてに)
chmod +x script.sh
# その他ユーザーの書き込み権限を削除
chmod o-w file.txt
# グループに読み・書きを設定(既存の権限は置き換え)
chmod g=rw shared.txt
# 所有者に実行、その他から書き込みを削除(複数同時指定)
chmod u+x,o-w file.sh
SSH 鍵ファイルのパーミッション
SSH が要求する標準的なパーミッション:
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/id_rsa # 秘密鍵
chmod 644 ~/.ssh/id_rsa.pub # 公開鍵
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/config
-R での再帰適用の注意
ディレクトリとファイルに同じ数値を適用すると、ファイルに実行権限が付くことがある。find と組み合わせて種別ごとに設定する方が安全。
# ディレクトリは 755、ファイルは 644 に分けて設定
find ./public -type d -exec chmod 755 {} +
find ./public -type f -exec chmod 644 {} +