ファイルには、絶対モードまたは記号モードで特殊アクセス権を設定できます。絶対モードでは、3 つ 1 組のアクセス権の左端に新しい 8 進数値を追加して、特殊アクセス権を設定します。表 51-7 に、ファイルに特殊アクセス権を設定する 8 進数値を示します。
表 51-7 絶対モードによる特殊アクセス権の設定
8 進数値 |
特殊アクセス権の設定 |
---|---|
1 |
スティッキビット |
2 |
setguid |
4 |
setuid |
記号モードで特殊アクセス権を変更するための記号については、表 51-6 を参照してください。
ファイルまたはディレクトリの所有者でない場合は、スーパーユーザーになります。
現在の所有者またはスーパーユーザーだけが、chmod コマンドを使用してファイルまたはディレクトリの所有者を変更できます。
chmod コマンドを使用して特殊アクセス権を絶対モードで変更します。
$ chmod nnnn filename
nnnn |
ファイルまたはディレクトリのアクセス権を変更する 8 進数値。左端の 8 進数値で、ファイルの特殊アクセス権を設定する。特殊アクセス権に有効な 8 進数値のリストについては、表 51-7 を参照。 |
filename |
ファイルまたはディレクトリ |
ファイルのアクセス権が変更されていることを確認します。
$ 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
find コマンドを使用して setuid アクセス権が設定されているファイルを検索します。
# find directory -user root -perm -4000 -exec ls -ldb {}¥; >/tmp/filename
結果を /tmp/filename に出力する。
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 ディレクトリの外へ移動してください。