パーミッションrwsやrwtの「s」や「t」は何?

パーミッションrwsやrwtの「s」や「t」は何?

https://lpic-master.com/suid-sgid-stickybit

パーミッションrwsの「s」はSUID、SGID

パーミッション「rws」はpasswdコマンド(パスワード変更コマンド)を ls で調べると見ることができます。

$ which passwd #passwdコマンドの場所(path)を調べる
/usr/bin/passwd

$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root /usr/bin/passwd

passwdコマンドは所有者がrootで、所有者の実行権が「s」になっています。
これは他のユーザーが実行した場合に、ファイル所有者の権限で実行されるという意味です。

つまり一般ユーザーがpasswdコマンドを実行すると、root権限で実行されます。
だからこそ、実行時に /etc/passwd に書き込みができるという仕組みです。
この仕組みを SUID といいます。

SUIDの設定は以下のようにします。

chmod u+s file
もしくは
chmod 4755 file # 3桁のパーミッションに 4000 を加える

ls -l file
-rwsr-xr-x. file

SUIDと同じように実行時にグループの権限が適用されるようにすることもできます。
SGIDと言います。

chmod g+s file
もしくは
chmod 2755 file # 3桁のパーミッションに 2000 を加える

ls -l file
-rwxr-sr-x. file

SGIDをディレクトリに設定しておくと、その配下で作成されたファイルはディレクトリと同じグループになるので、複数ユーザーで共有するディレクトリにSGIDを設定しておくと便利に使えます。

コメント