Как запустить приложение автоматического запуска как корень?

Я в настоящее время использую применение VPN, которое требует административных привилегий, и я добавил приложение на свой автоматический запуск. Однако каждый раз, когда я вхожу в систему, меня будут всегда просить ввести мой пароль для предоставления разрешений к этому приложению, который я очень избыточный, так как я просто использовал тот же пароль для входа в систему.

Есть ли так или иначе, у меня может быть это приложение, автоматически запускаются без обязанности, вводят мой пароль? Я уже попытался делать команду автоматического запуска sudo airvpn, но это заставляет приложение не открываться вообще.

Для разъяснения я не надеюсь выполнять команду на начальной загрузке, я надеюсь выполнять команду при входе в систему. Этот вопрос является актуальным, однако, я попытался добавить exec airvpn кому: /etc/rc.local, и ничего не происходит на входе в систему.

2
задан 10 October 2017 в 20:02

1 ответ

В этом экземпляре Вы могли бы хотеть избегать использования sudo, так как это может только попросить у Вас Вашего пароля от терминала, который Вы, кажется, не используете. Вместо этого необходимо использовать gksudo или gksu. Оба потребуют, чтобы Вы ввели свой пароль по умолчанию, но это может быть изменено (см. ниже). Или, можно использовать policykit для запущения программы как корневого использования pkexec airvpn. Это также требует пароля.

Если Вы не хотите вводить свой пароль каждый раз, вот некоторые подсказки относительно того, как выполнить программу как корень, не вводя Ваш пароль.

setuid

Если airvpn исполняемый файл является двоичным файлом (в противоположность текстовому файлу), необходимо смочь использовать команду chmod для изменения полномочий файла активировать setuid режим, подразумевая, что это будет всегда работать как пользователь, который владеет им (который должен быть корнем). Это не потребует пароля и не потребует, чтобы Вы сделали любой из шагов ниже. Это, однако, потребует, чтобы Вы перешли к пути где airvpn исполняемый файл расположен и выполнен chmod u+s airvpn как корень. Однако этот прием не работает с текстовыми файлами (программы Python, сценарии оболочки, и т.д.). Кроме того, если Вы когда-либо обновляете этот файл, необходимо сделать это снова. И снова в следующий раз Вы обновляете его. И снова...

Сделайте a sudo файл конфигурации

BTW, sudo (и следовательно gksudo и gksu, который оба используют те же конфигурации как sudo) и policykit (который может выполнить программу как корневое использование pkexec) может оба быть запрограммирован для запущения программы без потребности ввести пароль. IDK, как сделать это с policykit, но я могу учить Вас, как достигнуть этого с sudo. Перед продолжением у Вас должно быть корневое выполнение оболочки в случае, если что-то идет не так, как надо (можно потерять способность использовать sudo вообще посмотрите ниже). Создайте текстовый файл в /etc/sudoers.d каталог. Можно назвать его вообще, Вы хотите, пока это не имеет a . символ, и не заканчивается a ~ символ.

Прежде чем я продолжу, я должен предупредить Вас, что необходимо будет знать путь к Вашему airvpn исполняемый файл. Если Вы входите type airvpn в Ваш терминал это должно сказать Вам, где этот файл. Принятие это /usr/bin/airvpn, можно ввести:

    %admin ALL = NOPASSWD:/usr/bin/airvpn

и сохраните его в /etc/sudoers.d каталог. Это - вероятно, хорошая идея использовать chmod управляйте для установки полномочий файла на 0440. Можно сделать это путем выполнения (как корень) chmod 0440 file, замена "файла" с названием недавно созданного файла.

Теперь, откройте новый терминал и протестируйте эту новую конфигурацию путем выполнения gksudo airvpn. (Причина, которая "новое" слово полужирным, состоит в том потому что sudo/gksudo не могли бы попросить Вы пароль, если Вы уже выполнили a sudo/gksudo команда в существующем терминале, даже если Вы на самом деле не настроили sudo постараться не просить у Вас пароль.), Если Вы смогли сделать это в новом терминале, Вы успешно позволили выполниться airvpn без пароля. Теперь все, что необходимо сделать, изменить объект запуска для выполнения gksu airvpn или gksudo airvpn, и Вы будете хороши для движения. Это будет работать независимо от того, является ли исполняемый файл двоичным файлом или текстовым файлом. Кроме того, необходимо только должны быть сделать это однажды, независимо от того, как часто Вы обновляете эту программу.

О нет! Это не работало, и теперь sudo дает мне ошибки!

Если что-то идет не так, как надо, и Вы теряете свою способность использовать sudo/gksudo/gksu для выполнения чего-либо как корня можно удалить недавно созданный файл, и sudo должен вести себя, как он сделал прежде. (Помните, когда я советовал Вам поддерживать корневую оболочку в рабочем состоянии? Вам, вероятно, будет нужен он для удаления того файла. Конечно, Вы могли выполнить корневую оболочку путем выполнения pkexec su, и затем используйте это для удаления файла.)

2
ответ дан 2 December 2019 в 03:36

Другие вопросы по тегам:

Похожие вопросы: