Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

29.6. sudo ルールの修正

Web UI での sudo ルールの修正

  1. Policy タブで SudoSudo Rules をクリックします。
  2. 設定ページを表示するルールの名前をクリックします。
  3. 必要に応じて設定を変更します。ページによっては上部に Save ボタンがあるものもあります。その場合は、このボタンをクリックして変更を保存します。
sudo ルールの設定ページには、以下の設定エリアがあります。
General エリア
このエリアでは、ルールの説明と sudo order を修正します。sudo order フィールドには、IdM がルールを評価する順番を整数で入力します。sudo order の値の最も高いルールが最初に評価されます。
Options エリア
このエリアでは、sudoers オプションをルールに追加します。
  1. オプション一覧の上部にある Add をクリックします。
    sudo オプションの追加

    図29.5 sudo オプションの追加

  2. sudoers オプションを入力します。たとえば、sudo でユーザー認証が要求されないようにするには、!authenticate を追加します。
    sudoers オプションの追加

    図29.6 sudoers オプションの追加

    sudoers オプションの詳細情報については、sudoers(5) man ページを参照してください。
  3. Add をクリックします。
Who エリア
このエリアでは、sudo ルールが適用されるユーザーまたはユーザーグループを選択します。これらのユーザーは、ルールで定義されたように sudo を使用することができます。
すべてのシステムユーザーがルールで定義したように sudo を使用出来るようにするには、Anyone を選択します。
ルールを特定のユーザーまたはグループのみに適用するには、Specified Users and Groups を選択して、以下のステップに従います。
  1. ユーザーまたはユーザーグループ一覧上部にある Add をクリックします。
    sudo ルールへのユーザーの追加

    図29.7 sudo ルールへのユーザーの追加

  2. ルールに追加するユーザーまたはユーザーグループを選択し、> ボタンをクリックして Prospective コラムに移動します。外部ユーザーを追加する場合には External フィールドでユーザーを指定してから > ボタンをクリックします。
    sudo ルール向けにユーザーを選択する

    図29.8 sudo ルール向けにユーザーを選択する

  3. Add をクリックします。
Access This Host エリア
このエリアでは、sudo ルールを有効にするホストを選択します。これは、ユーザーに sudo パーミッションが付与されるホストになります。
全ホストでルールを有効にするには、Anyone を選択します。
ルールを特定のホストまたはホストグループのみに適用するには、Specified Hosts and Groups を選択して、以下のステップに従います。
  1. ホスト一覧の上部にある Add をクリックします。
    sudo ルールへのホストの追加

    図29.9 sudo ルールへのホストの追加

  2. ルールに含めるホストまたはホストグループを選択し、> ボタンをクリックして Prospective コラムに移動します。外部ホストを追加する場合には External フィールドでユーザーを指定してから > ボタンをクリックします。
    sudo ルール用のホスト選択

    図29.10 sudo ルール用のホスト選択

  3. Add をクリックします。
Run Commands エリア
このエリアでは、sudo ルールに含めるコマンドを選択します。特定コマンドの使用をユーザーに許可する、もしくは拒否することを指定できます。
ユーザーが sudo ですべてのコマンドを使用できるようにするには、Any Command を選択します。
ルールを特定のコマンドまたはコマンドグループに関連付けるには、Specified Commands and Groups を選択して、以下のステップに従います。
  1. いずれかの Add ボタンをクリックして、コマンドまたはコマンドグループを追加します。
    許可するコマンドまたはコマンドグループを指定するには、Allow エリアを使用します。拒否するコマンドまたはコマンドグループを指定するには Deny エリアを使用します。
    sudo ルールへのコマンドの追加

    図29.11 sudo ルールへのコマンドの追加

  2. ルールに含めるコマンドまたはコマンドグループを選択し、> ボタンをクリックして Prospective コラムに移動させます。
    sudo ルール向けにコマンドを選択する

    図29.12 sudo ルール向けにコマンドを選択する

  3. Add をクリックします。
As Whom エリア
このエリアでは、特定の root 以外のユーザーとして特定コマンドを実行するよう sudo を設定します。
RunAs users のグループを追加すると、そのグループのメンバーの UID がそのコマンドの実行に使用されることに注意してください。また、RunAs group を追加すると、コマンドの実行にそのグループの GID が使用されます。
システム上のいずれのユーザーとしてルールを実行できるようにするには、Anyone を選択します。システム上のいずれのグループとしてルールを実行できるようにするには、Any Group を選択します。
  1. ユーザー一覧上部にある Add をクリックします。
    特定ユーザーとしてコマンドを実行する sudo ルールの設定

    図29.13 特定ユーザーとしてコマンドを実行する sudo ルールの設定

  2. ユーザーまたはグループを選択し、> ボタンをクリックして Prospective コラムに移動させます。外部のエンティティーを追加する場合には External フィールドで指定してから > ボタンをクリックします。
    コマンドのユーザー選択

    図29.14 コマンドのユーザー選択

  3. Add をクリックします。

コマンドラインからの sudo ルールの修正

IdM コマンドラインでは、以下の sudo ルールエリアを設定できます。
全般的 sudo ルールの管理
sudo ルールの全般的設定を変更するには、ipa sudorule-mod コマンドを使用します。よく使用されるオプションには、以下のものがあります。
  • --desc オプションでは、以下のように sudo ルールの説明を変更します。
    $ ipa sudorule-mod sudo_rule_name --desc="sudo_rule_description"
  • --order オプションでは、以下のように指定されたルールの順序を定義します。
    $ ipa sudorule-mod sudo_rule_name --order=3
  • エンティティーのカテゴリーは以下のオプションで指定します: --usercat (ユーザーカテゴリー)、--hostcat (ホストカテゴリー)、--cmdcat (コマンドカテゴリー)、--runasusercat (run-as ユーザーカテゴリー)、および --runasgroupcat (run-as グループカテゴリー)。これらのオプションではすべて all の値を使用することが可能で、その場合は該当ルールをすべてのユーザー、ホスト、コマンド、run-as ユーザー、もしくは run-as グループに関連付けます。
    たとえば、sudo_rule ルールで定義した sudo を全ユーザーが使用できるように指定するには、以下を実行します。
    $ ipa sudorule-mod sudo_rule --usercat=all
    ルールが既に特定エンティティーと関連付けられている場合は、この関連付けを解除してからそのエンティティーに対応する all カテゴリーを定義する必要があります。たとえば、sudo_ruleipa sudorule-add-user コマンドを使用して特定のユーザーと関連付けられている場合は、まず ipa sudorule-remove-user コマンドを使ってこのユーザーを削除する必要があります。
ipa sudorule-mod で使用可能なオプションの完全一覧と詳細情報については、コマンドに --help オプションを追加して実行してください。
sudo オプションの管理
sudoers オプションを追加するには、ipa sudorule-add-option コマンドを使用します。
たとえば、files-commands ルールをベースとした sudo を使用するユーザーの認証を不要とするには、!authenticate オプションを使用します。
$ ipa sudorule-add-option files-commands
Sudo Option: !authenticate
---------------------------------------------------------
Added option "!authenticate" to Sudo Rule "files-commands"
---------------------------------------------------------
sudoers オプションの詳細情報については、sudoers(5) man ページを参照してください。
sudoers オプションを削除するには、以下のように ipa sudorule-remove-option コマンドを使用します。
$ ipa sudorule-remove-option files-commands
Sudo Option: authenticate
-------------------------------------------------------------
Removed option "authenticate" from Sudo Rule "files-commands"
-------------------------------------------------------------
sudo 使用のパーミッション付与の管理
個別ユーザーを指定するには、--users オプションを ipa sudorule-add-user コマンドで使用します。ユーザーグループを指定するには、--groups オプションを ipa sudorule-add-user に追加します。
たとえば、useruser_groupfiles-commands ルールに追加するには、以下のコマンドを実行します。
$ ipa sudorule-add-user files-commands --users=user --groups=user_group
...
-------------------------
Number of members added 2
-------------------------
個別のユーザーもしくはグループを削除するには、以下のように ipa sudorule-remove-user を使用します。
$ ipa sudorule-remove-user files-commands
[member user]: user
[member group]:
...
---------------------------
Number of members removed 1
---------------------------
ユーザーに sudo パーミッションを付与する場所の管理
ホストを指定するには、--hosts オプションを ipa sudorule-add-host コマンドで使用します。ホストグループを指定するには、--hostgroups オプションを ipa sudorule-add-host に追加します。
たとえば、example.comhost_groupfiles-commands ルールに追加するには、以下のコマンドを実行します。
$ ipa sudorule-add-host files-commands --hosts=example.com --hostgroups=host_group
...
-------------------------
Number of members added 2
-------------------------
ホストまたはホストグループを削除するには、以下のように ipa sudorule-remove-host コマンドを使用します。
$ ipa sudorule-remove-host files-commands
[member host]: example.com
[member host group]:
...
---------------------------
Number of members removed 1
---------------------------
sudo と使用するコマンドの管理
特定コマンドの使用をユーザーに許可する、もしくは拒否することを指定できます。
許可するコマンドもしくはコマンドグループを指定するには、--sudocmds または --sudocmdgroups オプションを ipa sudorule-add-allow-command に追加します。拒否するコマンドもしくはコマンドグループを指定するには、--sudocmds または --sudocmdgroups オプションを ipa sudorule-add-deny-command コマンドに追加します。
たとえば、/usr/bin/less コマンドと files コマンドグループを許可するものとして files-commands ルールに追加するには、以下のコマンドを実行します。
$ ipa sudorule-add-allow-command files-commands --sudocmds=/usr/bin/less --sudocmdgroups=files
...
-------------------------
Number of members added 2
-------------------------
コマンドまたはコマンドグループをルールから削除するには、以下のように ipa sudorule-remove-allow-command または ipa sudorule-remove-deny-command コマンドを実行します。
$ ipa sudorule-remove-allow-command files-commands
[member sudo command]: /usr/bin/less
[member sudo command group]:
...
---------------------------
Number of members removed 1
---------------------------
--sudocmds オプションは sudo コマンドの追加」 にあるように、IdM に追加されたコマンドしか受け付けないことに注意してください。
sudo コマンドの実行者の ID 管理
個別ユーザーもしくはグループ内のユーザーの UID をコマンド実行時の ID として使用するには、--users または --groups オプションを ipa sudorule-add-runasuser コマンドで使用します。
ユーザーグループの GID をコマンド実行時の ID として使用するには、ipa sudorule-add-runasgroup --groups コマンドを使用します。
ユーザーやグループを指定しない場合は、sudo コマンドは root として実行されます。
たとえば、user の ID を使用して sudo ルール内のコマンドを実行するように指定するには、以下を実行します。
$ ipa sudorule-add-runasuser files-commands --users=user
...
RunAs Users: user
...
ipa sudorule-* コマンドの詳細については、ipa help sudorule コマンドの出力を確認するか、各コマンドに --help オプションを追加して実行します。

例29.1 コマンドラインからの新規 sudo ルール追加および修正

選択したサーバーで特定のユーザーグループがsudo ですべてのコマンドを使用できるようにするには、以下の手順を実行します。
  1. admin ユーザーまたは sudo ルールの管理を許可されている他のユーザー用に Kerberos チケットを取得します。
    $ kinit admin
    Password for admin@EXAMPLE.COM:
  2. 新規 sudo ルールを IdM に追加します。
    $ ipa sudorule-add new_sudo_rule --desc="Rule for user_group"
    ---------------------------------
    Added Sudo Rule "new_sudo_rule"
    ---------------------------------
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
  3. who を定義します。sudo ルールの使用が許可されるユーザーのグループを指定します。
    $ ipa sudorule-add-user new_sudo_rule --groups=user_group
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      User Groups: user_group
    -------------------------
    Number of members added 1
    -------------------------
  4. where を定義します。ユーザーに sudo パーミッションが付与されるホストのグループを指定します。
    $ ipa sudorule-add-host new_sudo_rule --hostgroups=host_group
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      User Groups: user_group
      Host Groups: host_group
    -------------------------
    Number of members added 1
    -------------------------
  5. what を定義します。どの sudo コマンドもユーザーが実行することを許可するには、all コマンドカテゴリーをルールに追加します。
    $ ipa sudorule-mod new_sudo_rule --cmdcat=all
    ------------------------------
    Modified Sudo Rule "new_sudo_rule"
    ------------------------------
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      Command category: all
      User Groups: user_group
      Host Groups: host_group
  6. sudo コマンドを root として実行するには、run-as ユーザーまたはグループを指定しないでください。
  7. sudo コマンド使用時にユーザー認証が要求されないようにするには、!authenticate sudoers を追加します。
    $ ipa sudorule-add-option new_sudo_rule
    Sudo Option: !authenticate
    -----------------------------------------------------
    Added option "!authenticate" to Sudo Rule "new_sudo_rule"
    -----------------------------------------------------
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      Command category: all
      User Groups: user_group
      Host Groups: host_group
      Sudo Option: !authenticate
  8. 新規の sudo ルール設定を表示して、内容を確認します。
    $ ipa sudorule-show new_sudo_rule
      Rule name: new_sudo_rule
      Description: Rule for user_group
      Enabled: TRUE
      Command category: all
      User Groups: user_group
      Host Groups: host_group
      Sudo Option: !authenticate