防止网络设置询问密码

时间:2012-08-05 19:18:44

标签: macos cocoa proxy passwords osx-mountain-lion

我有一个小应用程序,用于更改Mac上的代理。它使用networksetup命令设置代理设置,并且在Lion上运行正常。但是在Mountain Lion上,它每次更改代理设置时都会询问管理员密码。

  

networksetup正在尝试修改系统网络配置。输入密码以允许此操作。

有没有办法防止这种情况发生?或者有更好的方法来更改Cocoa中的代理设置吗?在Lion上,当我输入密码时,系统会记住,因此我必须在重新启动后进行身份验证。

我还注意到在Chrome中,Proxy Switchy插件会遇到相同的行为。它说

  

scutil正在尝试修改系统网络配置。输入密码以允许此操作。

3 个答案:

答案 0 :(得分:13)

使用sudo通过为您希望能够执行此命令的用户添加无密码规则来实现此目的。

  • 运行visudo以启动编辑器以修改/ etc / sudoers文件

    visudo -f /etc/sudoers
    
  • 在文件末尾添加行

    $USERNAME ALL=(root) NOPASSWD: /usr/sbin/networksetup
    

在$ USERNAME的位置,将您想要提供的实际用户名提供给netsetword访问networksetup命令。

  • 保存文件
  • 通过运行

    将其作为您的用户进行测试
    /usr/bin/sudo /usr/sbin/networksetup -version
    
如果版本消息设置正确,它将回显版本消息,如果您犯了错误,则会提示输入密码。

这是一个更安全的路由,因为它限制了谁可以以root身份运行命令到特定用户,设置networksetup二进制文件本身suid root意味着登录系统的任何人都可以修改您的网络配置。 OSX是一个多用户操作系统,它应该被视为一个。

如果你真的是偏执狂,请确保在调用/ usr / bin / sudo时使用完整路径。

答案 1 :(得分:7)

您可以将权限suid设置为/usr/sbin/networksetup,然后netsetup将以root权限运行,因此您无需再输入密码。

sudo chmod u+s /usr/sbin/networksetup

关于suid:http://www.linuxnix.com/2011/12/suid-set-suid-linuxunix.html

答案 2 :(得分:0)

我一直试图解决这个问题。我注意到手册页提到了这个:

  

任何接受密码的标志都会接受“ - ”代替密码,表示它应该从标准输入读取密码。

不确定如何使用它但似乎有可能......