Если у вас нет действительно странных пользовательских модулей PAM, "su" не будет запрашивать пароль при запуске от имени пользователя root. Используя su - user -c ...
с тире (-) вместо использования su user -c ...
, ваш загрузочный скрипт обрабатывает их начальные "точечные" файлы. Вероятно, что-то в их точечных файлах вызывает другой su
или вызванная команда фактически выполняет другой su
.
На заметку о том, что для многих скриптов полезно вставить строку с чтением exec < /dev/null
. Это предотвратит любую попытку прочитать стандартный ввод для большинства вещей. Это может не помочь для загрузочных скриптов и su
, потому что, если я не запомню, Solaris 8 su
будет захватывать терминал вместо stdin.
Проверьте точечные файлы. И попробуйте удалить "-" из su
чтобы они не обрабатывались. Если у вас есть какие-либо настройки, которые должны быть видны как для интерактивного использования, так и для использования загрузочным сценарием, рассмотрите возможность помещения только этих настроек в так называемый файл среды. Точечные файлы и загрузочный сценарий могут затем получить исходный файл среды. Настройки в файле среды, вероятно, будут меняться редко, и на ваш процесс загрузки вряд ли повлияет кто-то, кто копирует файлы точек.