8.2. Accorder un accès sudo à un utilisateur IdM sur un client IdM à l'aide de la CLI
Dans la gestion des identités (IdM), vous pouvez accorder l'accès sudo
pour une commande spécifique à un compte d'utilisateur IdM sur un hôte IdM spécifique. Commencez par ajouter une commande sudo
, puis créez une règle sudo
pour une ou plusieurs commandes.
Par exemple, suivez cette procédure pour créer la règle idm_user_reboot sudo
afin d'autoriser le compte idm_user à exécuter la commande /usr/sbin/reboot
sur la machine idmclient.
Conditions préalables
- Vous êtes connecté en tant qu'administrateur IdM.
- Vous avez créé un compte utilisateur pour idm_user dans IdM et déverrouillé le compte en créant un mot de passe pour l'utilisateur. Pour plus d'informations sur l'ajout d'un nouvel utilisateur IdM à l'aide de la ligne de commande, voir Ajouter des utilisateurs à l'aide de la ligne de commande.
-
Aucun compte local idm_user n'est présent sur l'hôte idmclient. L'utilisateur idm_user n'est pas répertorié dans le fichier local
/etc/passwd
.
Procédure
Récupérer un ticket Kerberos en tant qu'IdM
admin
.[root@idmclient ~]# kinit admin
Ajouter la commande
/usr/sbin/reboot
à la base de données IdM des commandessudo
:[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
Créez une règle
sudo
nommée idm_user_reboot:[root@idmclient ~]# ipa sudorule-add idm_user_reboot --------------------------------- Added Sudo Rule "idm_user_reboot" --------------------------------- Rule name: idm_user_reboot Enabled: TRUE
Ajoutez la commande
/usr/sbin/reboot
à la règle idm_user_reboot:[root@idmclient ~]# ipa sudorule-add-allow-command idm_user_reboot --sudocmds '/usr/sbin/reboot' Rule name: idm_user_reboot Enabled: TRUE Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Appliquer la règle idm_user_reboot à l'hôte IdM idmclient:
[root@idmclient ~]# ipa sudorule-add-host idm_user_reboot --hosts idmclient.idm.example.com Rule name: idm_user_reboot Enabled: TRUE Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Ajoutez le compte idm_user à la règle idm_user_reboot:
[root@idmclient ~]# ipa sudorule-add-user idm_user_reboot --users idm_user Rule name: idm_user_reboot Enabled: TRUE Users: idm_user Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Il est possible de définir la validité de la règle idm_user_reboot:
Pour définir l'heure à laquelle une règle
sudo
commence à être valide, utilisez la commandeipa sudorule-mod sudo_rule_name
avec l'option--setattr sudonotbefore=DATE
option. La valeur de DATE doit suivre le format de yyyymmddHHMMSSZ, en spécifiant explicitement les secondes. Par exemple, pour définir le début de la validité de la règle idm_user_reboot au 31 décembre 2025 12:34:00, entrez :[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotbefore=20251231123400Z
Pour définir l'heure à laquelle une règle sudo cesse d'être valide, utilisez l'option
--setattr sudonotafter=DATE
. Par exemple, pour fixer la fin de la validité de la règle idm_user_reboot au 31 décembre 2026 12:34:00, entrez :[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
La propagation des changements du serveur au client peut prendre quelques minutes.
Verification steps
- Connectez-vous à l'hôte idmclient en tant que compte idm_user.
Affiche les règles
sudo
que le compte idm_user est autorisé à appliquer.[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user may run the following commands on idmclient: (root) /usr/sbin/reboot
Redémarrez la machine en utilisant
sudo
. Saisissez le mot de passe de idm_user lorsque vous y êtes invité :[idm_user@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for idm_user: