如何运行需要非 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
。