Написание сценария bash, использующего sudo
Я уверен, что это очень простой вопрос, но я боюсь, что не смог заставить его работать или понять, что происходит.
У меня есть проект узла, с которым я обычно запускаю
sudo npm start
и я пытаюсь создать скрипт bash, который запустит это для меня.
Я попробовал несколько вариантов:
su myname -c "npm run start"
sudo su myname -c "npm run start"
su myname -c "sudo npm start"
но все они, кажется, выполняют команду без прав суперпользователя. Из проведенного мною исследования кажется, что
sudo su myname -c "npm run start"
является правильным, но он не работает (он работает, но без разрешений). Может кто-нибудь, пожалуйста, укажите мне в правильном направлении?
1 ответ
Не используйте простой sudo
в сценариях запустите весь сценарий с правами root и используйте sudo -u YOURUSERNAME
выполнять команды без прав root, если это действительно необходимо.
Напишите такой скрипт:
#!/bin/bash
npm start
Сохраните его, сделайте его исполняемым с chmod +x /path/to/script
и запустить его с правами root с помощью:
sudo /path/to/script # from a terminal
gksudo /path/to/script # without terminal (e.g. for a starter)
kdesudo /path/to/script # without terminal, KDE equivalent
Это все, что нужно.
Вы можете добавить дополнительные команды в скрипт, например, вы можете проверить, был ли он запущен от имени пользователя root, и выйти из него еще (благодаря PerlDuck):
[[ $EUID -ne 0 ]] && echo "This script must be run as root." && exit 1