SUID(Set User ID)/SGID(Set Group ID)


Linuxサーバー管理者の技術を2日で学べる「初心者向けリナックスセミナー」
30日掛かって覚えるプロの技術を、たった2日間で学習できます。
リナックスマスター2日間集中セミナー【CentOS7.1版】
 (今すぐ↑をクリックしてください。)

passwdコマンドを使うことで、
一般ユーザー自分自身のパスワードを変更することができます。

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

/etc/passwdファイルの所有者とアクセス権を確認すると↓の通りです。
----------------------------------------------------
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1686 11月 25 21:11 /etc/passwd
----------------------------------------------------

ファイルの所有者はrootで、root自身しか書き込みできない権限になっています。
しかし、passwdコマンドを一般ユーザーが実行した場合、
その結果が/etc/passwdファイルに保存されます。

それは、passwdコマンドのアクセス権に理由があります。
----------------------------------------------------
$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 23420 8月 11 2010 /usr/bin/passwd
----------------------------------------------------
所有者のアクセス権は、「rws」となっており、実行権が「s」になっています。
これは、実行権を持っているユーザーによってプログラムが実行された場合、
ファイルの所有者の権限で実行されることを意味しています。

これを「SUID」(Set User ID)と言います。
passwdコマンドの場合、このファイルの所有者であるroot権限で実行されるため、
/etc/passwdファイルに書きこむことが可能になるのです。

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

SUIDを設定するには、下記のようにchmodコマンドを実行します。
----------------------------------------------------
# chmod u+s testfile
----------------------------------------------------

SUIDと同様に、グループのアクセス権が適用されるよう
設定することも可能です。これをSGID(Set Group ID)と言います。

SGIDが設定されると、グループのアクセス権の実行権が「s」になります。
数値で表現すると、3桁のアクセス権表記に2000を加えます。

SGIDを設定するには、下記のようにchmodコマンドを実行します。
----------------------------------------------------
# chmod g+s testfile
----------------------------------------------------

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

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

■関連項目
アクセス権を変更するコマンドはchmodコマンドになります。
chmodコマンド



■CentOS7.1サーバー構築マニュアルを無料プレゼント
 「CentOS7.1」のサーバー構築手順、「VMware Player」の
 ダウンロードとインストール手順をまとめたマニュアルを
 無料でプレゼントしています。


 詳しくは↓のページで説明していますので、今すぐクリックしてダウンロードしてください。
 無料マニュアルをダウンロードする  無料マニュアルをダウンロードする