Macでプロキシを変更するために使用する小さなアプリがあります。 networksetup
コマンドを使用してプロキシ設定を設定しますが、これはLionで正常に機能しました。ただし、Mountain Lionでは、プロキシ設定を変更するたびに管理者パスワードを要求されます。
networksetupは、システムネットワーク構成を変更しようとしています。これを許可するには、パスワードを入力してください。
これを防ぐ方法はありますか?または、Cocoaのプロキシ設定を変更するためのより良い方法はありますか? Lionでは、パスワードを入力したときにシステムが記憶していたため、再起動後にのみ認証する必要がありました。
また、Chromeでは、ProxySwitchyプラグインが同じ動作をすることに気づきました。それは言う
scutilは、システムネットワーク構成を変更しようとしています。これを許可するには、パスワードを入力してください。
Sudoを使用して、このコマンドを実行できるようにするユーザーにパスワードなしのルールを追加して、これを実現します。
Visudoを実行してエディターを起動し、/ etc/sudoersファイルを変更します
visudo -f /etc/sudoers
ファイルの最後に、次の行を追加します
$USERNAME ALL=(root) NOPASSWD: /usr/sbin/networksetup
$ USERNAMEの場合は、networksetupコマンドへのパスワードなしのアクセスを提供する実際のユーザー名を入力します。
を実行してユーザーとしてテストします
/usr/bin/Sudo /usr/sbin/networksetup -version
正しく設定されている場合はバージョンメッセージをエコーし、間違えた場合はパスワードの入力を求めます。
これは、rootとしてコマンドを実行できるユーザーを特定のユーザーに制限するため、はるかに安全なルートです。networksetupバイナリ自体をsuid rootに設定すると、システムにログインするすべてのユーザーがネットワーク構成を変更できるようになります。 OSXはマルチユーザーオペレーティングシステムであり、1つのように扱う必要があります。
本当に妄想的な場合は、/ usr/bin/Sudoを呼び出すときにもフルパスを使用するようにしてください。
権限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
私もこれを理解しようとしています。私はmanページがこれに言及していることに気づきました:
パスワードを取得するフラグは、パスワードの代わりに「-」を受け入れて、stdinからパスワードを読み取る必要があることを示します。
使い方はよくわかりませんが、可能だと思います...