Go to main content

Oracle® Solaris 11.4 でのユーザーとプロセスのセキュリティー保護

印刷ビューの終了

更新: 2018 年 8 月
 
 

プログラムが必要とする特権を判断する方法

このデバッグ手順は、コマンドまたはプロセスが失敗した場合に使用します。最初の特権失敗を検出して修正したあとで、ppriv -eD command コマンドを再度実行し、追加の特権要件を見つける必要がある場合があります。

  1. 失敗したコマンドを ppriv デバイスコマンドの引数として入力します。
    $ ppriv -eD touch /etc/acct/yearly
    
    touch[5245]: missing privilege "file_dac_write"
         (euid = 130, syscall = 224) needed at zfs_zaccess+0x258
    touch: cannot create /etc/acct/yearly: Permission denied 
  2. デバッグ出力の syscall 番号を使用して、どのシステム呼び出しが失敗したかを特定します。

    /etc/name_to_sysnum ファイルで syscall 番号の名前を見つけます。

    $ grep 224 /etc/name_to_sysnum
    
    creat64                 224

    この例ではcreat64() 呼び出しが失敗しています。正常に完了するには、/etc/acct/yearly ディレクトリ内にファイルを作成できる権利がプロセスに割り当てられている必要があります。

使用例 80  特権の使用を検査するための truss コマンドの使用

truss コマンドは、通常のシェルで特権の使用をデバッグすることができます。たとえば、次のコマンドは、失敗した touch プロセスをデバッグします。

$ truss -t creat touch /etc/acct/yearly

creat64("/etc/acct/yearly", 0666)            
                       Err#13 EACCES [file_dac_write
]
touch: /etc/acct/yearly cannot create

拡張された /proc インタフェースで、truss 出力のエラーコードの後に欠如している file_dac_write 特権がレポートされます。

使用例 81  プロファイルシェルで特権の使用を検査するための ppriv コマンドの使用

次の例で、jdoe ユーザーは、役割 objadminを引き受けることができます。objadmin 役割には、Object Access Management 権利プロファイルが含まれます。この権利プロファイルによって、objadmin 役割は objadmin が所有しないファイルに関するアクセス権を変更することができます。

次の例で、jdoe は、useful.script ファイルに関するアクセス権を変更することができません。

jdoe$ ls -l useful.script

-rw-r--r--  1 aloe  staff  2303 Apr 10 10:10 useful.script
jdoe$ 
chown objadmin useful.script

chown: useful.script: Not owner
jdoe$ 
ppriv -eD chown objadmin useful.script

chown[11444]: missing privilege "file_chown" 
            (euid = 130, syscall = 16) needed at zfs_zaccess+0x258
chown: useful.script: Not owner

jdoeobjadmin 役割を引き受けると、ファイルに関するアクセス権が変更されます。

jdoe$ su - objadmin
Password: xxxxxxxx

$ ls -l useful.script
-rw-r--r--  1 aloe  staff  2303 Apr 10 10:10 useful.script

$ chown objadmin useful.script
$ ls -l useful.script
-rw-r--r--  1 objadmin  staff  2303 Apr 10 10:10 useful.script
$ chgrp admin useful.script

$ ls -l objadmin.script
-rw-r--r--  1 objadmin  admin  2303 Apr 10 10:11 useful.script
使用例 82  root ユーザーが所有するファイルの変更

この例は、特権エスカレーションに対する保護を示しています。説明については、特権エスカレーションとカーネル特権を参照してください。ファイルは、root ユーザーが所有します。権限の弱い objadmin 役割ではファイルの所有を変更するためにはすべての特権が必要なので、処理は失敗します。

jdoe$ su - objadmin
Password: xxxxxxxx

$ cd /etc; ls -l system
-rw-r--r--  1 root  sys   1883 Oct 10 10:20 system

$ chown objadmin system
chown: system: Not owner
$ ppriv -eD chown objadmin system
chown[11481]: missing privilege "ALL" 
     (euid = 101, syscall = 16) needed at zfs_zaccess+0x258
chown: system: Not owner