![如何防止在 OS X Mountain Lion 中每次更改网络配置时弹出密码?](https://linux22.com/image/1323579/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E5%9C%A8%20OS%20X%20Mountain%20Lion%20%E4%B8%AD%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%94%B9%E7%BD%91%E7%BB%9C%E9%85%8D%E7%BD%AE%E6%97%B6%E5%BC%B9%E5%87%BA%E5%AF%86%E7%A0%81%EF%BC%9F.png)
我在 OS X Lion 下使用了一些网络脚本,这些脚本会自动创建 ssh 连接,然后更改本地计算机上的网络配置以通过 ssh 隧道运行流量。我使用以下 shell 命令更改了网络配置:
networksetup -setsocksfirewallproxy "Wi-Fi" localhost ####
networksetup -setsocksfirewallproxystate "Wi-Fi" on
现在,在 Mountain Lion 下,每次运行脚本时都会要求输入密码,这很烦人。有没有办法让它记住密码,或者绕过密码,或者只是第一次输入密码并让它记住?
答案1
确保您的脚本具有正确的权限和所有者。它应该是 root:wheel,如下所示(wifi 是脚本名称):
lion:~/Downloads napcae$ ls /usr/local/bin/
-rwxr-xr-x 1 root wheel 739 25 Nov 18:35 wifi
您可以通过输入来实现
lion:~/Downloads napcae$ sudo chown root:wheel wifi
现在您可以在脚本中执行 sudo 命令,即
sudo networksetup -setnetworkserviceenabled "Huawei Modem" on;
终端/Finder 应该不再询问密码。希望这能有所帮助。
答案2
不确定从安全角度来看这是否是正确的方法,但它是有效的:
1)将 /usr/sbin/ 中的 networksetup 复制到另一个文件(这样,所有使用它的其他服务在运行时将继续需要密码):
sudo cp /usr/sbin/networksetup /usr/sbin/NewNetConfig
2)在 sudoers 文件中添加此行以在调用 NewNetConfig 时跳过密码:
username ALL=NOPASSWD: /usr/sbin/NewNetConfig
3) 重启。然后使用它来更改你的网络配置,它不应该要求输入密码:
sudo NewNetConfig -setsocksfirewallproxy "Wi-Fi" localhost ####
答案3
我遇到了同样的问题,而是使用服务通过按快捷键来切换代理状态。
将 networksetup 复制到 NewNetConfig 并编辑 /etc/sudoers 后,在 Automator 中创建一个名为“ChangeWiFiProxy”的新服务。添加一个 Shell 脚本并添加此脚本:
STATUS=`NewNetConfig -getsocksfirewallproxy Wi-Fi | grep -c 'Enabled: Y'`
if [ "$STATUS" == "0" ] ; then
sudo NewNetConfig -setsocksfirewallproxystate Wi-Fi on
say on
else
sudo NewNetConfig -setsocksfirewallproxystate Wi-Fi off
say off
fi
然后在“系统首选项 > 键盘 > 键盘快捷键 > 服务”中为其分配一个快捷键,如 Cmd + Option + “;”。
答案4
您可以设置权限suid
,/usr/sbin/networksetup
然后networksetup将以root权限运行,因此您不再需要输入密码。
sudo chmod u+s /usr/sbin/networksetup
关于suid:http://www.linuxnix.com/2011/12/suid-set-suid-linuxunix.html