パーミッション
ファイルアクセス権限の管理
基本パーミッション
-rwxr-xr-- 1 user group 1234 Jan 1 12:00 file
タイプ所有者グループその他
r (read)
- • ファイル: 内容を読める
- • ディレクトリ: 一覧を見れる
- • 数値: 4
w (write)
- • ファイル: 内容を変更できる
- • ディレクトリ: ファイル作成/削除
- • 数値: 2
x (execute)
- • ファイル: 実行できる
- • ディレクトリ: 中に入れる
- • 数値: 1
パーミッション操作
1 # 数値モード 2 chmod 755 file # rwxr-xr-x 3 chmod 644 file # rw-r--r-- 4 chmod 600 file # rw------- 5 6 # シンボリックモード 7 chmod u+x file # 所有者に実行権限追加 8 chmod g-w file # グループから書き込み権限削除 9 chmod o=r file # その他を読み取りのみに設定 10 chmod a+r file # 全員に読み取り権限追加 11 12 # 再帰的に変更 13 chmod -R 755 directory 14 15 # 所有者変更 16 chown user:group file 17 chown -R user:group directory 18 19 # グループのみ変更 20 chgrp group file
特殊パーミッション
setuid (4000)
実行時にファイル所有者の権限で実行。 例: /usr/bin/passwd(root権限で/etc/shadowを変更)
chmod u+s file # または chmod 4755 filesetgid (2000)
ファイル: グループ所有者の権限で実行
ディレクトリ: 作成ファイルがディレクトリのグループを継承
chmod g+s directory # または chmod 2755 directorysticky bit (1000)
ディレクトリ内のファイルを所有者のみ削除可能に。 例: /tmp
chmod +t directory # または chmod 1777 directoryumask
umaskは新規作成ファイル/ディレクトリのデフォルトパーミッションを制御。 デフォルト権限から引き算される値。
umask 022
ファイル: 644 (666-022)
ディレクトリ: 755 (777-022)
umask 077
ファイル: 600 (666-077)
ディレクトリ: 700 (777-077)
1 # 現在のumask確認 2 umask 3 4 # umask設定 5 umask 022 6 7 # 永続化は ~/.bashrc や /etc/profile に記載
ACL (Access Control Lists)
ACLは標準パーミッションより詳細なアクセス制御を提供。 特定のユーザーやグループに個別の権限を設定可能。
1 # ACL確認 2 getfacl file 3 4 # ACL設定 5 setfacl -m u:username:rw file # ユーザーに読み書き 6 setfacl -m g:groupname:rx file # グループに読み取り+実行 7 setfacl -m o::- file # その他のアクセス禁止 8 9 # デフォルトACL(新規ファイルに継承) 10 setfacl -d -m u:username:rw directory 11 12 # ACL削除 13 setfacl -x u:username file # 特定エントリ削除 14 setfacl -b file # 全ACL削除 15 16 # 再帰的に設定 17 setfacl -R -m u:username:rx directory
SRE/インフラ観点
セキュリティベストプラクティス
- • 設定ファイル: 600 または 640
- • 秘密鍵: 600(グループ読み取り不可)
- • 公開ディレクトリ: sticky bit設定
- • setuid/setgidは最小限に
監査
- • setuid/setgidファイル検索:
find / -perm /6000 - • 書き込み可能ファイル:
find / -perm -o+w - • 所有者なしファイル:
find / -nouser -nogroup