Сценарий запуска с sudo в Ubuntu 16.10

Я должен запустить сценарий и двоичный файл от /usr/bin при запуске с sudo/root полномочиями. Я судил многие руководства от этого форума, но ничто не работало (rc.local и systemd стиль, Выскочка) - возможно, я делаю что-то не так. Моя ОС является Ubuntu GNOME 16.10.

Сценарий был бы чем-то вроде этого

#!/bin/bash
sudo ./usr/bin/myprogram
sudo bash /home/USER/script.bash

И сценарий и программа являются исполняемым файлом. Я просто не знаю оптимальный способ запустить их с sudo при запуске.

Будьте нежны. Я - новый пользователь.

8
задан 4 March 2017 в 16:46

3 ответа

Для приложений командной строки, которые не требуют GUI, достаточно поместить вызов в них в /etc/rc.local , который уже работает как корень, таким образом не нуждается sudo. Ниже мой собственный пример /etc/rc.local который я использую для запуска двух контролирующих сценариев.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/sh/temperature.sh  &
 exit 0

Для приложений GUI необходимо было бы проявить другой подход. Необходимо было бы открыть приложение Startup Applications и добавить следующую команду:

bash -c "sleep 10;gksu /usr/bin/my_vpn_program"

То, что это делает, дает достаточное количество времени GUI для запуска, 10 секунд, затем поднимет диалоговое окно пароля и если Вы введете пароль правильно, то запустит Вашу команду. Эффективно это - мини-сценарий удара. Можно использовать pkexec вместо этого, и некоторые могли бы даже сказать pkexec вместо рекомендуют gksu.

С другой стороны, если Вы не хотите вводить пароль каждый раз, когда можно позволить пользователю, выполняет эту конкретную команду с полномочиями пользователя root без аутентификации. Для этого необходимо отредактировать /etc/sudoers файл. ПРЕДУПРЕЖДЕНИЕ: рекомендуется использовать sudo visudo отредактировать файл от терминала. Ниже пример того, как я использую ту же установку с pm-suspend команда:

# Allow using pm-suspend for my user without password
my_username_here ALL = NOPASSWD: /usr/sbin/pm-suspend

Эта строка должна быть добавлена в конец /etc/sudoers файл и сохраненный. Отметьте, который все еще необходимо добавить sudo или gksu к началу каждой команды, которую Вы настраиваете. Таким образом необходимо было бы использовать то же bash команда я показал ранее.

10
ответ дан 23 November 2019 в 05:35

Решение так просто, Вы пропустили его.:) Поскольку rc.local выполняется корнем, sudo's в Вашем файле совершенно не нужны.

, Другими словами, помещает его в rc.local, как Вы предположили, но опустите sudo из Вашего сценария. Они совершенно не нужны, так как rc.local уже выполняется как корень.

Hope это помогает!

1
ответ дан 23 November 2019 в 05:35

Используйте a crontab опция заставить Ваш сценарий бежать за перезагрузкой,

можно сделать это путем добавления @reboot код в кроне

Откройте crontab пользователем root:

$ sudo crontab -e

Добавьте следующую запись внизу:

@reboot /usr/bin/myprogram

Это сделает то, что Вы хотите.

0
ответ дан 23 November 2019 в 05:35

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

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