我想允许某些用户 su 到另一个用户帐户,而不必知道该帐户的密码,但不允许访问任何其他用户帐户(即 root)。
例如,我想允许 DBA Tom su 到 oracle 用户,但不允许到 tomcat 用户或 root。
我想这可以通过 /etc/sudoers 文件来完成 - 可以吗? 如果可以,怎么做?
答案1
是的,这是可能的。
在/etc/sudoers等号后面紧接着的项目是允许执行该命令的用户。
tom ALL=(oracle) /bin/chown tom *
用户(tom)可以输入sudo -u oracle /bin/chown tom /home/oracle/oraclefile
答案2
在您的 /etc/sudoers 中添加类似的内容
tom ALL=(oracle) ALL
然后,用户 tom 应该能够使用 sudo 以用户 oracle 的身份使用 -u 选项运行程序,而无需让 tom
即以用户 oracle 身份获取 shell(好吧,假设您的 sudo 足够新,可以有 -i 选项)。
sudo -u oracle -i
答案3
为了仅提供问题中的功能,请将以下内容添加到 /etc/sudoers:
tom ALL=(oracle) /bin/bash
然后汤姆可以:
sudo -u oracle bash -i
答案4
例如,我想允许 DBA Tom 以 su 方式成为 oracle 用户,但不允许以 tomcat 用户或 root 用户身份登录。
我最近需要对一个系统执行此操作,但很难找到我几年前使用的替代设置的记录,该记录也允许该语法su <user>
。在我的处境下,我需要允许多个用户访问su
特定用户。
创建一个组,addgroup <groupName>
其他用户无需密码即可su
访问该组。然后将该组添加到您希望能够访问su
该组的每个用户:(
usermod -a -G <groupName> <userName>
或usermod -a -G oracle tom
)。组更改可能要到下次登录才会生效。
注意:就您而言,您已经拥有该组,因为oracle
当您使用 创建 oracle 用户时已经创建了该组adduser oracle
。
现在编辑/etc/pam.d/su
以下内容:
# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so
..添加身份验证规则行,使该部分如下所示:
# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so
auth [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth sufficient pam_succeed_if.so use_uid user ingroup <groupName>
在这种情况下,替换<groupName>
为。这将允许属于的oracle
任何用户<groupName>
su <groupName>
现在tom
可以su oracle
,如果您需要授予其他用户相同的访问权限,请将他们添加到oracle
组中。
类似问题这里