SUID・SGID

SUID・SGIDとは

SUIDはSet User ID、SGIDはSet Group IDです。それぞれの詳細を説明します。SUIDとは、passwdコマンドを使うことにより、一般ユーザーは自分自身のパスワードを変更可能です。

シャドウパスワードを利用していない場合、パスワードの変更は「/etc/passwd」に保存されます。

一例です。「/etc/passwd」の所有者・アクセス権をls -lコマンドで確認してみます。

$ ls -l /etc/passwd
-rw-r–r– 1 root root 1504 Jan 14 16:12 /etc/passwd

このファイルの所有者はrootであり、root自身にしか書き込みできない状態になっています。この状況で何故passwdコマンドを一般ユーザーが実行した場合に、結果が「/etc/passwd」に保存されるのでしょうか。

whichコマンドでpasswdコマンドをで調べてみます。

$ ls -l ‘which passwd’
-rws–x–x 1 root root 3964 Mar 9 22:00 /usr/bin/passwd

実行結果をみてみると、所有者のアクセス権は「rws」になっています。

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

今回のpasswdコマンドの場合、このファイルの所有者であるrootの権限で実行されるため、「/etc/passwd」に書き込むことができます。

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

以下の例は指定したファイルにSUIDを設定します。

chmod u+s samplefile

SUIDと同様にグループのアクセス権が適用されるように設定することもできます。これがSGID(Set Group ID)です。SGIDが設定されると、グループのアクセス権の実行権が「s」になります。

数値で表現するには、3桁のアクセス権表記に2000を加えます。以下の例では指定したファイルにSGIDを設定しています。

chmod g+s samplefile

前の記事

sudo

次の記事

TCP WRAPPER