Go to main content
Oracle® Solaris 11.3 でのユーザーとプロセスのセキュリティー保護

印刷ビューの終了

更新: 2016 年 11 月
 
 

権利割り当てをトラブルシューティングする方法

権利が評価されず正しく適用されない原因には、さまざまな要素の影響があります。この手順は、割り当てられている権利がユーザー、役割、プロセスに対して使用できない原因のデバッグを支援します。いくつかのステップは 割り当てられた権利の検索順序に基づいています。

始める前に

root 役割になる必要があります。詳細は、割り当てられている管理権利の使用を参照してください。

  1. ネームサービスを検証して再起動します。
    1. ユーザーまたは役割のセキュリティー割り当てが、システムで有効になっているネームサービス内にあることを確認します。
      # 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_attrauth_attr、および prof_attr は、まずファイル内で検索され、次に LDAP 内で検索されます。

    2. ネームサービスキャッシュ svc:/system/name-service/cache を再起動します。

      nscd デーモンには長い有効期間を設定することができます。デーモンを再起動して、現在のデータでネームサービスを更新します。

      # svcadm restart name-service/cache
  2. userattr -v コマンドを実行して権利がユーザーに割り当てられる場所を特定します。

    たとえば次のコマンドは、割り当てられている権利と、その割り当てがユーザー jdoe に対して行われた場所を示します。jdoe がデフォルトを使用していることを示す出力はありません。

    % userattr -v access_times jdoe
    % userattr -v access_tz 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 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 つの役割が直接割り当てられていることを示しています。割り当てられた承認は、policy.conf ファイル内のデフォルト権利プロファイルのものです。

    • jdoe には監査フラグが直接割り当てられるため、権利プロファイルの監査フラグ値は使用されません。

    • 権利プロファイルは、Audit Review 権利プロファイルから始まり、次に Stop プロファイルという順序で評価されます。

    • そのほかのすべての権利は、役割 cryptomgtinfosecjdoe に割り当てられています。これらの権利を表示するには、jdoe が各役割を引き受けてから、権利を一覧表示する必要があります。

    権利がユーザーに直接割り当てられていない場合は、次の確認作業に進みます。

  3. 割り当てられている承認のスペルが正しいことを確認します。

    承認はユーザーに対して累積されるため、承認の割り当てのソースは重要ではありません。ただし、スペルが正しくない承認は暗黙のうちに失敗します。

  4. 作成した権利プロファイルについて、そのプロファイル内のコマンドに適切なセキュリティー属性を割り当てたことを確認します。

    たとえば、成功するには euid=0 ではなく uid=0 が必要なコマンドもあります。コマンドのマニュアルページを参照し、コマンドとそのオプションに承認が必要であるかどうかをか確認してください。

  5. ユーザーの権利プロファイルの権利を確認します。
    1. 認証権利プロファイルのリストで権利を順に確認します。

      リスト内のもっとも古い権利プロファイルに含まれる属性の値は、カーネル内の値です。この値が正しくない場合は、その権利プロファイル内の値を変更するか、またはプロファイルを正しい順序で再割り当てします。割り当てられている権利を並べ替える方法を参照してください。

      特権コマンドの場合、defaultpriv または limitpriv キーワードから特権が削除されていないことを確認します。

    2. 標準権利プロファイルのリストで権利を順に確認します。

      認証権利プロファイルで実行したものと同じ検査を行います。

    3. 検索する権利がリストにない場合は、ユーザーに割り当てられている役割を調べます。

      権利が 1 つの役割に割り当てられている場合、ユーザーはその役割を引き受けて権利を取得する必要があります。

  6. 失敗したコマンドが成功するには承認が必要であるかどうかを確認します。
    1. 既存の権利プロファイルに必要な承認が含まれているかどうかを確認します。

      プロファイルが存在する場合は、そのプロファイルを使用します。それを、認証権利プロファイルまたは通常の権利プロファイルとしてユーザーに割り当てます。この承認が成功する必要があるコマンドを含むそのほかの権利プロファイルよりも前に、このプロファイルを配置します。

    2. コマンドのオプションに承認が必要であるかどうかを確認します。

      特権が必要なコマンドにその特権を割り当て、必要な承認を追加し、そのコマンドと承認を権利プロファイル内に配置してから、そのプロファイルをユーザーに割り当てます。

  7. あるユーザーに対してコマンドが引き続き失敗する場合は、そのユーザーがプロファイルシェルでコマンドを実行していることを確認します。

    管理コマンドは、プロファイルシェルで実行する必要があります。使用例 71は、プロファイルシェルのテスト方法を示しています。

      ユーザーエラーが発生する可能性を削減するには、次を試してみることができます。

    • プロファイルシェルをユーザーのログインシェルとして割り当てます。

    • ユーザーに対し、すべての特権付きコマンドより前にpfexec コマンドを配置するように指示します。

    • 管理コマンドをプロファイルシェルで実行するようユーザーに注意を促します。

    • サイトで役割が使用されている場合は、ユーザーに対し、管理コマンドを実行する前にその役割を引き受けるように注意を促します。ユーザーではなく役割としてコマンドを正常に実行する例については、使用例 73を参照してください。

  8. 役割でコマンドが失敗する場合は、その役割を引き受け、ユーザーの権利を確認する場合と同じ手順を実行します。
使用例 71  プロファイルシェルを使用しているかどうかの判断

特権付きコマンドが機能しない場合は、エラーメッセージに、この問題が特権の問題であると示されない場合があります。

% praudit 20120814200247.20120912213421.example-system
praudit: Cannot associate stdin with 20120814200247.20120912213421.example-system: 
Permission denied

ユーザーは PRIV_PFEXEC フラグをテストし、続いてプロファイルシェルでコマンドを実行します。

% ppriv $$
107219: bash
flags = <none>
...

% pfbash
$ ppriv $$
1072232: bash
flags = PRIV_PFEXEC
...

# praudit 20120814200247.20120912213421.example-system 
/** Command succeeds **/
使用例 72  役割の特権付きコマンドの判断

この例では、ユーザーは割り当てられた役割を引き受け、いずれかの権利プロファイルに含まれている権利を一覧表示します。コマンドを強調するため、権利は切り捨てられています。

% 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
使用例 73  役割での特権付きコマンドの実行

次の例では、 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