Oracle® Solaris 11.2 でのユーザーとプロセスのセキュリティー保護

印刷ビューの終了

更新: 2014 年 7 月
 
 

アプリケーションおよびスクリプトへの権利の割り当て

アプリケーションとスクリプトは 1 つのコマンドまたは一連のコマンドを実行します。権利を割り当てるには、権利プロファイル内の各コマンドに対し、セット ID や特権などのセキュリティー属性を設定します。必要に応じて、アプリケーションは承認を確認できます。


注 -  スクリプトのコマンドで、正常な実行のために setuid ビットまたは setgid ビットセットを持つ必要がある場合、実行可能なスクリプトおよびコマンドに対して、権利プロファイルでセキュリティー属性を追加する必要があります。スクリプトがプロファイルシェルで実行されると、セキュリティー属性を使用してコマンドが実行されます。

特権付きのコマンドを含むシェルスクリプトの実行方法

特権シェルスクリプトを実行するには、そのスクリプトとスクリプト内のコマンドに特権を追加します。このため、該当する権利プロファイルには、特権が割り当てられているコマンドが含まれている必要があります。

始める前に

root 役割になる必要があります。詳細は、割り当てられている管理権利の使用を参照してください。

  1. 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  レガシーアプリケーションへのセキュリティー属性の割り当て

レガシーアプリケーションは特権を認識しないため、管理者は権利プロファイル内のアプリケーション実行可能ファイルにセキュリティー属性 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() 関数を使用して、承認をテストします。