Oracle® Solaris 11.2의 사용자 및 프로세스 보안

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

권한 지정 문제를 해결하는 방법

권한이 평가되고 올바르게 적용되지 않는 이유에 영향을 주는 요소에는 여러 가지가 있습니다. 이 절차는 사용자, 역할 또는 프로세스에서 지정된 권한을 사용할 수 없는 이유를 디버그하는 데 도움이 됩니다. 일부 단계는 지정된 권한 검색 순서를 기반으로 합니다.

시작하기 전에

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_attr, auth_attrprof_attr이 파일에서 먼저 검색된 후 LDAP에서 검색됩니다.

    2. 이름 서비스 캐시 svc:/system/name-service/cache를 다시 시작합니다.

      nscd 데몬의 TTL(time-to-live) 간격이 길어질 수 있습니다. 데몬을 다시 시작하여 이름 지정 서비스를 현재 데이터로 업데이트합니다.

      # 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에게 감사 플래그, 두 개의 권한 프로파일 및 두 개의 역할이 직접 지정되었음을 보여줍니다. 지정된 권한 부여는 policy.conf 파일의 기본 권한 프로파일에서 가져옵니다.

    • jdoe에 감사 플래그가 직접 지정되었으므로 권한 프로파일의 감사 플래그 값은 사용되지 않습니다.

    • 권한 프로파일은 순서대로 먼저 Audit Review 권한 프로파일이 평가된 후 Stop 프로파일이 평가됩니다.

    • 다른 모든 권한은 cryptomgtinfosec 역할에서 jdoe에 지정됩니다. 이러한 권한을 보려면 jdoe가 각 역할을 맡은 후 권한을 나열해야 합니다.

    사용자에게 직접 권한이 지정되지 않은 경우 다음 검사를 계속합니다.

  3. 지정된 권한 부여의 철자가 올바른지 확인합니다.

    권한 부여가 사용자에 대해 누적되므로 권한 부여 지정의 소스는 중요하지 않습니다. 하지만 철자가 잘못된 권한 부여는 자동으로 실패합니다.

  4. 직접 만든 권한 프로파일의 경우 해당 프로파일의 명령에 적절한 보안 속성을 지정했는지 확인합니다.

    예를 들어, 일부 명령이 성공하려면 euid=0이 아니라 uid=0이 필요합니다. 명령이나 해당 옵션에 권한 부여가 필요한지 확인하는 명령은 매뉴얼 페이지를 참조하십시오.

  5. 사용자의 권한 프로파일에서 권한을 검사합니다.
    1. 순서대로, 인증된 권한 프로파일 목록에서 권한을 검사합니다.

      목록에서 가장 빠른 권한 프로파일의 속성 값이 커널의 값입니다. 이 값이 올바르지 않으면 해당 권한 프로파일의 값을 변경하거나 프로파일을 올바른 순서로 다시 지정합니다. 지정된 권한 순서를 조정하는 방법을 참조하십시오.

      권한 있는 명령의 경우 defaultpriv 또는 limitpriv 키워드에서 권한이 제거되지 않았는지 확인합니다.

    2. 순서대로, 일반 권한 프로파일 목록에서 권한을 검사합니다.

      인증된 권한 프로파일에 대해 수행한 것과 동일한 검사를 따르십시오.

    3. 검색 중인 권한이 나열되지 않는 경우 사용자에게 지정된 역할을 확인합니다.

      권한이 역할에 지정된 경우 권한을 얻으려면 사용자가 역할을 맡아야 합니다.

  6. 실패한 명령이 성공하려면 권한 부여가 필요한지 확인합니다.
    1. 기존 권한 프로파일에 필요한 권한 부여가 포함되어 있는지 확인합니다.

      프로파일이 존재하면 사용합니다. 인증된 권한 프로파일이나 일반 권한 프로파일로 사용자에게 지정합니다. 성공하려면 이 권한 부여가 필요한 명령이 포함된 다른 권한 프로파일보다 이전 순서를 프로파일에 지정합니다.

    2. 명령에 대한 옵션에 권한 부여가 필요한지 확인합니다.

      권한(privilege)이 필요한 명령에 권한(privilege)을 지정하고, 필요한 권한 부여를 추가하고, 명령 및 권한 부여를 권한(right) 프로파일에 배치하고, 프로파일을 사용자에게 지정합니다.

  7. 사용자에 대해 명령이 계속 실패하는 경우 사용자가 프로파일 셸에서 명령을 실행 중인지 확인합니다.

    관리 명령은 프로파일 셸에서 실행해야 합니다. Example 7–1에서는 프로파일 셸이 있는지 테스트하는 방법을 보여줍니다.

      사용자 오류 가능성을 줄이려면 다음을 시도할 수 있습니다.

    • 프로파일 셸을 사용자 로그인 셸로 지정합니다.

    • 사용자에게 모든 권한 있는 명령 앞에 pfexec 명령을 배치하도록 지시합니다.

    • 사용자에게 프로파일 셸에서 관리 명령을 실행하도록 미리 알립니다.

    • 사이트에서 역할을 사용 중인 경우 사용자에게 관리 명령을 실행하기 전에 역할을 맡도록 미리 알립니다. 사용자가 아니라 역할로서 성공한 명령 실행의 예는 Example 7–3을 참조하십시오.

  8. 역할에 대해 명령이 실패한 경우 역할을 맡고 사용자 권한을 검사할 때 수행한 것과 동일한 단계를 수행합니다.
예 7-1  프로파일 셸을 사용 중인지 확인

권한 있는 명령이 작동하지 않는 경우 사용자가 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 **/
예 7-2  역할의 권한 있는 명령 확인

이 예에서는 사용자가 지정된 역할을 맡고 권한 프로파일 중 하나에 포함된 권한을 나열합니다. 명령을 강조하기 위해 권한이 잘렸습니다.

% 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
예 7-3  역할의 권한 있는 명령 실행

다음 예에서는 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