Этот список показывает, что на самом деле присутствует в этом каталоге.
Пробелы в имени (ах) файла не позволяют четко их различить. Использование длинного листинга ( ls -l
) позволяет лучше понять ситуацию.
Итак, я понял, что происходит. Когда система использует DirectAuthorize, любая учетная запись, которая хочет su
от имени другого пользователя , должна использовать вместо этого dzdo
. Сюда входит даже учетная запись root, которая используется для запуска любой службы через chkconfig во время загрузки системы. Поэтому я заменил следующие строки в моем файле сценария oracle-xe:
$SU -s /bin/bash $ORACLE_OWNER -c "$LSNR start" >> $STARTUP_LOG 2>&1
$SU -s /bin/bash $ORACLE_OWNER -c "$SQLPLUS -s /nolog @$ORACLE_HOME/config/scripts/startdb.sql" >> $STARTUP_LOG 2>&1
на это:
dzdo -s -u $ORACLE_OWNER $LSNR start >> $STARTUP_LOG 2>&1
dzdo -s -u $ORACLE_OWNER $SQLPLUS -s /nolog @ORACLE_HOME/config/scripts/startdb.sql >> @STARTUP_LOG 2>&1
dzdo
не является прямой заменой для su
, поскольку варианты другие, а вы не может просто бросить его на место. В частности, нет опции -c
для запуска определенной команды с dzdo
. Вместо этого выполняемая команда - это все, что появляется в конце оператора. Переключатель -s
указывает на запуск оболочки от имени целевого пользователя. После внесения этих изменений и перезагрузки слушатель и экземпляр базы данных запустились как пользователь "oracle" без каких-либо проблем.