Подтвердить что ты не робот

Предотвратить попытку подключения к сети

У меня есть небольшое приложение, которое я использую для изменения прокси на моем Mac. Он использует команду networksetup для установки параметров прокси-сервера, и это отлично работает на Lion. Однако на Mountain Lion он запрашивает пароль администратора каждый раз, когда меняю настройки прокси-сервера.

networksetup пытается изменить конфигурацию сетевой системы. Введите свой пароль, чтобы разрешить это.

Есть ли способ предотвратить это? Или есть лучший способ изменить настройки прокси-сервера в Cocoa? На Lion система помнила, когда я вставлял пароль, поэтому мне пришлось пройти проверку подлинности только после перезагрузки.

Я также заметил, что в Chrome плагин Proxy Switchy страдает от такого же поведения. В нем говорится:

scutil пытается изменить конфигурацию сетевой системы. Введите свой пароль, чтобы разрешить это.

4b9b3361

Ответ 1

Используйте sudo для этого, добавив правило без пароля для пользователя, которому вы хотите выполнить эту команду.

  • Запустите visudo, чтобы запустить редактор, чтобы изменить файл /etc/sudoers

    visudo -f /etc/sudoers
    
  • В конце файла добавьте строку

    $USERNAME ALL=(root) NOPASSWD: /usr/sbin/networksetup
    

Где $USERNAME, укажите фактическое имя пользователя, которое вы хотите предоставить доступ к napassword команде networksetup.

  • Сохранить файл
  • Проверьте его как пользователя, запустив

    /usr/bin/sudo /usr/sbin/networksetup -version
    

который будет эхо сообщения версии, если он настроен правильно, или введите пароль, если вы допустили ошибку.

Это гораздо более безопасный маршрут, поскольку он ограничивает того, кто может запускать команду от имени root до определенного пользователя, устанавливая бинарную систему networksetup suid root, что означает, что любой, кто войдет в систему, может изменить вашу конфигурацию сети. OSX - многопользовательская операционная система, и ее следует рассматривать как один.

Если вы действительно параноик, убедитесь, что вы используете полный путь при вызове/usr/bin/sudo.

Ответ 2

Вы можете установить разрешение 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

Ответ 3

Я тоже пытался понять это. Я заметил, что на странице man упоминается следующее:

Любой флаг, который принимает пароль, будет принимать "-" вместо пароля, чтобы указать, что он должен читать пароль из stdin.

Не уверен, как его использовать, но кажется возможным...