Как запустить скрипт Bash от имени пользователя root без пароля?

Возможный дубликат:
Как использовать sudo в моем скрипте без пароля?

Я хочу запустить скрипт bash от имени пользователя root без запроса пароля.

Я попытался visudo безуспешно (ваше_пользовательское имя ALL=(ALL) NOPASSWD: /path/to/your/script).

Мне кажется, единственный выход есть, есть ли другой?

1 ответ

Решение

В каждом Linux есть очень интересный трюк, который позволит вам это сделать. Это называется битом SetUI.

Имейте в виду, что в этом файле вам нужно будет плотно заблокировать разрешения, чтобы это было безопасно.

Сделайте файл владельцем root и группой root:

sudo chown root.root <my script>

Теперь установите бит SetUID, сделайте его исполняемым для всех и доступным для записи только пользователю root:

sudo chmod 4755 <my script>

Имейте в виду, что если этот скрипт позволит вводить или редактировать файлы, это также будет выполнено от имени пользователя root.

Бит SetUID заставляет скрипт или двоичный файл всегда запускаться как владелец файла / двоичного файла, примером такого двоичного файла является "passwd".

Существует решение с использованием sudoers, вот пример, который вы можете использовать. Добавьте эти две строки в конец файла sudoers. Вы можете использовать visudo для редактирования файла sudoers.

Cmnd_Alias        CMDS = /path/to/your/script

<username>  ALL=NOPASSWD: CMDS

Теперь просто поместите sudo перед вашим скриптом, и он должен работать без запроса пароля.

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