web-dev-qa-db-ja.com

networksetupがパスワードを要求しないようにする

Macでプロキシを変更するために使用する小さなアプリがあります。 networksetupコマンドを使用してプロキシ設定を設定しますが、これはLionで正常に機能しました。ただし、Mountain Lionでは、プロキシ設定を変更するたびに管理者パスワードを要求されます。

networksetupは、システムネットワーク構成を変更しようとしています。これを許可するには、パスワードを入力してください。

これを防ぐ方法はありますか?または、Cocoaのプロキシ設定を変更するためのより良い方法はありますか? Lionでは、パスワードを入力したときにシステムが記憶していたため、再起動後にのみ認証する必要がありました。

また、Chromeでは、ProxySwitchyプラグインが同じ動作をすることに気づきました。それは言う

scutilは、システムネットワーク構成を変更しようとしています。これを許可するには、パスワードを入力してください。

25
Lauri Koskela

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を呼び出すときにもフルパスを使用するようにしてください。

13

権限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

7
user805627

私もこれを理解しようとしています。私はmanページがこれに言及していることに気づきました:

パスワードを取得するフラグは、パスワードの代わりに「-」を受け入れて、stdinからパスワードを読み取る必要があることを示します。

使い方はよくわかりませんが、可能だと思います...

0
user1630543