написание сценария bash, который использует sudo [duplicate]

На этот вопрос уже есть ответ:

] Я уверен, что это очень простой вопрос, но боюсь, что не смог заставить его работать или понять, что происходит.

У меня есть проект узла, который я обычно запускаю с

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"

правильный, но он не работает (он работает, но без разрешений). Кто-нибудь может указать мне правильное направление?

0
задан 28 December 2017 в 21:18

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
1
ответ дан 28 December 2017 в 21:18

Другие вопросы по тегам:

Похожие вопросы: