我怎样才能允许一个用户通过 su 访问另一个用户,但不允许 root 访问?

我怎样才能允许一个用户通过 su 访问另一个用户,但不允许 root 访问?

我想允许某些用户 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组中。

类似问题这里

相关内容