6

У меня есть пароль root в одном из моих сценариев, и я хочу запустить другой сценарий, для которого требуется разрешение root от этого сценария. Как я могу использовать пароль root, который у меня есть, чтобы мне не нужно было спрашивать пользователя пароль root, который запускает второй скрипт.

2 ответа2

17

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

Не используйте пароль root напрямую. Используйте sudo для запуска скриптов. Sudo по умолчанию устанавливается в Ubuntu и доступен почти во всех популярных дистрибутивах Linux в репозиториях пакетов. После установки sudo вы захотите отредактировать /etc /sudoers.

su -
visudo
# add something like the following:
Cmnd_Alias SCRIPT=/path/to/script1
script_user ALL=NOPASSWD: SCRIPT

Таким образом, script_user может запустить первый скрипт как root через sudo, который затем запустит другой скрипт как root. Для получения дополнительной информации о файле sudoers см. Справочную страницу sudoers(5) в вашей системе.

Но должны ли ваши скрипты работать от имени пользователя root? В большинстве случаев это вообще не требуется, но делается для удобства.

2

Другой вариант - установить suid для файла в корневой каталог. Пример: chmod u+s script.sh от имени пользователя root, поэтому, когда обычный пользователь выполняет скрипт, он запускается с правами доступа владельца, известного как root.

Насколько вам известно, если вы не хотите запускать sudo без пароля, вы можете передать пароль в sudo через stndin, например, echo PASSWORD|sudo -S ./script.sh

Однако это может быть проблемой безопасности, так как в истории будет отображаться пароль или кто-либо, наблюдающий как "ps". Вы также можете посмотреть на Expect и Empty.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .