我正在使用 Ubuntu 12.04 LTS,我正在尝试使特定的命令
dhclient
不需要 root 权限。我做了一些研究,结果让我相信我可以解锁“su”用户,这样就不需要 root 权限,但我担心这样会破坏某些东西。
也许我问的是两个不同的问题:
所有不需要 root 权限的命令位于我的操作系统的哪里?
我可以将此命令移到那里吗?
对我来说,任何方法都可以,而且说实话,我甚至不确定普通用户的命令是否与其他命令有区别。
答案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. 我可以将此命令移动至那里吗?
除了可能破坏某些东西之外,这根本不会产生任何影响。