不使用 sudo 授予帐户 root 访问权限的最佳方法是什么?

不使用 sudo 授予帐户 root 访问权限的最佳方法是什么?

我有一台 HP-UX 服务器,我需要为应用程序创建一个特殊的用户帐户,以便与之交互,并且该帐户必须具有完全的 root 权限。Sudo 不是一种选择。我能想到的唯一办法是为帐户分配 UID 0。这是否可以让帐户具有 root 功能?有没有更好的方法可以在不使用 sudo 的情况下做到这一点?

答案1

创建另一个 uid 为 0 的帐户可能会引起混乱,甚至可能导致行为中断。

我不愿意运行任何无法通过sudo或运行的帐户setuid

sudo当系统连接到帐户时, 有多种使用方式,例如:

  • 使用ssh,可以指定在连接时运行的脚本。
  • 使用配置文件在启动交互式会话时运行 sudo。
  • 在运行请求之前使用包装脚本来提升权限。

我运行过各种需要 root 权限才能访问所有文件的备份程序。它们都以受限访问权限进行连接,通常通过非 root 帐户进行连接。

sudo可以配置为无需密码即可运行命令。创建一个包装器脚本并提升权限root以通过sudo该脚本运行所需命令应该很简单。

设置了 setuid 位的程序以拥有它们的用户身份运行。这通常更安全,除非程序允许访问不受限制的 shell。

答案2

我不建议尝试将 UID 0 分配给另一个帐户。系统需要有 1 个 root 用户。

使用sudo无需密码即可运行命令是一种选择(就我个人而言,我不太喜欢必须以 root 身份运行的代码;但是你有它,所以让我们现实一点。)对此有一些注意事项:

  1. 在您的/etc/sudoers文件中,确保该NOPASSWORD选项是该用户的最后一行。在读取 sudoers 时,最后一行将覆盖前面的行。

  2. 指定此用户所需目录的绝对路径。

  3. 包括/etc/sudoersDefaults env_reset环境重置为默认变量。

在 /etc/sudoers 中:

...
##
Defaults env_reset
...
##
app_user ALL=NOPASSWORD : /path/to/application, /usr/bin/su - root
...

(将路径更改为su以匹配您的 HP-UX 位置。)

我已经有一段时间没有使用 HP-UX 了,因此请使用现在文件中的内容来验证格式/etc/sudoers

答案3

如果不破坏一切,您就不能分配另一个帐户 UID 0。

正如 Rich Homolka 在评论中指出的那样,内核中的代码在需要检查 root 用户时会明确检查 uid 0,这意味着 root 始终至少具有 uid 0。

https://superuser.com/questions/626843/does-the-root-account-always-have-uid-gid-0

另外,我希望您不要将此服务器用于其他任何用途,因为在没有通过 sudo 进行最低限度限制的情况下授予应用程序完全 root 权限是非常危险的。尤其是像您所说的通过网络连接的应用程序。

相关内容