Мне нужно запустить последовательность команд при запуске. Эта последовательность также требует пароля root. Как я могу это сделать?
Это, в частности, последовательность команд, которые мне нужно выполнить:
virginia@asus-F552CL:~$ cd MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00/
virginia@asus-F552CL:~/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00$ sudo su
[sudo] password for virginia:
root@asus-F552CL:/home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00# ./load.sh
root@asus-F552CL:/home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00# exit
virginia@asus-F552CL:~/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00$
Так как Вы упомянули, что имели необходимость сделать sudo su, я предполагаю, что Вы хотите, чтобы эти команды были выполнены после входа в систему.
Для этого необходимо будет поместить команды в файл сценария, скажем, myCom.sh
. Содержание было бы похоже ниже:
cd MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00/
echo myPassword | sudo -S su && sudo su -c ./load.sh
Примечание, что выход не требуется как каждая команда, выполняется как корень, и сценарий возвращается назад после завершения.
Также "myPassword" должен быть обеспечен в простом тексте.
Тогда Использование менеджер по запуску Ubuntu KDE/для запуска этого сценария. Или Вы могли поместить этот файл непосредственно в ~/.profile
.
, С другой стороны, если Вы хотите выполнить эти команды на запуске, а не входе в систему, Вы могли бы использовать init сценарии. Вы не должны будете использовать sudo su
там, когда все будет работать в корневом контексте.
Можно изменить Ваш файл/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.
cd /home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00
/bin/bash load.sh
exit 0
Проверяют Ваше изменение с этой командой:
sudo /etc/init.d/rc.local start
отметьте следующие моменты:
logger "message"
, Если возможно, я предлагаю, чтобы Вы выполнили свой сценарий как это:
/bin/bash /home/virginia/MT7630E_Wi-Fi_BT_Source_Release_20140625/rt2x00/load.sh
На Ubuntu runlevel запускаются, когда filesystem and static-network-up
событие имеет место. Если необходимо запустить load.sh в конкретном событии, чем лучше, определяют новомодная задача .