【Linux特殊権限 備忘録】権限の継承(SetGID/SetUID)と削除制限(Sticky Bit)
ファイルサーバーに家族用のディレクトリとユーザーを作った時、新しく学んだので備忘録
解説で使うユーザー
1. user1 グループはuser1とgroupに所属
2. user2 グループはuser1とgroupに所属
SetGIDとは
ファイルまたはディレクトリを作成するときに所有者を継承する設定ができます。
SetGIDのあるディレクトリ内で権限を持つユーザーがディレクトリを作成する場合、所有グループが継承されるとともに、SetGIDフラグが継承されます。
特殊権限ビットは2、0b010です。
例えば、
drwxrwx— user1 group 4096 (date) user1
のSetGIDフラグが存在しないディレクトリのとき、
user1のディレクトリの中に、user2がディレクトリを作ると、
drwxrwx— user2 user2 4096 (date) testdir
(パスはuser1/testdir)
となってしまい、親フォルダのuser1がtestdirにアクセスできません。
ここで、
drwxrws— user1 group 4096 (date) user1
のSetGIDが付くと、
そのディレクトリの中に同じようにuser2がtestdirを作ると、
drwxrws— user2 group 4096 (date) testdir
となり、親ディレクトリを所有するuser1が、その下位のtestdirにも問題なくアクセスできるようになります。
ファイルサーバーなどの権限設定に用いられることが多いです。
SetUIDとは
ファイルまたはディレクトリを作成するときに、所有者を継承する設定ができます。
SetUIDのあるディレクトリ内で権限を持つユーザーがファイルまたはディレクトリを作成する場合、所有者が継承されます。
特殊権限ビットは4、0b100です。
大枠はSetGIDと一緒なのであとは他サイトを見たりAIと壁打ちしたりすること。
Sticky Bitとは
書き込み権限を持っているグループでも、ファイルまたはフォルダの所有者でないとファイルが削除できない制限を付加する特殊権限です。
特殊権限ビットは1、0b001です。
例えば、
-rw-rw—- user1 group 1024 (date) user1.txt
-rw-rw—- user2 group 1024 (date) user2.txt
のSticky Bitなしだと、user1もuser2も、ともに「両方のファイルが削除可能」ですが、
-rw-rw—T user1 group 1024 (date) user1.txt
-rw-rw—T user2 group 1024 (date) user2.txt
のSticky Bitありだと、user1はuser1.txtのみ、user2はuser2.txtのみ削除やファイルの名前変更・移動が可能です。
なお、書き込みは許されます。
特殊権限ビット未指定時の挙動
特殊権限を指定していない時は、暗黙で0として実行されます。
一括で変更した後にファイルだけ変更したいときの裏技
これはファイルが全て同じディレクトリの深さに固まっている場合にのみ使える技。
一括で変更したいディレクトリに移動します。
chmod -R g+s .で一斉に変更します。
そののち、
chmod g-s ./*/* (ワイルドカードは例)でファイルだけ指定します。この際Rがあるとミスった時の被害が拡大します。
また、0660、単純に660など指定することでもSetGIDビットを解除できます。



ディスカッション
コメント一覧
まだ、コメントがありません