Как я могу передать Root Password в скрипт

3408
Troggy

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

6
если это вопрос программирования, не должно ли это быть в стеке потока? rzlines 14 лет назад 0
@rzlines,: административные сценарии bash на самом деле не «программируют», они могут лучше подходить для ServerFault или UnixSE ... но на самом деле все должно быть в порядке. J. M. Becker 11 лет назад 0

2 ответа на вопрос

17
jtimberman

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

Не используйте пароль 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? В большинстве случаев это вообще не требуется, но делается для удобства.

Разве вы не имеете в виду `script_user ALL = NOPASSWD: SCRIPT`? grawity 14 лет назад 1
@ grawity спасибо, вот что я получу за публикацию в 2 часа ночи или что бы то ни было;) jtimberman 14 лет назад 0
Мне нужно что-то подобное, вы можете написать мне решение, я не понимаю, как я могу выполнить это правильно. [Мой вопрос] (http://superuser.com/questions/435223/how-to-prompt-gui-and-use-root-password-on-a-script). GarouDan 11 лет назад 0
2
Scott W.

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

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

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

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