Solaris のシステム管理

特殊アクセス権の設定と検索

ファイルには、絶対モードまたは記号モードで特殊アクセス権を設定できます。絶対モードでは、3 つ 1 組のアクセス権の左端に新しい 8 進数値を追加して、特殊アクセス権を設定します。表 51-7 に、ファイルに特殊アクセス権を設定する 8 進数値を示します。

表 51-7 絶対モードによる特殊アクセス権の設定

8 進数値 

特殊アクセス権の設定 

1

スティッキビット 

2

setguid

4

setuid

記号モードで特殊アクセス権を変更するための記号については、表 51-6 を参照してください。

特殊アクセス権を絶対モードで設定する方法

  1. ファイルまたはディレクトリの所有者でない場合は、スーパーユーザーになります。

    現在の所有者またはスーパーユーザーだけが、chmod コマンドを使用してファイルまたはディレクトリの所有者を変更できます。

  2. chmod コマンドを使用して特殊アクセス権を絶対モードで変更します。

       $ chmod nnnn filename
    

    nnnn

    ファイルまたはディレクトリのアクセス権を変更する 8 進数値。左端の 8 進数値で、ファイルの特殊アクセス権を設定する。特殊アクセス権に有効な 8 進数値のリストについては、表 51-7 を参照。

    filename

    ファイルまたはディレクトリ 

  3. ファイルのアクセス権が変更されていることを確認します。

       $ ls -l filename
    

例 - 特殊アクセス権を絶対モードで設定する

次の例では、dbprog ファイルに setuid アクセス権を設定します。

$ chmod 4555 dbprog
$ ls -l dbprog
-r-sr-xr-x   1 db     staff        12095 May  6 09:29 dbprog

次の例では、dbprog2 ファイルに setgid アクセス権を設定します。

$ chmod 2551 dbprog2
$ ls -l dbprog2
-r-xr-s--x   1 db     staff       24576 May  6 09:30 dbprog2

次の例では、pubdir ディレクトリにスティッキビットアクセス権を設定します。

$ chmod 1777 pubdir

setuid アクセス権が設定されているファイルを検索する方法

  1. スーパーユーザーになります。

  2. find コマンドを使用して setuid アクセス権が設定されているファイルを検索します。

       # find directory -user root -perm -4000 -exec ls -ldb {}¥; >/tmp/filename
    
    find directory
    

    指定したディレクトリから始めて、マウントされているすべてのパスをチェックする。ディレクトリとしてルート (/)、sysbin、または mail を指定できる

    -user root

    root が所有するファイルのみを表示する 

    -perm -4000

    アクセス権が 4000 に設定されているファイルのみを表示する 

    -exec ls -ldb

    find コマンドの出力を ls -ldb 形式で表示する

    >/tmp/filename

    結果がこのファイルに書き込まれる 

  3. 結果を /tmp/filename に出力する。

    setuid については、setuid アクセス権」を参照してください。

例 - setuid アクセス権が設定されているファイルを検索する

# find / -user root -perm -4000 -exec ls -ldb { }¥; > /tmp/ckprm 
	# cat /tmp/ckprm 
	-r-sr-xr-x 1 root bin 38836 Aug 10 16:16 /usr/bin/at
	-r-sr-xr-x 1 root bin 19812 Aug 10 16:16 /usr/bin/crontab
	---s--x--x 1 root sys 46040 Aug 10 15:18 /usr/bin/ct
	-r-sr-xr-x 1 root sys 12092 Aug 11 01:29 /usr/lib/mv_dir
	-r-sr-sr-x 1 root bin 33208 Aug 10 15:55 /usr/lib/lpadmin
	-r-sr-sr-x 1 root bin 38696 Aug 10 15:55 /usr/lib/lpsched
	---s--x--- 1 root rar 45376 Aug 18 15:11 /usr/rar/bin/sh
	-r-sr-xr-x 1 root bin 12524 Aug 11 01:27 /usr/bin/df
	-rwsr-xr-x 1 root sys 21780 Aug 11 01:27 /usr/bin/newgrp
	-r-sr-sr-x 1 root sys 23000 Aug 11 01:27 /usr/bin/passwd
	-r-sr-xr-x 1 root sys 23824 Aug 11 01:27 /usr/bin/su
	#

アクセス権のないユーザー (rar) が /usr/bin/sh の個人用コピーを作成し、setuid としてのアクセス権を root に設定しています。これは、rar/usr/rar/bin/sh を実行して特権付きユーザーになれることを意味します。この出力を参考のために保存したい場合は、ファイルを /tmp ディレクトリの外へ移動してください。