У меня есть пароль root в одном из моих сценариев, и я хочу запустить другой сценарий, для которого требуется разрешение root от этого сценария. Как я могу использовать пароль root, который у меня есть, чтобы мне не нужно было спрашивать пользователя пароль root, который запускает второй скрипт.
2 ответа
В этом есть много последствий для безопасности, но давайте перейдем к лучшему способу справиться с этим.
Не используйте пароль 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? В большинстве случаев это вообще не требуется, но делается для удобства.
Другой вариант - установить suid для файла в корневой каталог. Пример: chmod u+s script.sh
от имени пользователя root, поэтому, когда обычный пользователь выполняет скрипт, он запускается с правами доступа владельца, известного как root.
Насколько вам известно, если вы не хотите запускать sudo без пароля, вы можете передать пароль в sudo через stndin, например, echo PASSWORD|sudo -S ./script.sh
Однако это может быть проблемой безопасности, так как в истории будет отображаться пароль или кто-либо, наблюдающий как "ps". Вы также можете посмотреть на Expect и Empty.