以 root 身份运行 select shell 命令而不授予用户 sudo 权限?

以 root 身份运行 select shell 命令而不授予用户 sudo 权限?

我正在尝试运行三个单独的 nmcli 命令

nmcli connection down config-AP

nmcli connection up config-AP

nmcli device wifi hotspot con-name config-AP ssid device band bg password password

如果这些不被称为 root,它们就会超时

Error: Timeout 10 sec expired.

如何允许这些命令运行而不将用户添加到 sudoers 文件中?

答案1

如果您有一个命令不会造成任何损害,但需要 root 权限,您可以将其更改为具有“设置用户 id”(设置 uid 或 suid)属性。这是一个例子:

ls -l /bin/chsh
-rwsr-xr-x 1 root root 23376 Mar 22 21:23 /bin/chsh*

该文件具有“s”标签,表明在执行期间它将采用root(第三列)用户 ID。

然而,这有潜在的危险,如果该命令本身没有被编程为处理被调用的 suid 0,则能够调用该命令的本地攻击者可能会接管您的系统。您已收到警告。

话虽如此,你可以这样做:

chmod u+s,a-w /usr/bin/nmcli

(如有必要,请更改路径,例如/bin/nmcli根据您的系统)

如果您希望限制人们能够调用(现在很危险)命令,您可以使其仅可供特殊组访问,例如通过

chgrp john /usr/bin/nmcli
chmod o= /usr/bin/nmcli

这样,只有组中的某个人john(和 root)可以调用该命令。理想情况下,使用只有您的用户所在的组。

相关内容