Linuxでディレクトリに対してSGIDを設定して、配下に作成されるディレクトリやファイルのグループが継承されるようにします。
記事の目次
SGIDをディレクトリに対して付与するコマンドを確認する!
SUIDは、以下のコマンドで付与できます。
$ sudo chmod g+s [ディレクトリ]
以下のコマンドでも同じようにSGIDを付与できます。
$ sudo chmod 2000 [ディレクトリ]
SGIDを付与したディレクトリを作成する!
SGIDの動作を確認するため、SGIDを付与したディレクトリを作成します。
$ id uid=1000(usradmin) gid=1000(usradmin) groups=1000(usradmin),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 $ mkdir /tmp/test $ chmod 2000 /tmptest chmod: cannot access '/tmptest': No such file or directory $ chmod 2000 /tmp/test $ ls -ld /tmp/test d-----S---. 2 usradmin usradmin 6 Feb 1 06:55 /tmp/test
他のユーザでSGIDの設定されたディレクトリにファイルを作成する!
rootユーザでファイルを作成してみます。rootユーザでファイルを作成したのにもかかわらず、グループは「root」でなく「usradimin」になり、ディレクトリのグループが継承されます。
# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 # touch /tmp/test/sgidtest # ls -ld /tmp/test/sgidtest -rw-r--r--. 1 root usradmin 0 Feb 1 06:56 /tmp/test/sgidtest
SGIDが設定されたコマンドファイルを検索する!
SGIDが設定されたディレクトリを検索してみます。journalログに使用されています。
$ sudo find / -perm -2000 -type d | xargs ls -ld ... drwxr-sr-x. 3 root systemd-journal 60 Jan 30 19:42 /run/log/journal drwxr-s---+ 2 root systemd-journal 60 Jan 30 19:42 /run/log/journal/47755988a6524804831f1f1ae20426dc d-----S---. 2 usradmin usradmin 22 Feb 1 06:56 /tmp/test
おわりに
SGIDは、rootなど他のグループのユーザが、ディレクトリやファイルを作成する場合に、親ディレクトリやファイルのグループを継承したい場合に使用します。
関連記事
関連書籍(Amazon)