LinuCレベル1 102試験の例題と解説

1.10.1セキュリティ管理業務の実施

今回は、LinuC 102試験の試験範囲から「1.10.1 セキュリティ管理業務の実施」についての例題を解いてみます。
SUIDが設定されているファイルについて確認しておきましょう。

Linucレベル1 102試験 出題範囲


例題

全ファイルシステムからSUIDが設定されているファイルやディレクトリをすべて探すコマンドで正しいものを2つ選択してください。

  1. find / -perm -4000
  2. find / -perm -u+s
  3. find / -perm u+s
  4. find / -perm -2000

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「1. find / -perm -4000」と「2. find / -perm -u+s」です。

find はファイルやディレクトリを検索するコマンドです。
選択肢に共通している「find / ~」は、検索パス「/」配下つまり「全ファイルシステムから検索する」という意味になります。

findコマンドの書式は以下の通りです。

find [オプション] [検索パス] [検索式]

パーミッションのモードを指定して検索するためには、[検索式]の部分に「-perm モード」を指定します。

パーミッションのモードの指定には以下のような方法があります。

====
[ -perm 0644 ] … パーミッションが0644に一致するファイル
[ -perm -444 ] … パーミッションが444を含むファイル
[ -perm /444 ] … パーミッションが444のいずれか1つでも含むファイル

※444の部分は「a+r」のように指定することもできます。
====

SUIDとは、「どのユーザが実行しても指定されたユーザで実行されるようにする」特殊なパーミッション属性の一つです。
※ただし、ディレクトリにSUIDを設定しても無効になります。

例えば、passwdコマンドの場合、一般ユーザが自分でパスワードを変更した際に、/etc/passwdファイルに設定が保存されます。
しかし、/etc/passwd ファイルの権限は以下のようにroot権限のみが書き込めるようになっています。

$ ls -l /etc/passwd
-rw-r--r--. 1 root root 1027 11月 13 14:57 /etc/passwd

root権限しか書き込み権がないにもかかわらず、一般ユーザがパスワードを変更できるのは、passwdコマンドにSUIDが設定されているためです。

$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832  6月 10  2014 /usr/bin/passwd

所有者のアクセス権を確認すると、実行権が[s]と設定されています。この設定がSUIDになります。
SUIDが設定されていると、実行権を持っているユーザによってプログラムが実行された場合には、ファイルの所有者の権限で実行されることを意味します。
そのため、passwdコマンドが実行された場合、「/usr/bin/passwd」のファイル所有者であるroot権限で実行されます。
これにより、root権限しか書き込み権のない「/etc/passwd」にも設定を書き込むことができるようになっています。

このように、所有者がrootユーザのプログラムにSUIDを設定すると、一般ユーザが実行した場合でもroot権限で動作させることができます。

例題の選択肢を解説します。

1.find / -perm -4000
正解です。
SUIDを利用する場合、数値では3桁のアクセス権表記に4000を加えます。
そのため、SUIDが設定されているファイルを探す際は、パーミッションのモードに「-4000」を指定することで検索できます。

2.find / -perm -u+s
正解です。
SUIDは所有者の実行権が[s]に設定されいるパーミッションですので、[-u+s]を指定することでSUIDが設定されているファイルを検索できます。

3.find / -perm u+s
誤っています。
この選択肢の場合、ファイルのアクセス権がSUIDのみのファイルしか検索できません。

例えば、アクセス権が以下のようなファイルがある場合、カレントディレクトリ配下を検索すると以下のような結果になります。

# ls -l
-rwsr-xr-x. 1 root     root        27832  6月 10  2014 passwd
---S------. 1 root     root            0 11月 14 10:00 test.sh

# find ./ -perm u+s
./test.sh

# find ./ -perm -u+s
./test.sh
./passwd

このように、[u+s]の場合、アクセス権が完全に一致するものしか検索できないため、「SUIDが設定されているファイルやディレクトリをすべて探す」ことができません。
よって不正解となります。

4.find / -perm -2000
誤っています。
パーミッションのモードに[-2000]を指定した場合は、SGIDが設定されているファイルをすべて探すコマンドになります。

passwdコマンドのようにSUIDを設定していると、一般ユーザでもroot権限で動作できるようになります。しかし、不用意にSUIDを設定してしまうと、rootユーザしか許可されていない操作を一般ユーザが行ってしまう可能性があります。
そのため、SUIDを設定するファイルは最小限にし、不用意にSUIDが設定されていないか、定期的に確認するようにしましょう。


例題作成者

株式会社デージーネット OSS研究室 橋本 知里

ページトップへ