在没有 SUDO 且不以 root 用户身份的情况下以 root 权限运行命令

在没有 SUDO 且不以 root 用户身份的情况下以 root 权限运行命令

如何运行需要非 root 用户 root 权限的命令(例如 iftop 或类似命令)并没有前面用SUDO吗?

或者,如何在不成为 root 的情况下向用户授予 root 权限?

理想情况下,我想按以下方式运行 iftop 命令:

[user@pc]$ iftop

不是喜欢:

[user@pc]$ sudo iftop

[root@pc]$ iftop

答案1

如何运行需要非 root 用户 root 权限且不使用 SUDO 的命令(例如 iftop 或类似命令)?

至少可以使用两种方法来允许非 root 用户使用 iftop,但这两种方法都需要 root 访问权限。

更安全的方法是将cap_net_raw能力分配给 iftop 二进制文件:

sudo setcap cap_net_raw+ep "$(command -v iftop)"

不太安全的方法是分配 setuid root:

sudo chmod +s "$(command -v iftop)"

或者,如何在不成为 root 的情况下向用户授予 root 权限?

你不能。

答案2

这可以使用设置用户 ID 文件属性来完成:

# chmod u+s /usr/bin/sleep
# sleep 1000&
# ps aux | grep -w sleep | grep -v grep
root   1234  0.0  0.0   ...  0:00 sleep 1000

这是一个很大的安全风险!

如果您希望以其他人的身份运行某些东西(而不是root像这里一样),这是可能的:

# chown pulse /usr/bin/sleep
# chmod u+s /usr/bin/sleep
# sleep 1000&
# ps aux | grep -w sleep | grep -v grep
pulse   1234  0.0  0.0   ...  0:00 sleep 1000

如果您不是 root,您可以允许其他人像您一样运行命令:

# id -nu
john
# ls -l a.out
-rwxr-x--- 1 john users   50923 Mar 25 10:17 a.out
# chmod go+rx,u+s a.out
# ls -l a.out
-rwsr-xr-x 1 john users   50923 Mar 25 10:17 a.out

(请注意“rwx...”中“x”所在的“s”。这意味着设置了设置用户 ID 标志)

然后,如jane

# id -nu
jane
# ~john/a.out

该命令a.out将作为 运行john

相关内容