Linuxでコマンドファイルに対してSGIDを設定します。SGIDが設定されたコマンドを使用すると、コマンドファイルのグループの権限が使用されます。
SGIDが設定されたコマンドファイルを検索する!
SGIDはあまり使用されない権限になっています。使用されているコマンドを探してみます。
$ sudo find / -perm -2000 -type f | xargs ls -ld ... -rwx--s--x. 1 root slocate 47128 Aug 13 2018 /usr/bin/locate -rwxr-sr-x. 1 root tty 21280 Jan 19 2021 /usr/bin/write -r-xr-sr-x. 1 root ssh_keys 455072 Apr 14 2021 /usr/libexec/openssh/ssh-keysign -rwx--s--x. 1 root utmp 13096 Aug 12 2018 /usr/libexec/utempter/utempter -rwx--s--x. 1 root lock 21512 Aug 12 2018 /usr/sbin/lockdev
locateは、ファイル検索のDBを参照するためにSGIDを使用しています。
$ sudo ls -l /var/lib/mlocate total 3140 -rw-r-----. 1 root slocate 3211571 Jan 31 00:00 mlocate.db [usradmin@vmsrhe05 ~]$ sudo ls -l /var/lib/mlocate
システム全体でユーザが共有する資源を使用したい場合に、SGIDを使用しますが、使用する機会は多くなさそうです。
SGIDをコマンドファイルに対して付与する!
SUIDは、以下のコマンドで付与できます。
$ sudo chmod g+s [コマンドファイル]
以下のコマンドでも同じようにSGIDを付与できます。
$ sudo chmod 2000 [コマンドファイル]
おわりに
SGIDはグループの権限を使用するため、アクセス可能なファイルが多くなりそうですが、SGIDが割り当てられたコマンドのグループと同じグループのファイルはほとんどなく、使用するケースは限られているようです。
関連記事
関連書籍(Amazon)