SGID(Set Group ID)とは、特殊なパーミッション(アクセス権)の一つで、実行可能ファイルおよびディレクトリに対して設定できます。
まず、実行可能ファイルに設定する場合からみてみましょう。
実行権限を持っているユーザーによって、SUIDの設定されたファイルが実行された場合、ファイルの所有者の権限で実行されました。
同様に、SGIDが設定されたファイルが実行された場合は、ファイルの所有グループの権限で実行されます。
考え方は同じなので、詳しくは「8 SUID」をご覧ください。
次に、ディレクトリにSGIDを設定する場合をみてみましょう。
ディレクトリに対してSGIDを設定すると、そのディレクトリ内に作成されたファイルやディレクトリの所有グループが、ディレクトリ自体の所有グループに設定されます。
ディレクトリに設定するSGIDは複数ユーザーで共同作業をする場合に便利です。
例えばプライマリグループが「G1」のユーザー「U1」と、プライマリグループが「G2」のユーザー「U2」がいるとします。
この2人のユーザーが共同作業用のディレクトリに、それぞれファイルを作成した場合、お互い、相手のファイルには書き込むことができません。ユーザー「U1」が作成したファイルに書き込めるのは所有者、つまり「U1」か、所有グループ、つまり「G1」に属するユーザーだけです。ユーザー「U2」はグループ「G1」には属していませんから、書き込めないわけです。
ここで共同作業用のディレクトリにSGIDを設定してみましょう。共同作業用のディレクトリの所有グループを「G3」とします。そしてユーザー「U1」とユーザー「U2」をグループ「G3」に所属させます。
この状態で、2人のユーザーがそれぞれファイルを作成すると、作成されたファイルの所有グループが「G3」となるので、お互い、相手のファイルに書き込むことができるようになります。
SGIDを設定するには、chmodコマンドで所有グループ「g」に対して権限「s」を追加します。
SGIDが設定されたファイルのパーミッションの数値表記は、3桁の数値表記に「2000」を加えたものになります。上の例の場合、/dirのパーミッションは「rwxr-xr-x」で「755」でしたが、SGIDを設定したことで「rwxr-sr-x」、数値表記は「2755」となります。
 |
 |
・それぞれのユーザーがファイルを作成するたびに、そのファイルの所有グループを「G3」に変更してもよいですが、SGIDはその手間を省いてくれます。
・ファイルを作成したときに設定されるデフォルトのパーミッションはumask値によって決まるので、必ず上図のようなパーミッションになるとは限りません。上の例ではユーザー「U1」と「U2」のumask値を「002」としています。umask値については「11 デフォルトのアクセス権」を参照してください。
|
|
|