読者です 読者をやめる 読者になる 読者になる

破棄されたブログ

このブログは破棄されました。

setgid について確認

確認したいこと

  • パーミッション 2775 のディレクトリがあるとする
  • このディレクトリの所有グループに属さないユーザが、ディレクトリ内でディレクトリ作成等の操作ができるかどうか
  • setgid ビットのたったディレクトリでディレクトリ作成した際、作成されたディレクトリのグループはどうなるか

希望

  • setgid ビットがたったディレクトリにおいても、ディレクトリの所有グループに属すユーザのみが、ディレクトリの操作ができる

懸念

  • setgid の効果で、プロセスの実行グループがディレクトリの所有グループに変更され、グループのパーミッションが適用されてしまうのではないか
    • この場合、ユーザはディレクトリ作成・ファイルの作成などが可能になってしまう

結論

  • setgid ビットがたったディレクトリおいても、ディレクトリの所有グループに属さないユーザには、ディレクトリのグループのパーミッションは適用されない

確認

環境

ユーザの作成

ユーザ名 grpa grpb
usra ×
usrb
useradd usra
useradd usrb
groupadd grpa
groupadd grpb
usermod -a -G grpa usra
usermod -a -G grpa,grpb usrb

ディレクトリの作成

mkdir grpb
chmod 2775 grpb
chgrp grpb grpb
$ ls -la grpb
drwsrwsr-x  3 root grpb 4096 Jul 27 02:13 .

以下の通り、ディレクトリが作成された

ディレクトリの所有グループ grpb に属すユーザ usrb の操作

sudo su usrb
mkdir hoge # mkdir -p しない
cd hoge
mkdir fuga
cd ../
$ ls -lR
.:
total 4
drwxrwsr-x 3 usrb grpb 4096 Jul 27 02:13 hoge

./hoge:
total 4
drwxrwsr-x 2 usrb grpb 4096 Jul 27 02:13 fuga

./hoge/fuga:
total 0

以下の通り、ディレクトリが作成された。

ディレクトリの所有グループ grpb に属さないユーザ usra の操作

$ sudo su usra
$ mkdir foo
mkdir: cannot create directory 'foo': Permission denied

grpb に属さないユーザのディレクトリ作成は拒否された。

雑感

この確認は Docker で行われた。 Docker クソ便利である。

広告を非表示にする