응용 프로그램과 스크립트는 명령 1개나 일련의 명령을 실행합니다. 권한(right)을 지정하려면 권한 프로파일의 각 명령에 대해 세트 ID, 권한(privilege) 등의 보안 속성을 설정합니다. 해당하는 경우 응용 프로그램이 권한 부여를 검사할 수 있습니다.
권한이 필요한 스크립트 실행 – 권한 있는 명령으로 셸 스크립트를 실행하는 방법
root가 아닌 사용자가 권한 인식 응용 프로그램을 실행할 수 있도록 허용 – Example 4–1
root가 아닌 사용자가 root 소유 응용 프로그램을 실행할 수 있도록 허용 – Example 4–2
스크립트에서 권한 부여 검사 – Example 4–3
권한 있는 셸 스크립트를 실행하려면 스크립트 및 스크립트의 명령에 권한을 추가합니다. 그런 다음 해당 권한(right) 프로파일에 권한(privilege)이 지정된 명령을 포함해야 합니다.
시작하기 전에
root 역할을 맡아야 합니다. 자세한 내용은 지정된 관리 권한 사용을 참조하십시오.
#!/bin/pfsh # Copyright (c) 2013 by Oracle
권한 없이 스크립트를 실행하면 ppriv 명령에 대한 debug 옵션이 누락된 권한을 나열합니다.
% ppriv -eD script-full-path
자세한 내용은 프로그램에 필요한 권한을 확인하는 방법을 참조하십시오.
셸 스크립트와 셸 스크립트의 명령을 필요한 보안 속성으로 권한 프로파일에 추가합니다. 권한 프로파일을 만드는 방법을 참조하십시오.
예는 사용자에게 권한 지정을 참조하십시오.
% pfexec script-full-path
% su - rolename Password: xxxxxxxx # script-full-path
레거시 응용 프로그램은 권한(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() 함수를 사용하여 권한 부여를 테스트합니다.