このセクションでは自宅サーバーとしてLinuxを扱ううえで役に立つ基本操作基礎知識テクニックについて初心者/ビギナー向けに解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
LinuxOSの使いこなし術

LinuxOSを使いこなす

クライアントOSとの違い

絶対パスと相対パス

"パスが通っている"とは?

"/"と"."と".."の意味

"."(ドット)ファイルについて

ワイルドカードと正規表現

コマンドの強制終了

コマンド操作の補完機能

コマンド操作の履歴機能

リダイレクトとパイプ

属性とパーミッション〜その1

属性とパーミッション〜その2

アカウント情報ファイルの操作

ランレベルについて

システムが起動しないときは

ハードディスクの増設

アプリケーションの導入法

Ubuntu 10.04 LTS デスクトップ版のススメへようこそ

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コマンドのパーミッションを見てみましょう。

[root@web1 ~]# ls -l /usr/bin/passwdEnter
-r-s--x--x  1 root   root    17700  9月 16 2004 /usr/bin/passwd [root@web1 ~]#

で表示している "s" の文字が、このコマンドにSUIDがセットされていることを表しています。

このパーミッションは、

「任意のユーザーがpasswdを実行する際、実際にはpasswdの所有者であるrootで実行される」

ということ意味します。

その結果、どのユーザーからpasswdを実行しても、passwdはrootアカウントが実行したとみなされ、"/etc/shadow"への書き込みが行われるわけです。

また、SUIDの他にもうひとつ、

「任意のユーザーがコマンドを実行する際、実際にはそのコマンドの所有グループで実行される」

というパーミッションもあります。これは SGID(Set Group ID) あるいは グループIDビット と呼ばれ、 "-r-xr-sr-x" のように表記されます。

もうひとつの特殊なパーミッションとしては、ディレクトリに設定される スティッキービット と呼ばれるパーミッションがあります。

これは、文字形式で "drwxrwxrwt" と表記されますが、このパーミッションが設定されたディレクトリは、

「全てのユーザーが中にファイルを書き込むことが可能だが、所有者と書き込み許可されたグループ以外は削除できない。」

という振る舞いをします。

このスティッキービットは、主に "/tmp/" /tmpパーティションについて(WBEL3) /tmpパーティションについて(CentOS3) /tmpパーティションについて(WBEL4) /tmpパーティションについて(CentOS4) /tmpパーティションについて(CentOS5) など、様々なユーザーが共用するディレクトリに設定されます。

このページの先頭へ↑

SUIDとSGIDとスティッキービットの数字形式による表記方法

数字形式よる一般的なパーミッション表記について では、 パーミッション を3桁の数字で表記する方法を説明しましたが、厳密にいうと4桁で表記しなければなりません。

例えば、 "755" というパーミッションは、実際には先頭の1桁が省略されていて、厳密には "0755" と表記する必要があります。

実は、先頭の1桁目にはこのパートで説明した特殊なパーミッションを示す数字が入ります。

具体的には一桁目が、

"4" の場合は "SUID"

"2" の場合は "SGID"

"1" の場合は "スティッキービット"

が設定されていることを表します。これらが重複して設定されている場合は、通常のパーミッション部分と同じように合計した数字で表記されます。

数字形式による特殊なパーミッション表記の例
数字形式による特殊なパーミッション表記の例

これらの特殊なパーミッションを自分で設定する機会はあまりないと思いますが、いずれの場合も適切に使用しなければ セキュリティ 上問題が起こる可能性が高いので、注意して設定してください。

NEC「得選街」
このサイトに対するご意見、ご要望、苦情、泣き言、献上品、資金援助などがございましたら こちら からお寄せください(お返事できなかったらごめんなさい)。もちろん リンクフリー です。趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。また、本サイトの更新情報をメールで知らせてほしい方は ここ からご登録ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System