如何在不允许 root 访问的情况下允许一个用户 su 到另一个用户?

gha*_*per 63 security linux sudo

我想允许某些用户 su 到另一个用户帐户而不必知道该帐户的密码,但不允许访问任何其他用户帐户(即 root)。
例如,我想允许 DBA Tom su 到 oracle 用户,而不是 tomcat 用户或 root。

我想这可以通过 /etc/sudoers 文件来完成 - 有可能吗?如果是这样,如何?

Bre*_*nt 55

是的,这是可能的。

/etc/sudoers 中,紧跟在 equals 后面的项目是允许命令执行的用户。

tom  ALL=(oracle) /bin/chown tom *
Run Code Online (Sandbox Code Playgroud)

用户 (tom) 可以输入sudo -u oracle /bin/chown tom /home/oracle/oraclefile

  • sudo -u oracle su - 怎么样?这会给他一个以 oracle 用户身份打开的 shell。那是你要的吗? (13认同)
  • 这将允许 Tom 以 oracle 身份运行命令,但实际上不会成为 oracle 用户 (6认同)
  • 类似于以下内容的方法会起作用: sudo -u oracle -s 或 sudo -u oracle -i (-s 表示外壳,-i 表示登录 - 执行登录外壳)。不幸的是,我不知道您会在 /etc/sudoers 中使用什么来限制用户,但是鉴于您允许他们访问 shell,您可能只想像其他人提到的那样执行 tom ALL=(oracle) ALL 。如果他们可以运行 shell,您可能不关心限制他们可以运行的命令。 (4认同)
  • 理想情况下,您是否不希望 Tom 以 oracle 用户身份运行命令,而不是成为 oracle 用户?区别很小,但它提供了一个很好的审计日志,而不必使用审计 shell。 (2认同)

Kje*_*sen 46

添加到您的 /etc/sudoers 类似

tom ALL=(oracle) ALL
Run Code Online (Sandbox Code Playgroud)

然后用户 tom 应该能够使用 sudo 以用户 oracle 的身份运行带有 -u 选项的东西,而不会让 tom

即以用户 oracle 身份获取 shell(好吧,鉴于您的 sudo 足够新,可以使用 -i 选项)。

sudo -u oracle -i
Run Code Online (Sandbox Code Playgroud)

  • 我不得不使用语法 `tom ALL=(oracle)NOPASSWD:ALL` 来让 sudo 不询问密码 (8认同)

小智 10

要仅提供问题中的功能,请将以下内容添加到 /etc/sudoers:

tom            ALL=(oracle)    /bin/bash
Run Code Online (Sandbox Code Playgroud)

然后汤姆可以:

sudo -u oracle bash -i
Run Code Online (Sandbox Code Playgroud)