|
|
LinuxOSの使いこなし術
|
LinuxOSを使いこなすクライアントOSとの違い絶対パスと相対パス"パスが通っている"とは?"/"と"."と".."の意味"."(ドット)ファイルについてワイルドカードと正規表現コマンドの強制終了コマンド操作の補完機能コマンド操作の履歴機能リダイレクトとパイプ属性とパーミッション〜その1属性とパーミッション〜その2アカウント情報ファイルの操作ランレベルについてシステムが起動しないときはハードディスクの増設アプリケーションの導入法 |
SUIDとSGIDとスティッキービット
UNIX
系
OS
では、通常使用される
例えば、 ユーザーアカウント のパスワードの変更に用いられる passwd コマンド を実行すると、変更されたパスワードの内容が "/etc/shadow" という テキスト ファイルに書き込まれることになります。 しかしこの"/etc/shadow"は、 セキュリティ の観点から、所有者 "root" 、所有グループ "root" で、パーミッションは "-r-------(400)" になっています。 つまりroot アカウント のみが書き込み可能で、その他のユーザーには読み取りすらできない、厳しいパーミッションが設定されているわけです。 ということは、passwdコマンドはrootアカウントから実行しなければならないことになりますが、実際には任意のユーザーアカウントで ログイン して、自分自身のパスワードを変更するのにpasswdコマンドを使うことができます。 そしてその実行結果は、きちんと"/etc/shadow"に書き込まれることになります。 こういう一見不可解なことを可能にしているのが、passwdコマンドに設定されている、 SUID(Set User ID) あるいは、 ユーザーIDビット と呼ばれる特殊なパーミッションです。 では、そのpasswdコマンドのパーミッションを見てみましょう。
赤 で表示している "s" の文字が、このコマンドにSUIDがセットされていることを表しています。 このパーミッションは、 「任意のユーザーがpasswdを実行する際、実際にはpasswdの所有者であるrootで実行される」 ということ意味します。 その結果、どのユーザーからpasswdを実行しても、passwdはrootアカウントが実行したとみなされ、"/etc/shadow"への書き込みが行われるわけです。 また、SUIDの他にもうひとつ、 「任意のユーザーがコマンドを実行する際、実際にはそのコマンドの所有グループで実行される」 |
||||||||
|
|
というパーミッションもあります。これは SGID(Set Group ID) あるいは グループIDビット と呼ばれ、 "-r-xr-sr-x" のように表記されます。 もうひとつの特殊なパーミッションとしては、ディレクトリに設定される スティッキービット と呼ばれるパーミッションがあります。 これは、文字形式で "drwxrwxrwt" と表記されますが、このパーミッションが設定されたディレクトリは、 「全てのユーザーが中にファイルを書き込むことが可能だが、所有者と書き込み許可されたグループ以外は削除できない。」 という振る舞いをします。
このスティッキービットは、主に
"/tmp/"
|
||||||||
SUIDとSGIDとスティッキービットの数字形式による表記方法
例えば、 "755" というパーミッションは、実際には先頭の1桁が省略されていて、厳密には "0755" と表記する必要があります。 実は、先頭の1桁目にはこのパートで説明した特殊なパーミッションを示す数字が入ります。 具体的には一桁目が、 ・ "4" の場合は "SUID" ・ "2" の場合は "SGID" ・ "1" の場合は "スティッキービット" が設定されていることを表します。これらが重複して設定されている場合は、通常のパーミッション部分と同じように合計した数字で表記されます。
数字形式による特殊なパーミッション表記の例 これらの特殊なパーミッションを自分で設定する機会はあまりないと思いますが、いずれの場合も適切に使用しなければ セキュリティ 上問題が起こる可能性が高いので、注意して設定してください。
|
|
|
| このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。 |
| ”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。 |