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

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

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

Я попробовал visudo, но безуспешно(your_username ALL=(ALL) NOPASSWD: /path/to/your/script).

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

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

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

Сделайте файл принадлежащим корню и корню группы:

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 перед вашим скриптом, и он должен запускаться без запроса пароля.

Просто чтобы убедиться, что вы в курсе; вам все равно придется запустить скрипт с sudo впереди. Единственная разница заключается в том, что он больше не должен запрашивать у вас пароль.

Нет, это не так, я пробовал, и это не сработало. Вот почему я все это затеял.

Гейра, тогда какой в этом смысл? Что я хочу сделать, так это запустить его с помощью команды клавиатуры, а не с терминала.

хорошо, я могу запустить его из другого файла, хотя. ta

Дело в том, что sudo позволит вам запустить команду от имени root, не требуя пароля. Только sudo считывает файл sudoers.