如何防止在 OS X Mountain Lion 中每次更改网络配置时弹出密码?

如何防止在 OS X Mountain Lion 中每次更改网络配置时弹出密码?

我在 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

相关内容