有没有办法删除 Linux 中特定命令的 root 要求?如果有,该怎么做?

有没有办法删除 Linux 中特定命令的 root 要求?如果有,该怎么做?

我正在使用 Ubuntu 12.04 LTS,我正在尝试使特定的命令

dhclient

不需要 root 权限。我做了一些研究,结果让我相信我可以解锁“su”用户,这样就不需要 root 权限,但我担心这样会破坏某些东西。

也许我问的是两个不同的问题:

  1. 所有不需要 root 权限的命令位于我的操作系统的哪里?

  2. 我可以将此命令移到那里吗?

对我来说,任何方法都可以,而且说实话,我甚至不确定普通用户的命令是否与其他命令有区别。

答案1

最好的方法是使用 sudo,它可以非常灵活地配置哪些用户可以执行哪些命令。使用visudo编辑/etc/sudoers(切勿直接编辑此文件 - 如果您犯了错误,您将完全被锁定)。以下条目将允许用户无需密码bob即可运行。dhclient

bob ALL = (root) NOPASSWD: /sbin/dhclient

鲍勃会sudo dhclient及时运行以执行它。

答案2

特定用户是否能够成功执行程序(二进制文件或脚本)取决于两件事:

  • 用户需要该文件的执行权限。

    这不是一个问题:ls -l表明任何用户都可以执行/sbin/dhclient

  • 用户需要对程序访问的文件具有读、写和/或执行的权限。

    这部分更加棘手且更加危险,因为它可能涉及更改许多文件的权限。

有关详细信息,请参阅For more information, seeChmod - 维基百科

以 root 权限执行命令的正常方式是sudo。从手册页

须藤允许被许可的用户执行命令以超级用户或其他用户身份,如sudoers文件。实际和有效的 uid 和 gid 设置为与 passwd 文件中指定的目标用户相匹配,并且组向量根据组文件进行初始化(除非-P选项已指定)。如果调用用户是 root 或者目标用户与调用用户相同,则不需要密码。否则,须藤默认情况下,要求用户使用密码进行身份验证(注意:在默认配置中,这是用户的密码,而不是 root 密码)。用户通过身份验证后,时间戳会更新,然后用户可以在短时间内(5 分钟,除非在sudoers)。

您特定情况下的基本语法是:

sudo dhclient

关于您的其他问题:

1.​ 所有不需要 root 权限的命令位于我的操作系统的哪里?

所有用户的大多数二进制文件位于/bin/usr/bin和内/usr/local/bin

大多数系统二进制文件(需要 root 权限)位于 中/sbin

这只是一条经验法则。你可以将二进制文件放在任何你想要的地方。

也可以看看:文件系统层次标准

2. 我可以将此命令移动至那里吗?

除了可能破坏某些东西之外,这根本不会产生任何影响。

相关内容