su не удается открыть сеанс, ошибка при запуске базы данных Oracle XE

Этот список показывает, что на самом деле присутствует в этом каталоге.

Пробелы в имени (ах) файла не позволяют четко их различить. Использование длинного листинга ( ls -l ) позволяет лучше понять ситуацию.

3
21.11.2019, 19:31
1 ответ

Итак, я понял, что происходит. Когда система использует 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" без каких-либо проблем.

0
27.01.2020, 21:37

Теги

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