Linuxアクセス制御
chmod
gpasswd
ユーザーの所属するグループ(group)の情報を管理
code:sh
gpasswd -a taki android-sdk
setgid
setuid
ディレクトリにsetgidビットを設定する
ディレクトリ foo に対しsetgid ビットの設定を行います。setgid ビットがセットされるとグループの"x"だった部分が"s"に変化します。 次にコマンド touch で fileB を作成します。 ディレクトリのグループ hironobu がファイルに継承されて fileB の所有者は root グループが hironobu になります。
アクセス制御
拡張ACL
特定のユーザーに対して、アクセス権限を追加できる
setfacl
aclを設定するコマンド
-m --modify=設定 、拡張ACLを設定する
user:ユーザー:許可内容
-R 再帰的に設定
-d デフォルトACLを設定
デフォルトACLを設定すると、ACLを親ディレクトリから継承してディレクトリ内のファイル全てにACL設定を反映できる
code:sh
setfacl -m u:penguin:r test1.txt
(test1.txtに対し、ユーザー「penguin」に「r」の許可を与える)
SFTPのユーザーのプライマリグループをApacheユーザーグループに変更する
SUID
例えば、passwdコマンドなどは所有者がrootになっておりSUIDが指定されている。この場合どのユーザがpasswdコマンドを実行しても必ずrootユーザが実行した状態となる。
スティッキービット
他ユーザー削除不可
特殊なファイルアクセス権 (setuid、setgid、スティッキビット)
実行可能ファイルと公共ディレクトリには、3 種類の特殊なアクセス権を設定できます。これらのアクセス権を設定すると、その実行可能ファイルを実行するユーザーは、そのファイルの所有者 (またはグループ) のユーザー ID を持つことができます。
特殊なアクセス権はセキュリティ上の問題を引き起こすため、特殊なアクセス権を設定するときは十分な注意が必要です。たとえば、ユーザーはユーザー ID が root に設定されているプログラムを実行することにより、スーパーユーザーのアクセス権を取得できます。また、すべてのユーザーは、所有するファイルに対して特殊なアクセス権を設定できるので、これもセキュリティ上の問題の原因となります。
setuid や setgid アクセス権を使用して、不正にスーパーユーザー権限が取得されていないかどうか絶えずシステムを監視しなければなりません。これらのアクセス権を使用しているすべてのプログラムを、ファイルシステム内で検索し、そのリストを出力する方法については、「setuid アクセス権が設定されているファイルを検索する方法」を参照してください。この種のプログラムの所有権を root や bin 以外のユーザーに与えているものが出力中にあれば、そのプログラムはセキュリティに違反している可能性があります。