21.3.4. コマンドラインでの sudo ルールの定義
各要素は、異なるコマンド (表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 ルールに追加するオプションは次のとおりです。
- --externaluser
- --runasexternaluser
以下に例を示します。
$ ipa sudorule-add-user --externaluser=ITAdmin readfiles $ ipa sudorule-add-runasuser --runasexternaluser=root readfiles
コマンド | 説明 |
---|---|
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
ですべてのコマンドを使用できるようにするには、以下の手順を実行します。
admin
ユーザーまたはsudo
ルールの管理を許可されている他のユーザー用に Kerberos チケットを取得します。$ kinit admin Password for admin@EXAMPLE.COM:
- 新規
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
- 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 -------------------------
- 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 -------------------------
- 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
sudo
コマンドを root として実行するには、run-as ユーザーまたはグループを指定しないでください。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
- 新規の
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