当記事は、Linuxにおける特殊なアクセス権の考え方と設定方法についてご紹介します。
特殊なアクセス権
アクセス権には基本となる設定の他、「SUID」「SGID」「スティッキービット」といった特殊用途に利用できるアクセス権が用意されています。
SUID(Set User ID)
通常、プログラムを実行すると、そのプロセスはプログラムを実行したユーザーの権限で実行されます。
しかし、「SUID」が設定された実行ファイルでは、誰が実行したかに関わらず、「その実行ファイルの所有者」の権限でそのプロセスが実行されます。
「SUID」属性は実行可能ファイルにのみ指定することができ、対象ファイルの「所有者の実行アクセス権」の欄に「s」と表示されます。
例えば、パスワードの設定を行う「passwd」コマンドの場合、所有者(root)の実行権にSUIDが設定されており、rootユーザーの権限で実行されます。
SGID(Set Group ID)
「SGID」も、実行ファイルやディレクトリに設定される属性ですが、設定対象によって動作が異なります。
ファイルに設定した場合
「SGID」を実行ファイルに設定すると、プロセスの所有グループが、実行したユーザーのグループではなく、実行ファイルの所有グループの権限で実行されるようになります。
ディレクトリに設定した場合
「SGID」をディレクトリに設定した場合は、「SGID」が設定されたディレクトリ内に新規作成したファイルの所有グループが、そのディレクトリの所有グループと同じに設定されます。 つまり、誰がファイルを作成しようと、所有グループがすべて対象ディレクトリと同じものになります。
「SGID」が設定されている場合、対象ファイル(ディレクトリ)の「所有グループの実行アクセス権」の欄に「s」と表示されます。
ただし、このファイル(ディレクトリ)にグループの実行権がない場合、「グループの実行アクセス権」の欄には「S」(大文字)が表示されます。
<図4 SGIDがセットされたファイルやディレクトリの例.png>
スティッキービット(Sticky)
「スティッキービット」は、「所有者とrootユーザーのみがファイルやディレクトリの削除を行える」という属性です。 「スティッキービット」をディレクトリに設定すると、ファイルの所有者とrootユーザー以外は、「ファイルの削除」と「ファイル名の変更」ができなくなります。
例えば、「/tmp」ディレクトリは誰もがファイルの読み書きができるようになっていますが、自分の使っているファイルが他のユーザーに削除されてしまっては困ります。 そのようなときに、スティッキービットを設定しておけば、トラブルを防ぐことができます。
スティッキービットが設定されている場合、「その他のユーザーの実行アクセス権」が「t」になります。
ただし、このファイル(ディレクトリ)にその他のユーザーの実行権がない場合は、「その他のユーザーの実行アクセス権」の欄が「T」(大文字)になります。
なお、自分以外のユーザーが作成したファイルの中身を変更することは可能ですが、該当ファイルのアクセス権に「書き込み」権限が付与されていることが前提となります。
いかがでしたでしょうか。
ぜひお勉強の際にお役立て下さい。