Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 防止网络安装程序询问密码_Macos_Cocoa_Proxy_Passwords_Osx Mountain Lion - Fatal编程技术网

Macos 防止网络安装程序询问密码

Macos 防止网络安装程序询问密码,macos,cocoa,proxy,passwords,osx-mountain-lion,Macos,Cocoa,Proxy,Passwords,Osx Mountain Lion,我有一个小应用,我用它来改变我Mac上的代理。它使用networksetup命令来设置代理设置,这在Lion上运行良好。但在Mountain Lion上,每次我更改代理设置时,它都会询问管理员密码 networksetup正在尝试修改系统网络配置。键入您的密码以允许此操作 有没有办法防止这种情况发生?还是有更好的方法来更改Cocoa中的代理设置?在Lion上,系统会记住我输入密码的时间,因此只有在重新启动后才能进行身份验证 我还注意到,在Chrome中,Proxy Switchy插件也有同样的行

我有一个小应用,我用它来改变我Mac上的代理。它使用
networksetup
命令来设置代理设置,这在Lion上运行良好。但在Mountain Lion上,每次我更改代理设置时,它都会询问管理员密码

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

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

我还注意到,在Chrome中,Proxy Switchy插件也有同样的行为。上面说

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


我也一直在想办法。我注意到手册页提到:

任何接受密码的标志都将接受“-”来代替密码,以指示它应该从stdin读取密码


不太清楚如何使用它,但似乎是可能的…

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

sudo chmod u+s /usr/sbin/networksetup

关于suid:

使用sudo为您希望能够执行此命令的用户添加无密码规则来完成此操作

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

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

    $USERNAME ALL=(root) NOPASSWD: /usr/sbin/networksetup
    
在$USERNAME的位置,输入要为networksetup命令提供nopassword访问权限的实际用户名

  • 保存文件
  • 通过运行

    /usr/bin/sudo /usr/sbin/networksetup -version
    
如果设置正确,将回显版本消息;如果您出错,将提示输入密码

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


如果您真的有妄想症,请确保在调用/usr/bin/sudo时也使用完整路径。

您误解了这个问题,您所说的是为networksetup提供密码,以获得预期的命令。OP的问题是networksetup需要由具有管理员权限的用户运行。甚至不是networksetup在这里要求输入密码,但是身份验证管理器。这似乎在OS X 10.8上起作用,但我担心如果我使用Disk Util修复权限,此修复程序将消失。这给了我一个错误
cp:/Library/Preferences/SystemConfiguration/Preferences.plist.old:权限被拒绝
不设置二进制文件suid-这是一个糟糕的做法,也是sudo在第一个版本中存在的原因地点。我已经为这个问题添加了一个基于sudo的答案,以展示这个问题更安全的解决方案。但是sudo并没有修复这个错误-但是10.10和10.11中的新UAC模式将其删除。链接断开请修复更多信息,请。我尝试了上面的方法(假设我的管理员用户名是'fred'),添加了{fred ALL=(root)NOPASSWD:/usr/sbin/networksetup},结果在测试中出现了一系列错误(NB sbin not bin)。我应该如何设置命令的格式?我已经编辑了答案以修复路径,并使测试更清晰。如果您在没有任何参数的情况下调用networksetup,那么您将得到一长页的使用提示。但这确实证明了它在没有密码的情况下可以工作。这些说明现在会产生此错误“sudo:parse error in/etc/sudoers in/48行附近sudo:no valid sudoers sources found,quitting”我们现在如何编辑文件?使用visudo编辑文件。它将确保文件没有任何错误。我已经尝试过了,但仍然不断得到提示(尝试在OSX上安装私有Internet访问客户端),尽管版本检查按预期工作。值得一提的是,我在El Capitan上——网络设置的位置是否改变了?