Linuxを使い始めた人,資格試験合格を目指す人を対象に,模擬試験形式でLinuxの基礎を解説します。

問題:lsコマンドによって,次のように情報が表示されたそれぞれのファイルやディレクトリに対して,正しい説明文を(A)~(F)の中から2つずつ選択しなさい。

1) -r-s--x--x 1 root root 21944 2月 12 2006 /usr/bin/passwd
2) drwxr-sr-x 2 root sales 4096 9月 7 13:38 /salesshare
3) drwxrwxrwt 22 root root 4096 9月 7 13:06 /tmp

(A) suidが設定されている
(B) スティッキ・ビットが設定されている
(C) sgidが設定されている
(D) 作成するファイルには,ディレクトリの所有グループが適用される
(E) ファイルの所有者だけがそのディレクトリにあるファイルを削除できる
(F) ファイルの所有者としてそのプログラムを実行する

ポイント:特殊なアクセス権として,「suid」「sgid」「スティッキ・ビット」があります。例題の回答がそれぞれの大きな特徴です。

キーワード:suid,sgid,スティッキ・ビット

 「rwx」で表せられるアクセス権のほかに,Linuxでは全く概念の異なる特殊なアクセス権が設定できます。それが,「suid」「sgid」「スティッキ・ビット」です。

suid

 「suid」はset user idの略で,コマンド・ファイルに設定できるアクセス権です。suidが設定されているコマンドは,各ファイルにアクセスする際に,そのコマンドの所有者のアクセス権限が参照されます。

 シャドウ・パスワードが有効になっているときには,一般ユーザーは/etc/shadowファイルに一切アクセスできません。ところが,passwdコマンドを使えばパスワードを変更できます。これは,passwdコマンドにsuidビットが設定されているためです。passwdコマンドの所有者は管理者(root)です。そのため,passwdコマンドを使えば,/etc/shadowに書き込めます。

 lsコマンドを使ってpasswdコマンドのアクセス権を確認してみましょう。

$ ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21――後略――

 この所有者に対する実行権限が「s」になっているのが,suidの指定です。

 catコマンドにsuidを設定すれば,一般ユーザーであってもすべてのファイル内容を見ることができます。設定方法は,chmodコマンドで「u+s」を指定すれば設定でき,「u-s」で解除できます。ただし,管理者権限で実行する必要があります。

# chmod u+s /bin/cat
# su - meister
$ cat /etc/shadow
(内容が表示される)
$ exit
# chmod u-s /bin/cat

 catコマンドにsuidを与えるとセキュリティを著しく弱めますので,必ず解除しておいてください。

 suidが設定されているファイルを検索するには,ファイルを検索できるfindコマンドを使います。「-perm」オプションで「-u+s」を指定します。

# find /usr/bin -perm -u+s

sgid

 sgidはset group idの略で,複数ユーザーで共有するディレクトリなどで利用されるアクセス権です。

 sgidが設定されているディレクトリにファイルを作成すると,そのディレクトリのグループがそのままそのファイルのグループとして適用されます。このため,あるグループに属する複数ユーザーでファイルを共有する場合,ファイル共有用のディレクトリにそのグループのアクセス権限を与えておけばよいでしょう。

 sgidの設定は,chmodコマンドでできます。「g+s」を指定すれば設定でき,「g-s」で解除できます(図6)。

図6●sgidの設定例
図6●sgidの設定例
[画像のクリックで拡大表示]

スティッキ・ビット

 複数ユーザーで共有するディレクトリでは,ファイルを作成するためにディレクトリの書き込み権が必要になります。ただし,この権限があれば,ファイルの削除もできます。そのファイルの所有者しか削除できないようにするには,スティッキ・ビットを設定します。chmodコマンドで「o+t」で設定,「o-t」で解除できます。

 さまざまなアプリケーションの一時的なファイル置き場として使用される/tmpディレクトリなどで使用されます。

特殊なアクセス権の8進表記

 特殊なアクセス権を含めて8進表記を行う場合,表記は4桁で行います。特殊なアクセス権は,上1桁に表し,suidは4,sgidは2,スティッキ・ビットは1として足し算します。suidを設定したファイルの検索は,「-u+s」の代わりに「4000」でもできます。

# find /usr/bin -perm -4000

類題

Q1 /homeにあるnikkeiという名前のディレクトリのアクセス権は「rwxrwx---」に,グループはediterに設定されています。editorに属するユーザーがnikkeiを共有ディレクトリとして利用する場合,適切な手段を選びなさい。

(A) chmod u+s /home/nikkei/
(B) chmod g+s /home/nikkei/
(C) chmod o+s /home/nikkei/
(D) chmod a-s /home/nikkei/

Q2 スティッキ・ビットが設定されているファイルを検索するときに適切な方法はどれですか?

(A) find / -perm -1000
(B) find / -perm -2000
(C) find / -perm -4000
(D) find / -perm -6000

【問題と類題の解答は次ページ】