我正在使用一个名为Hostbuddy的应用程序来管理我的hosts文件中的条目。它工作得很好,唯一的问题是每次使用时都要求我输入密码,这会给你带来很多不便。我如何永久地给予Hostbuddy所需的许可?它要求输入密码的两件事是修改hosts文件并刷新我的DNS缓存。
PS,我理解这个的安全含义,我相信应用程序。
我正在使用一个名为Hostbuddy的应用程序来管理我的hosts文件中的条目。它工作得很好,唯一的问题是每次使用时都要求我输入密码,这会给你带来很多不便。我如何永久地给予Hostbuddy所需的许可?它要求输入密码的两件事是修改hosts文件并刷新我的DNS缓存。
PS,我理解这个的安全含义,我相信应用程序。
Answers:
我不认为这是需要密码的应用程序,而是主机文件本身。主机文件由root拥有,需要密码才能进行编辑。 Hostbuddy可能只是要求输入密码才能修改文件。解决此问题的方法是获取文件的所有权(由于安全原因,不建议使用此文件)。另一种方法是以管理员身份运行Hostbuddy(但我相信这需要一个密码才能启动它)。
如果您出于某种原因希望为了方便而承担安全风险,则应取得主机文件的所有权或以管理员身份运行Hostbuddy。
编辑:实施
为了实现这一点,我相信你必须在应用程序上设置setuid位。为此,我建议创建一个只有您所在的新用户组,并使用它来获得对该应用的root访问权限。要执行此操作,请先打开“系统偏好设置”并转到“用户和组”。您将要通过选择窗口左下角的“+”按钮来创建一个新组。继续创建一个名为'HostBuddy'的新组,没有这样的引号:
接下来,您需要将自己设置为此组的成员,如下所示:
最后,我们需要在终端内做一些工作。继续打开Terminal.app并导航到HostBuddy所在的位置(可能是/ Applications),如下所示:
执行此操作后,我们在您的组名下为应用程序本身设置setuid位,并使用另外两个命令设置权限(请记住它是cAsE SenSiTIve!):
这应该允许您以root身份单击并运行应用程序,而无需密码。由于我们在组合中添加了一个组,这也意味着您计算机上的其他用户没有该特权。他们每次都必须输入密码。只有您的特定用户(或HostBuddy组中的其他用户)才能获得无密码体验。
-R
以递归方式执行命令,即 sudo chown -R
.... sudo chmod -R
然后放一个尾随斜线 .app/
sudo chown -R root:HostBuddy hostbuddy.app/
sudo chmod -R 4750 hostbuddy.app/