3

У меня есть сценарий на этапе инициализации Solaris 8 в /etc/rc3.d , который содержит su - username -c "a command" , но я вижу через загрузочные сообщения, которые команда su запрашивает у пользователя пароль. Результатом является то, что загрузка продолжается (нет консоли, чтобы дать su пароль пользователя), и сценарий завершается ошибкой.

Тот же скрипт на Solaris 10 работает, делая все во время загрузки.

Странно, что скрипт, запускаемый от имени пользователя root, запрашивает обычный пароль пользователя.

1 ответ1

1

Если у вас нет действительно странных пользовательских модулей PAM, "su" не будет запрашивать пароль при запуске от имени пользователя root. Используя su - user -c ... с тире (-) вместо использования su user -c ... , ваш загрузочный скрипт обрабатывает их начальные "точечные" файлы. Вероятно, что-то в их точечных файлах вызывает другой su или вызванная команда фактически выполняет другой su .

На заметку о том, что для многих скриптов полезно вставить строку с чтением exec < /dev/null . Это предотвратит любую попытку прочитать стандартный ввод для большинства вещей. Это может не помочь для загрузочных скриптов и su , потому что, если я не запомню, Solaris 8 su будет захватывать терминал вместо stdin.

Проверьте точечные файлы. И попробуйте удалить "-" из su чтобы они не обрабатывались. Если у вас есть какие-либо настройки, которые должны быть видны как для интерактивного использования, так и для использования загрузочным сценарием, рассмотрите возможность помещения только этих настроек в так называемый файл среды. Точечные файлы и загрузочный сценарий могут затем получить исходный файл среды. Настройки в файле среды, вероятно, будут меняться редко, и на ваш процесс загрузки вряд ли повлияет кто-то, кто копирует файлы точек.

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