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

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

응용 프로그램 및 스크립트에 대한 권한 지정

응용 프로그램과 스크립트는 명령 1개나 일련의 명령을 실행합니다. 권한(right)을 지정하려면 권한 프로파일의 각 명령에 대해 세트 ID, 권한(privilege) 등의 보안 속성을 설정합니다. 해당하는 경우 응용 프로그램이 권한 부여를 검사할 수 있습니다.


주 -  스크립트의 명령이 성공하는 데 setuid 비트 또는 setgid 비트 세트가 필요한 경우 스크립트 실행 파일 및 명령에 대한 보안 속성이 권한 프로파일에 추가되어 있어야 합니다. 프로파일 셸에서 스크립트를 실행하면 보안 속성으로 명령이 실행됩니다.

권한 있는 명령으로 셸 스크립트를 실행하는 방법

권한 있는 셸 스크립트를 실행하려면 스크립트 및 스크립트의 명령에 권한을 추가합니다. 그런 다음 해당 권한(right) 프로파일에 권한(privilege)이 지정된 명령을 포함해야 합니다.

시작하기 전에

root 역할을 맡아야 합니다. 자세한 내용은 지정된 관리 권한 사용을 참조하십시오.

  1. 첫번째 라인에서 /bin/pfsh 또는 다른 프로파일 셸로 스크립트를 만듭니다.
    #!/bin/pfsh
    # Copyright (c) 2013 by Oracle
  2. 일반 사용자로 스크립트의 명령에 필요한 권한을 확인합니다.

    권한 없이 스크립트를 실행하면 ppriv 명령에 대한 debug 옵션이 누락된 권한을 나열합니다.

    % ppriv -eD script-full-path

    자세한 내용은 프로그램에 필요한 권한을 확인하는 방법을 참조하십시오.

  3. 스크립트에 대한 권한 프로파일을 만들거나 수정합니다.

    셸 스크립트와 셸 스크립트의 명령을 필요한 보안 속성으로 권한 프로파일에 추가합니다. 권한 프로파일을 만드는 방법을 참조하십시오.

  4. 신뢰할 수 있는 사용자 또는 역할에 권한 프로파일을 지정합니다.

    예는 사용자에게 권한 지정을 참조하십시오.

  5. 스크립트를 실행하려면 다음 중 하나를 수행합니다.
    • 사용자로 스크립트가 지정된 경우 프로파일 셸을 열고 스크립트를 실행합니다.
      % pfexec script-full-path
    • 역할로 스크립트가 지정된 경우 역할을 맡고 스크립트를 실행합니다.
       % su - rolename
      Password: xxxxxxxx
      # script-full-path
예 4-1  레거시 응용 프로그램에 보안 속성 지정

레거시 응용 프로그램은 권한(privilege)을 인식하지 못하므로 관리자가 권한(right) 프로파일에서 응용 프로그램 실행 파일에 euid=0 보안 속성을 지정합니다. 그런 다음 신뢰할 수 있는 사용자에게 지정합니다.

# profiles -p LegacyApp
profiles:LegacyApp> set desc="Legacy application"
profiles:LegacyApp> add cmd=/opt/legacy-app/bin/legacy-cmd
profiles:LegacyApp:legacy-cmd> set euid=0
profiles:LegacyApp:legacy-cmd> end
profiles:LegacyApp> exit
# profiles -p LegacyApp 'select cmd=/opt/legacy-app/bin/legacy-cmd;info;end'
	id=/opt/legacy-app/bin/legacy-cmd
	euid=0
# usermod -K profiles+="Legacy application" jdoe
예 4-2  지정된 권한으로 응용 프로그램 실행

이 예에서는 관리자가 Example 5–7의 권한 프로파일을 신뢰할 수 있는 사용자에게 지정합니다. 사용자가 스크립트를 실행할 때 암호를 제공해야 합니다.

# usermod -K auth_profiles+="Site application" jdoe
예 4-3  스크립트 또는 프로그램에서 권한 부여 검사

권한 부여를 검사하려면 auths 명령을 기반으로 하는 테스트를 작성합니다. 이 명령에 대한 자세한 내용은 auths(1) 매뉴얼 페이지를 참조하십시오.

예를 들어, 다음 라인은 사용자에게 $1 인수로 제공된 권한 부여가 있는지 테스트합니다.

if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then
        echo Auth granted
else
        echo Auth denied
fi

    보다 완벽한 테스트에는 와일드카드 사용을 검사하는 논리가 포함됩니다. 예를 들어, 사용자에게 solaris.system.date 권한 부여가 있는지 테스트하려면 다음 문자열을 검사해야 합니다.

  • solaris.system.date

  • solaris.system.*

  • solaris.*

프로그램을 작성하는 경우 getauthattr() 함수를 사용하여 권한 부여를 테스트합니다.