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

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

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

Чтобы уточнить, я не хочу запускать команду при загрузке, я ищу, чтобы запустить команда при входе в систему. Однако этот вопрос уместен, но я попытался добавить exec airvpn в /etc/rc.local, и ничего не происходит при входе в систему.

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

3 ответа

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

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

setuid

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

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

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

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

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

и сохранить его в каталоге /etc/sudoers.d. Вероятно, рекомендуется использовать команду chmod, чтобы установить права доступа к файлам на 0440. Вы можете сделать это, запустив (с правами root) chmod 0440 file, заменив «файл» на имя вновь созданного файла.

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

О нет!

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

2
ответ дан 22 May 2018 в 17:41

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

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

setuid

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

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

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

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

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

и сохранить его в каталоге /etc/sudoers.d. Вероятно, рекомендуется использовать команду chmod, чтобы установить права доступа к файлам на 0440. Вы можете сделать это, запустив (с правами root) chmod 0440 file, заменив «файл» на имя вновь созданного файла.

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

О нет!

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

2
ответ дан 18 July 2018 в 05:30

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

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

setuid

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

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

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

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

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

и сохранить его в каталоге /etc/sudoers.d. Вероятно, рекомендуется использовать команду chmod, чтобы установить права доступа к файлам на 0440. Вы можете сделать это, запустив (с правами root) chmod 0440 file, заменив «файл» на имя вновь созданного файла.

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

О нет!

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

2
ответ дан 24 July 2018 в 18:20

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

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