権利が評価されず正しく適用されない原因には、さまざまな要素の影響があります。この手順は、割り当てられている権利がユーザー、役割、プロセスに対して使用できない原因のデバッグを支援します。いくつかのステップは 割り当てられた権利の検索順序に基づいています。
始める前に
root 役割になる必要があります。詳細は、割り当てられている管理権利の使用を参照してください。
# svccfg -s name-service/switch svc:/system/name-service/switch> listprop config config application config/value_authorization astring solaris.smf.value.name-service.switch config/default astring files ldap config/host astring "files dns mdns ldap" config/netgroup astring ldap config/printer astring "user files"
この出力では、明示的に示されていないサービスはすべて、デフォルトの値 files ldap を継承します。そのため、passwd とその関連属性データベース user_attr、auth_attr、および prof_attr は、まずファイル内で検索され、次に LDAP 内で検索されます。
nscd デーモンには長い有効期間を設定することができます。デーモンを再起動して、現在のデータでネームサービスを更新します。
# svcadm restart name-service/cache
すべての属性についてコマンドを 1 回実行します。たとえば次のコマンドは、割り当てられている権利と、その割り当てがユーザー jdoe に対して行われた場所を示します。出力がない場合、jdoe がデフォルトを使用していることを示します。
$ userattr -v access_times jdoe $ userattr -v access_tz jdoe $ userattr -v annotation jdoe $ userattr -v auth_profiles jdoe $ userattr -v defaultpriv jdoe $ userattr -v limitpriv jdoe $ userattr -v idlecmd jdoe $ userattr -v idletime jdoe $ userattr -v lock_after_retries jdoe $ userattr -v pam_policy jdoe $ userattr -v unlock_after jdoe $ userattr -v auths jdoe Output indicates authorizations from rights profiles Basic Solaris User :solaris.mail.mailq,solaris.network.autoconf.read, solaris.admin.wusb.read Console User :solaris.system.shutdown,solaris.device.cdrw, solaris.device.mount.removable,solaris.smf.manage.vbiosd,solaris.smf.value.vbiosd $ userattr -v audit_flags jdoe user_attr: fw:no Output indicates jdoe is individually assigned audit flags $ userattr -v profiles jdoe user_attr: Audit Review,Stop Output indicates two assigned rights profiles $ userattr roles jdoe user_attr : cryptomgt,infosec Output indicates two assigned roles
この出力は、jdoe に監査フラグ、2 つの権利プロファイル、および 2 つの役割が直接割り当てられていることを示しています。割り当てられている承認は、account-policy SMF ステンシルまたは /etc ディレクトリ内のファイルのいずれかに設定されているデフォルトの権利プロファイルからのものです。システムのデフォルトの権利プロファイルのソースを判別するには、新機能 – account-policy サービスの有効化を参照してください。
jdoe には監査フラグが直接割り当てられるため、権利プロファイルの監査フラグ値は使用されません。
権利プロファイルは、Audit Review 権利プロファイルから始まり、次に Stop プロファイルという順序で評価されます。
そのほかのすべての権利は、役割 cryptomgt と infosec で jdoe に割り当てられています。これらの権利を表示するには、jdoe が各役割を引き受けてから、権利を一覧表示する必要があります。
権利がユーザーに直接割り当てられていない場合は、次の確認作業に進みます。
承認はユーザーに対して累積されるため、承認の割り当てのソースは重要ではありません。ただし、スペルが正しくない承認は暗黙のうちに失敗します。
たとえば、成功するには euid=0 ではなく uid=0 が必要なコマンドもあります。コマンドのマニュアルページを参照し、コマンドとそのオプションに承認が必要であるかどうかをか確認してください。
リスト内のもっとも古い権利プロファイルに含まれる属性の値は、カーネル内の値です。この値が正しくない場合は、その権利プロファイル内の値を変更するか、またはプロファイルを正しい順序で再割り当てします。割り当てられている権利を並べ替える方法を参照してください。
特権コマンドの場合、defaultpriv または limitpriv キーワードから特権が削除されていないことを確認します。
認証権利プロファイルで実行したものと同じ検査を行います。
権利が 1 つの役割に割り当てられている場合、ユーザーはその役割を引き受けて権利を取得する必要があります。
プロファイルが存在する場合は、そのプロファイルを使用します。それを、認証権利プロファイルまたは通常の権利プロファイルとしてユーザーに割り当てます。この承認が成功する必要があるコマンドを含むそのほかの権利プロファイルよりも前に、このプロファイルを配置します。
特権が必要なコマンドにその特権を割り当て、必要な承認を追加し、そのコマンドと承認を権利プロファイル内に配置してから、そのプロファイルをユーザーに割り当てます。
管理コマンドは、プロファイルシェルで実行する必要があります。使用例 76, プロファイルシェルを使用しているかどうかの判断は、プロファイルシェルのテスト方法を示しています。
ユーザーエラーが発生する可能性を削減するには、次を試してみることができます。
プロファイルシェルをユーザーのログインシェルとして割り当てます。
ユーザーに対し、すべての特権付きコマンドより前にpfexec コマンドを配置するように指示します。
管理コマンドをプロファイルシェルで実行するようユーザーに注意を促します。
サイトで役割が使用されている場合は、ユーザーに対し、管理コマンドを実行する前にその役割を引き受けるように注意を促します。ユーザーではなく役割としてコマンドを正常に実行する例については、使用例 78, 役割での特権付きコマンドの実行を参照してください。
特権付きコマンドが機能しない場合、ユーザーは PRIV_PFEXEC フラグをテストしてからそのコマンドを実行します。エラーメッセージに、この問題が特権の問題であると示されない場合があります。
$ praudit 20120814200247.20120912213421.example-system
praudit: Cannot associate stdin with 20120814200247.20120912213421.example-system:
Permission denied
$ ppriv $$
107219: bash
flags = <none>
...
$ pfbash
$ ppriv $$
1072232: bash
flags = PRIV_PFEXEC
...
$ praudit 20120814200247.20120912213421.example-system
/** Command succeeds **/
使用例 77 役割の特権付きコマンドの判断
この例では、ユーザーは割り当てられた役割を引き受け、いずれかの権利プロファイルに含まれている権利を一覧表示します。コマンドを強調するため、権利は切り捨てられています。
$ roles devadmin $ su - devadmin Password: xxxxxxxx $ profiles -l Device Security ... profiles=Service Configuration /usr/sbin/add_drv uid=0 /usr/sbin/devfsadm uid=0 privs=sys_devices,sys_config, sys_resource,file_owner, file_chown,file_chown_self, file_dac_read /usr/sbin/eeprom uid=0 /usr/bin/kbd /usr/sbin/list_devices euid=0 /usr/sbin/rem_drv uid=0 /usr/sbin/strace euid=0 /usr/sbin/update_drv uid=0 /usr/sbin/add_allocatable euid=0 /usr/sbin/remove_allocatable euid=0 Service Configuration /usr/sbin/svcadm /usr/sbin/svccfg使用例 78 役割での特権付きコマンドの実行
次の例で、admin 役割は、 useful.script ファイルに関する権利を変更することができます。
$ whoami jdoe $ ls -l useful.script -rwxr-xr-- 1 elsee eng 262 Apr 2 10:52 useful.script $ chgrp admin useful.script chgrp: useful.script: Not owner $ su - admin Password: xxxxxxxx $ chgrp admin useful.script $ chown admin useful.script $ ls -l useful.script -rwxr-xr-- 1 admin admin 262 Apr 2 10:53 useful.script