跳到主要内容

Sudo

集中下发 sudo 规则:谁、在哪台主机、以谁的身份、执行哪些命令;命令与命令组、拒绝命令、选项,以及 sudo 顺序的作用。

本页说明 Policy 下的 Sudo 页面组。Sudo 规则把各主机的 /etc/sudoers 集中到目录里。客户端 sssd 的 sudo 提供者获取规则,sudo -l 显示的就是这里定义的内容。本地 /etc/sudoers 仍然生效,两者取并集。不受许可模块限制。

Sudo 规则

规则的组成

规则详情

区块对应 sudoers说明
Who用户、用户组Anyone 对应 ALL
Access this host主机、主机组Any host 对应 ALL
Run commands允许的 Sudo 命令和命令组;拒绝的命令和命令组Any command 对应 ALL。拒绝列表在允许列表之后减去
As whomRunAs 用户、组留空表示默认 root。Anyone 对应 ALL,即 sudo -u 任意用户
OptionsDefaults 项!authenticate(免密)、env_keep、log_output 等,按 sudoers 选项名原样填写
Sudo ordersudoOrder多条规则同时命中时的优先级,数字大的生效。留空视为 0

自带的规则 all 没有任何内容、默认禁用,是一个空模板。

命令必须是绝对路径,可以带参数(/usr/bin/systemctl restart httpd);只写 /usr/bin/systemctl 则任何参数都放行。参数里的通配符按 sudoers 规则解释。

命令与命令组

Sudo 命令

命令先在 Sudo commands 页登记,再被规则引用。同一条命令可以在多条规则里使用。命令组把一类命令打包(service-control:重启 httpd、重启 nginx、查看日志),规则引用组,新增命令只改组。

Sudo 命令组

与 HBAC 的关系

两道判定都要通过:HBAC 里 sudo 服务对该用户该主机放行(allow_all 或专门的规则),Sudo 规则里有对应命令。只配置 Sudo 规则而 HBAC 未放行 sudo 服务时,客户端提示密码错误或直接拒绝。

客户端

# /etc/sssd/sssd.conf
[sssd]
services = nss, pam, sudo
# /etc/nsswitch.conf
sudoers: files sss

ipa-client-install 默认已配置。规则改动到客户端可见的延迟:sssd 每 6 小时全量刷新、每 15 分钟增量刷新(ldap_sudo_full_refresh_interval、ldap_sudo_smart_refresh_interval)。需要立即生效时执行 sss_cache -E。

边界

事项说明
免密!authenticate 写在规则选项里,对整条规则生效,不能按命令区分
RunAs 对象必须是 IPA 或 AD 用户、组。本地用户(如 postgres)在 External 字段填名字
按网段匹配主机只在命令行支持:ipa sudorule-add-host --hostmask=192.168.57.0/24。界面只有主机和主机组

本页内容