Я должен запустить сценарий и двоичный файл от /usr/bin
при запуске с sudo/root полномочиями. Я судил многие руководства от этого форума, но ничто не работало (rc.local
и systemd
стиль, Выскочка) - возможно, я делаю что-то не так. Моя ОС является Ubuntu GNOME 16.10.
Сценарий был бы чем-то вроде этого
#!/bin/bash
sudo ./usr/bin/myprogram
sudo bash /home/USER/script.bash
И сценарий и программа являются исполняемым файлом. Я просто не знаю оптимальный способ запустить их с sudo при запуске.
Будьте нежны. Я - новый пользователь.
Для приложений командной строки, которые не требуют 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
команда я показал ранее.
Решение так просто, Вы пропустили его.:) Поскольку rc.local выполняется корнем, sudo's в Вашем файле совершенно не нужны.
, Другими словами, помещает его в rc.local, как Вы предположили, но опустите sudo
из Вашего сценария. Они совершенно не нужны, так как rc.local уже выполняется как корень.
Hope это помогает!
Используйте a crontab
опция заставить Ваш сценарий бежать за перезагрузкой,
можно сделать это путем добавления @reboot
код в кроне
Откройте crontab пользователем root:
$ sudo crontab -e
Добавьте следующую запись внизу:
@reboot /usr/bin/myprogram
Это сделает то, что Вы хотите.