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() 함수를 사용하여 권한 부여를 테스트합니다.