Переключение на суперпользователя, в то время как сценарий оболочки работает

Вы пробовали setuptool?

Установите его с yum install setuptool

2
27.08.2012, 01:17
3 ответа

su запускает новую оболочку (или выполняет некоторую другую команду). Это волшебно не переключает UID текущей оболочки. Если Вы вводите exit после ввода Вашего пароля Вы будете видеть, что Ваш сценарий продолжает echo оператор (но как исходный пользователь, не как корень).

Можно поместить часть сценария, который должен быть выполнен как корень в отдельный сценарий и выполнить это с su. (Или некоторое изменение использования того приема.)

3
27.01.2020, 21:57

Насколько оболочка затронута, su команда как любой другой. Когда Вы работаете su без аргумента это запрашивает пароль root, затем вызывает интерактивную оболочку, как обычно. После того как эта интерактивная оболочка выходит, сценарий продолжается к следующей команде.

Передать команды su без слишком многих головных болей заключения в кавычки простой способ состоит в том, чтобы передать сценарий своему стандартному входу с помощью здесь документ. Используйте литерал heredoc (где маркер конца входа заключается в кавычки) постараться не заключать головные боли в кавычки. Обратите внимание, что переменные оболочки родительского сценария не доступны сценарию, который выполняется как корень: только (экспортируемые) переменные среды доступны. Пример:

ADD_USER=john
ADD_TO_GROUP=fiddlers
export ADD_USER ADD_TO_GROUP
su <<'EOF'
adduser "$ADD_USER" "$ADD_TO_GROUP"
EOF
# more commands executed as the original user
2
27.01.2020, 21:57

Выполнение su запускает новую команду (оболочка по умолчанию).

Для создания этой работы попробуйте что-то вроде этого:

#!/bin/bash
if [ `id -u` = 0 ]; then
    # Do our real work as root
else
    su -c $0
fi
0
27.01.2020, 21:57

Теги

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