如何授予域用户 crontab 访问权限?

如何授予域用户 crontab 访问权限?

我在 RedHat 7.3 服务器上工作,一个用户需要访问 crontab。但是这个用户是域用户(例如 test@[domain])。因此该用户不会显示在 /etc/passwd 文件中。

我已经尝试在 cron.allow 文件中增加他的姓名和全名(后面带域名)。
这似乎不起作用,权限仍然被拒绝。是否可以授予域用户(没有 root 访问权限)访问 crontab 的权限?如果可以,怎么做?

答案1

Cron 总是使用相同的方法来确定访问权限,不管帐户类型。一张支票是允许计划文件,另一个通过 PAM:

  1. Cron 调用 PAM 来运行 中的“帐户”(会计/授权)堆栈/etc/pam.d/crond
  2. 该文件直接或间接(通过 include/substack)将包含属于您的域客户端的模块 - 例如,pam_sss如果您使用 SSSD,pam_winbind如果您使用 Samba/Winbindd,或者pam_ldap如果您使用 nslcd。
  3. 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 运行,并将生成的用户名包含在允许计划如果它与原始用户名不同(即您应该列出两个版本)。

相关内容