我在 RedHat 7.3 服务器上工作,一个用户需要访问 crontab。但是这个用户是域用户(例如 test@[domain])。因此该用户不会显示在 /etc/passwd 文件中。
我已经尝试在 cron.allow 文件中增加他的姓名和全名(后面带域名)。
这似乎不起作用,权限仍然被拒绝。是否可以授予域用户(没有 root 访问权限)访问 crontab 的权限?如果可以,怎么做?
答案1
Cron 总是使用相同的方法来确定访问权限,不管帐户类型。一张支票是允许计划文件,另一个通过 PAM:
- Cron 调用 PAM 来运行 中的“帐户”(会计/授权)堆栈
/etc/pam.d/crond
。 - 该文件直接或间接(通过 include/substack)将包含属于您的域客户端的模块 - 例如,
pam_sss
如果您使用 SSSD,pam_winbind
如果您使用 Samba/Winbindd,或者pam_ldap
如果您使用 nslcd。 pam_sss联系 SSSD,后者决定是否允许用户
test@domain
访问crond
服务。它如何做出决定取决于参数sssd.conf
——例如,当加入 Active Directory 域时,它甚至可能会读取您的组策略并根据 Windows 是否授予用户“批量登录”权限做出决定。(我只是假设它是 SSSD,因为用户名语法并且因为 RHEL 创建了它。)
顺便说一句,从技术角度来看,本地用户和域用户没有区别。即使是语法也...@domain
只是 SSSD 生成的花哨用户名;对于系统的其余部分来说,它没有什么特别之处。因此,如果您使用允许计划通常你必须将其包括在内。
补充一点,使用 SSSD 可以实现不对称名称→UID→名称转换(例如test@domain
→ 12345 → domain\test
)。您不知道 cron 是逐字存储用户名还是根据 UID 重建用户名。因此,您应该getent passwd <uid>
使用数字 UID 运行,并将生成的用户名包含在允许计划如果它与原始用户名不同(即您应该列出两个版本)。