8.2. 使用 CLI 向 IdM 客户端上的 IdM 用户授予 sudo 访问权限
在 Identity Management (IdM) 中,您可以将特定命令的 sudo
访问权限授予特定 IdM 主机上的 IdM 用户帐户。首先,添加 sudo
命令,然后为一个或多个命令创建 sudo
规则。
例如,完成这个过程以创建 idm_user_reboot sudo
规则,为 idm_user 帐户授予在 idmclient 机器上运行 /usr/sbin/reboot
命令的权限。
先决条件
- 以 IdM 管理员身份登录。
- 您已在 IdM 中创建 了 idm_user 的用户帐户,并通过为用户创建密码来解锁帐户。有关使用 CLI 添加新 IdM 用户的详情,请参阅使用命令行添加用户。
-
idmclient 主机上没有本地的 idm_user。idm_user 用户未列在本地
/etc/passwd
文件中。
步骤
获取 Kerberos 票据作为 IdM
admin
。[root@idmclient ~]# kinit admin
在
sudo
命令的 IdM 数据库中添加/usr/sbin/reboot
命令:[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
创建名为 idm_user_reboot 的
sudo
规则:[root@idmclient ~]# ipa sudorule-add idm_user_reboot --------------------------------- Added Sudo Rule "idm_user_reboot" --------------------------------- Rule name: idm_user_reboot Enabled: TRUE
在 idm_user_reboot 规则中添加
/usr/sbin/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 -------------------------
将 idm_user_reboot 规则应用到 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 -------------------------
在 idm_user_reboot 规则中添加 idm_user 帐户:
[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 -------------------------
(可选)定义 idm_user_reboot 规则的有效性:
要定义
sudo
规则开始有效的时间,请使用带有--setattr sudonotbefore=DATE
选项的ipa sudorule-mod sudo_rule_name
命令。DATE 值必须遵循 yyyymmddHHMMSSZ 格式,以秒为单位。例如,要将 idm_user_reboot 规则的有效性的开始时间设置为 2025 年 12 月 31 日 12:34:00,请输入:[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotbefore=20251231123400Z
要定义 sudo 规则不再有效的时间,请使用
--setattr sudonotafter=DATE
选项。例如:要将 idm_user_reboot 规则有效期结束的时间设置为 2026 年 12 月 31 日 12:34:00 12:34:00,请输入:[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
将更改从服务器传播到客户端可能需要几分钟时间。
验证步骤
- 以 idm_user 帐户身份登录 idmclient 主机。
显示允许 idm_user 帐户执行的
sudo
规则。[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
使用
sudo
重新启动计算机。在提示时输入 idm_user 的密码:[idm_user@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for idm_user: