На этот вопрос уже есть ответ:
] Я уверен, что это очень простой вопрос, но боюсь, что не смог заставить его работать или понять, что происходит.
У меня есть проект узла, который я обычно запускаю с
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"
правильный, но он не работает (он работает, но без разрешений). Кто-нибудь может указать мне правильное направление?
Не используйте обычный 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