パーミッション

ファイルアクセス権限の管理

基本パーミッション

-rwxr-xr-- 1 user group 1234 Jan 1 12:00 file

タイプ所有者グループその他

r (read)

  • • ファイル: 内容を読める
  • • ディレクトリ: 一覧を見れる
  • • 数値: 4

w (write)

  • • ファイル: 内容を変更できる
  • • ディレクトリ: ファイル作成/削除
  • • 数値: 2

x (execute)

  • • ファイル: 実行できる
  • • ディレクトリ: 中に入れる
  • • 数値: 1

パーミッション操作

1# 数値モード
2chmod 755 file # rwxr-xr-x
3chmod 644 file # rw-r--r--
4chmod 600 file # rw-------
5
6# シンボリックモード
7chmod u+x file # 所有者に実行権限追加
8chmod g-w file # グループから書き込み権限削除
9chmod o=r file # その他を読み取りのみに設定
10chmod a+r file # 全員に読み取り権限追加
11
12# 再帰的に変更
13chmod -R 755 directory
14
15# 所有者変更
16chown user:group file
17chown -R user:group directory
18
19# グループのみ変更
20chgrp group file

特殊パーミッション

setuid (4000)

実行時にファイル所有者の権限で実行。 例: /usr/bin/passwd(root権限で/etc/shadowを変更)

chmod u+s file # または chmod 4755 file

setgid (2000)

ファイル: グループ所有者の権限で実行
ディレクトリ: 作成ファイルがディレクトリのグループを継承

chmod g+s directory # または chmod 2755 directory

sticky bit (1000)

ディレクトリ内のファイルを所有者のみ削除可能に。 例: /tmp

chmod +t directory # または chmod 1777 directory

umask

umaskは新規作成ファイル/ディレクトリのデフォルトパーミッションを制御。 デフォルト権限から引き算される値。

umask 022

ファイル: 644 (666-022)
ディレクトリ: 755 (777-022)

umask 077

ファイル: 600 (666-077)
ディレクトリ: 700 (777-077)

1# 現在のumask確認
2umask
3
4# umask設定
5umask 022
6
7# 永続化は ~/.bashrc や /etc/profile に記載

ACL (Access Control Lists)

ACLは標準パーミッションより詳細なアクセス制御を提供。 特定のユーザーやグループに個別の権限を設定可能。

1# ACL確認
2getfacl file
3
4# ACL設定
5setfacl -m u:username:rw file # ユーザーに読み書き
6setfacl -m g:groupname:rx file # グループに読み取り+実行
7setfacl -m o::- file # その他のアクセス禁止
8
9# デフォルトACL(新規ファイルに継承)
10setfacl -d -m u:username:rw directory
11
12# ACL削除
13setfacl -x u:username file # 特定エントリ削除
14setfacl -b file # 全ACL削除
15
16# 再帰的に設定
17setfacl -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