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

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

프로그램에 필요한 권한을 확인하는 방법

명령이나 프로세스가 실패하는 경우 이 디버깅 절차를 사용합니다. 첫번째 권한 실패를 찾아서 수정한 후 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 디렉토리에 파일을 만드는 권한을 프로세스에 지정해야 합니다.

예 7-5  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 권한이 누락되었다고 보고합니다.

예 7-6  ppriv 명령을 사용하여 프로파일 셸의 권한 사용 조사

이 예에서 jdoe 사용자는 objadmin 역할을 맡을 수 있습니다. objadmin 역할에는 Object Access Management 권한 프로파일이 포함됩니다. 이 권한 프로파일을 통해 objadmin 역할은 objadmin이 소유하지 않은 파일에 대한 권한을 변경할 수 있습니다.

다음 발췌 부분에서 jdoeuseful.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
예 7-7  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