アプリケーションとスクリプトは 1 つのコマンドまたは一連のコマンドを実行します。権利を割り当てるには、権利プロファイル内の各コマンドに対し、セット ID や特権などのセキュリティー属性を設定します。必要に応じて、アプリケーションは承認を確認できます。
権利を必要とするスクリプトを実行する – 特権付きのコマンドを含むシェルスクリプトの実行方法
root 以外のユーザーが特権認識アプリケーションを実行できるようにする – Example 4–1
root 以外のユーザーが、root が所有するアプリケーションを実行できるようにする – Example 4–2
スクリプト内で承認を確認する – Example 4–3
特権シェルスクリプトを実行するには、そのスクリプトとスクリプト内のコマンドに特権を追加します。このため、該当する権利プロファイルには、特権が割り当てられているコマンドが含まれている必要があります。
始める前に
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
レガシーアプリケーションは特権を認識しないため、管理者は権利プロファイル内のアプリケーション実行可能ファイルにセキュリティー属性 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() 関数を使用して、承認をテストします。