Я новичок в Ubuntu и Баш сценариев, но я только что сделал runUpdates.sh
и добавил это к моему .profile
, чтобы запустить его:Как сделать скрипт запуска команды, как корень
if [ -f "$HOME/bin/runUpdates.sh" ]; then
. "$HOME/bin/runUpdates.sh"
fi
Проблема у меня is, я хочу, чтобы скрипт работал, как если бы root выполнял его (потому что я не хочу вводить пароль sudo)
Я нашел несколько мест, которые я должен был бы сделать sudo chown root.root <my script>
и sudo chmod 4755 <my script>
, и когда я запускаю он должен работать от root. Но это не так ...
Сценарий выглядит хорошо для меня. Что мне не хватает? -rwxr-xr-x 1 root root 851 Mar 23 21:14 runUpdates.sh*
Не могли бы вы помочь мне запустить команды в этом скрипте как root? Я действительно не хочу менять файл sudors, я просто хочу запустить команды в этом скрипте у root (если это возможно).
#!/bin/sh
echo "user is ${USER}"
#check for updates
update=`cat /var/lib/update-notifier/updates-available | head -c 2 | tail -c 1`;
if [ "$update" = "0" ]; then
echo -e "No updates found.\n";
else
read -p "Do you wish to install updates? [yN] " yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
echo -e 'No\n';
else
echo "Please wait...";
echo `sudo apt-get update`;
echo `sudo apt-get upgrade`;
echo `sudo apt-get dist-upgrade`;
echo -e "Done!\n";
fi
fi
#check for restart
restartFile=`/usr/lib/update-notifier/update-motd-reboot-required`;
if [ ! -z "$restartFile" ]; then
echo "$restartFile";
read -p "Do you wish to REBOOT? [yN] " yn
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
echo -e 'No\n';
else
echo `sudo shutdown -r now`;
fi
fi
Я добавил пользователь отлаживать, она всегда выводит мой пользователь не корень, и запрашивает пароль SUDO (так как я звоню команды с Sudo) или говорит мне, ты корень? (если я удалю sudo)
Также есть способ вывода команд обновления stdout в режиме реального времени, а не только один блок, когда они заканчиваются?
(я также попытался с притон как #!/bin/bash
)
Спасибо! Я новичок во всем этом, но я не понимаю, как это может быть безопаснее. Если скрипт может быть запущен с правами администратора, только он может работать от имени root (правда?) Но с/etc/sudors я должен указать путь к файлу. Что делать, если кто-то rm является существующим файлом и там там есть. Не может ли этот непреднамеренный скрипт работать как суперпользователь сейчас? – KPK
Вот почему вы меняете права собственности и разрешения файла, чтобы предотвратить несанкционированное использование прав. – miken32
@KPK В дополнение к разрешениям файловой системы, если 'sudo' составляет 1,8.7 или более поздней версии, вы также можете использовать 'Digest_Spec' в' sudoers', поэтому он подходит только в том случае, если верстка SHA-2 верна. – user4098326