Linuxでコマンドファイルに対してSGIDを設定する!(chmod g+s)

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)