検索

21.3.4. コマンドラインでの sudo ルールの定義

download PDF
各要素は、異なるコマンド (表21.1「sudo コマンド」に一覧あり) を使用して、ルールコマンドに追加されます。
sudo ルールコマンドの基本的な概要は、以下のとおりです。
$ ipa sudorule-add* options ruleName

例21.1 基本的な sudo ルールの作成

最も基本的なケースでは、sudo 設定が、1 つのホストの 1 つのコマンドに対して、1 つのユーザーに適切な権限を付与します。
最初のステップでは、最初のルールエントリーを追加します。
[jsmith@server ~]$ kinit admin
[jsmith@server ~]$ ipa sudorule-add files-commands
-----------------------------------
Added sudo rule "files-commands"
-----------------------------------
  Rule name: files-commands
  Enabled: TRUE
次に、アクセス権限を付与するコマンドを追加します。これは、--sudocmds の単一のコマンド、または --sudocmdgroups を使用したコマンドグループで行うことができます。
[jsmith@server ~]$ ipa sudorule-add-allow-command --sudocmds "/usr/bin/vim" files-commands
  Rule name: files-commands
  Enabled: TRUE
  sudo Commands: /usr/bin/vim
-------------------------
Number of members added 1
-------------------------
ルールにホストまたはホストグループを追加します。
[jsmith@server ~]$ ipa sudorule-add-host --host server.example.com files-commands
  Rule name: files-commands
  Enabled: TRUE
  Hosts: server.example.com
  sudo Commands: /usr/bin/vim
-------------------------
Number of members added 1
-------------------------
最後に、ユーザーまたはグループをルールに追加します。これは、ルールで定義されたとおりに sudo を使用可能なユーザーです。「run-as」ユーザーが指定されていない場合、このユーザーは root として sudo コマンドを実行します。
[jsmith@server ~]$ ipa sudorule-add-user --user jsmith files-commands
  Rule name: files-commands
  Enabled: TRUE
  Users: jsmith
  Hosts: server.example.com
  sudo Commands: /usr/bin/vim"
-------------------------
Number of members added 1
-------------------------

例21.2 コマンドの許可と拒否

sudo ルールは、コマンドへのアクセスを許可したり、アクセスを拒否することができます。たとえば、このルールではファイルへの読み取りアクセスが許可されますが、編集はできません。
[jsmith@server ~]$ kinit admin
[jsmith@server ~]$ ipa sudorule-add-allow-command --sudocmds "/usr/bin/less" readfiles
[jsmith@server ~]$ ipa sudorule-add-allow-command --sudocmds "/usr/bin/tail" readfiles
[jsmith@server ~]$ ipa sudorule-add-deny-command --sudocmds "/usr/bin/vim" readfiles

例21.3 sudoers オプションの使用

この sudoers ファイルには、sudo ユーザーの動作を制御するようにセットできる見込みフラグが多くあります。これは、ユーザーが sudo に対する認証を行うためにパスワードを必須としたり (あるいは必須としない)、sudoers ファイルで完全に資格のあるドメイン名を使用するような動作です。オプションの完全なリストは sudoers man ページにあります。
この sudorule-add-option コマンドを使用して、IdM sudo ルールにオプションのいずれかを設定できます。コマンドを実行すると、オプションを追加するプロンプトが表示されます。
[jsmith@server ~]$ kinit admin
[jsmith@server ~]$ ipa sudorule-add-option readfiles
Sudo Option: !authenticate
-----------------------------------------------------
Added option "!authenticate" to Sudo rule "readfiles"
-----------------------------------------------------
注記
「sudo オプションのフォーマットについて」で説明されているように、値に空白があるオプションを使用しないでください。1 行にオプションの一覧を追加するのではなく、目的のオプションごとに 1 つのオプション設定を追加します。

例21.4 他のユーザーとしての実行

sudo ルールには、root 以外のユーザーまたはグループを指定してコマンドを実行することもできます。最初のルールには、--sudorule-add-runasuser または --sudorule-add-runasgroup コマンドを使用してそれぞれユーザーまたはグループが指定されています。
$ ipa sudorule-add-runasuser --users=jsmith readfiles
$ ipa sudorule-add-runasgroup --groups=ITadmins readfiles
ルールの作成時に、sudorule-add-runasuser または sudorule-add-runasgroup コマンドは 特定 のユーザーまたはグループのみを設定できます。ただし、ルールを編集する場合は、--runasusercat または --runasgroupcat を使用して、すべてのユーザーまたはすべてのグループとして sudo を実行できます。たとえば、以下のようになります。
$ ipa sudorule-mod --runasgroupcat=all ruleName
注記
--sudorule-add-runasuser および --sudorule-add-runasgroup コマンドは、特定のユーザー名またはグループ名のみに対応しており、all オプションには対応していません。すべてのユーザーまたはすべてのグループの指定は、sudorule-mod コマンドでオプションとともにのみ使用できます。

例21.5 外部ユーザーの参照

sudo ルールの「who」は IdM ユーザーですが、論理的で有用なルールが多数あります。この指定の 1 つがシステムユーザーです。同様に、ルールは、IdM クライアントではないネットワーク上のホストマシンへのアクセスを許可または拒否する必要がある場合があります。
このような場合には、この sudo ポリシーは、外部ユーザーを参照できます。これは、ldM (「外部ユーザーについて」) 外で作成・保存されているアイデンティティーです。
外部アイデンティティーを sudo ルールに追加するオプションは次のとおりです。
  • --externaluser
  • --runasexternaluser
以下に例を示します。
$ ipa sudorule-add-user --externaluser=ITAdmin readfiles
$ ipa sudorule-add-runasuser --runasexternaluser=root readfiles
表21.1 sudo コマンド
コマンド 説明
sudorule-add sudo ルールエントリーを追加します。
sudorule-add-user ユーザーまたはユーザーグループを sudo ルールに追加します。このユーザー (またはグループのすべてのメンバー) は、ルール内のコマンドのいずれかを sudo することができます。
sudorule-add-host ルールのターゲットホストを追加します。これらは、ユーザーに sudo パーミッションが付与されるホストです。
sudorule-add-runasgroup sudo コマンドを実行するには、グループを設定します。これは特定のユーザーである必要があります。すべてのユーザーを指定するには、sudo-rule を使用してルールを変更します。
sudorule-add-runasuser sudo コマンドを実行するには、ユーザーを設定します。これは特定のユーザーである必要があります。すべてのユーザーを指定するには、sudo-rule を使用してルールを変更します。
sudorule-add-allow-command ルールのユーザーが実行に sudo パーミッションを持つコマンドを追加します。
sudorule-add-deny-command ルールのユーザーが、実行する sudo パーミッションを 拒否されたコマンドを追加します。
sudorule-add-option sudo ルールに sudoers フラグを追加します。
sudorule-disable sudo ルールエントリーを一時的に非アクティブにします。
sudorule-enable 以前に一時停止した sudo ルールをアクティベートします。
sudorule-del sudo ルールを完全に削除します。

例21.6 コマンドラインからの新規 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
    
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.