sudo rules are in a sense similar to access control rules: they define users who are granted access, the commands which are within the scope of the rule, and then the target hosts to which the rule applies. In IPA, additional information can be configured in the rule, such as sudoers options and run-as settings, but the basic elements always define who, what (services), and where (hosts).


sudoers options. The complete list of options is in the sudoers manpage and at http://www.gratisoft.us/sudo/sudoers.man.html#sudoers_options.

sudoers option.





sudo rule can grant access or deny access to commands, and it can grant allow access to one command and also deny access to another.




sudo rule command is:
$ ipa sudorule-add* options ruleNamesudo configuration is going to grant the right to one user for one command on one host.
$ ipa sudorule-add files-commands ----------------------------------- Added sudo rule "files-commands" ----------------------------------- Rule name: files-commands Enabled: TRUE
--sudocmd, or a group of commands, using --sudocmdgroups.
$ ipa sudorule-add-allow-command --sudocmd "/usr/bin/vim" files-commands Rule name: files-commands Enabled: TRUE sudo Commands: /usr/bin/vim ------------------------- Number of members added 1 -------------------------
$ 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 as defined in the rule; if no "run-as" user is given, then this user will run the sudo commands as root.
$ 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 -------------------------
sudo rule can grant access or deny access to commands. For example, this rule would allow read access to files but prevent editing:
$ ipa sudorule-add-allow-command --sudocmd "/usr/bin/less" readfiles $ ipa sudorule-add-allow-command --sudocmd "/usr/bin/tail" readfiles $ ipa sudorule-add-deny-command --sudocmd "/usr/bin/vim" readfiles
sudoers file has a lot of potential flags that can be set to control the behavior of sudo users, like requiring (or not requiring) passwords to offer a user to authenticate to sudo or using fully-qualified domain names in the sudoers file. The complete list of options is in the sudoers manpage and at http://www.gratisoft.us/sudo/sudoers.man.html#sudoers_options.
sudo rule using the sudorule-add-option command. When the command is run, it prompts for the option to add:
$ ipa sudorule-add-option readfiles Sudo Option: !authenticate ----------------------------------------------------- Added option "!authenticate" to Sudo rule "readfiles" -----------------------------------------------------
sudo rule also has the option of specifying a non-root user or group to run the commands as. The initial rule has the user or group specified using the --sudorule-add-runasuser or --sudorule-add-runasgroup command, respectively.
$ ipa sudorule-add-runasuser --users=jsmith readfiles $ ipa sudorule-add-runasgroup --groups=ITadmins readfiles
sudorule-add-runasuser or sudorule-add-runasgroup command can only set specific users or groups. However, when editing a rule, it is possible to run sudo as all users or all groups by using the --runasusercat or --runasgroupcat option. For example:
$ ipa sudorule-mod --runasgroupcat=all ruleName--sudorule-add-runasuser and --sudorule-add-runasgroup commands do not support an all option, only specific user or group names. Specifying all users or all groups can only be used with options with the sudorule-mod command.
| Command | Description |
|---|---|
| sudorule-add | Adds a sudo rule entry. |
| sudorule-add-user | Adds a user or a user group to the sudo rule. This user (or every member of the group) is then entitled to sudo any of the commands in the rule. |
| sudorule-add-host | Adds a target host for the rule. These are the hosts where the users are granted sudo permissions. |
| sudorule-add-runasgroup |
Sets a group to run the sudo commands as. This must be a specific user; to specify all users, modify the rule using sudo-rule.
|
| sudorule-add-runasuser |
Sets a user to run the sudo commands as. This must be a specific user; to specify all users, modify the rule using sudo-rule.
|
| sudorule-add-allow-command | Adds a command that users in the rule have sudo permission to run. |
| sudorule-add-deny-command | Adds a command that users in the rule are explicitly denied sudo permission to run. |
| sudorule-add-option | Adds a sudoers flag to the sudo rule. |