SUID、SGIDとは【Linux用語集】

SUID、SGIDとは【Linux用語集】

SUIDとは

SUIDとは「Set User ID」の略で、誰がそのファイルを実行しても、セットされたユーザで実行されます。

補足

パスワードコマンドを使うことにより、一般ユーザーは自分自身のパスワードを変更できますシャドウパスワードを利用していない場合は、パスワードの変更は/etc/passwdファイルによって保存されます。/etc/passwdファイルの所有者とアクセス権は次のようになっています。

このファイルの所有者はrootであり、root自身にしか書き込みができないことになります。それではなぜ、 passwd コマンドを一般ユーザーが実行した場合に、その結果が/etc/passwdファイルに保存されるのでしょうか。パスワードコマンドを調べてみましょう。

これを見ると,所有者のアクセス権は「rws」となっており、実行権が「s」になっています。これは、 実行権を持っているユーザーによってプログラムが実行された場合には、ファイルの所有者の権限で実行されることを意味します。これをSUID(ユーザー ID) と言います。

パスワードコマンドの場合、このファイルの所有者である Root の権限で実行されるため、/etc/passwdファイルに書き込むことができるわけです。

SUIDを使った場合、所有者の実行権欄が「s」になります。数値で表現する場合は3桁のアクセス権表記に4000を加えます。/usr/bin/passwdの場合、「4711」と表現できます。

次の例では指定したファイルに suid を設定しています。

$ chmod u+s samplefile または $ chmod 4711 samplefile

SGIDとは

 suid と同様にグループのアクセス権が適用されるように設定することもできますこれが sgid です sgid が設定されると、グループのアクセス権の実行権が「s」になります。数値で表現するには3桁のアクセス権表記に2000を加えます次の例では指定したファイルに sgid を設定しています。

$ chmod g+s samplefile または $ chmod 2711 samplefile

ディレクトリに対して SGID を設定するとそのディレクトリー内に作成されたファイルやディレクトリの所有グループにはディレクトリ自体の所有グループが適用されます。

つまり誰かがファイルを作成しようと、ファイルの所有者グループは同じになります。複数ユーザー で共有するディレクトリに設定すると便利です。