Назад | Перейти на главную страницу

Bash скрипт обычного пользователя для рута

У меня вопрос. Я пытаюсь создать сценарий bash для автоматического выполнения некоторой задачи. Мне нужно сделать первый шаг задачи как обычный пользователь, а su - как root, чтобы завершить задачу.

Мне было интересно, есть ли способ сделать это? До сих пор я мог запустить bash только как обычный пользователь, выполнить первый шаг, запросить su - пароль, но после его подключения как root скрипт остановится.

Можно ли продолжить bash после входа в систему как root?

Заранее спасибо.

ps: Если я не совсем точен, или если вам нужна информация, не стесняйтесь спрашивать, я сделаю все возможное, чтобы исправить эту ошибку.

Вы пробовали использовать sudo somecommand вместо того, чтобы пытаться переключить пользователей? Для этого ваш пользователь должен быть в группе пользователей «wheel» (в зависимости от вашей системы).

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

Пример:
Ваш сценарий оболочки был

#Do these commands as a normal user
echo "Hello World"
cat ./somefile

#Do these commands as root
su -
echo "Hello again"
cat /etc/somesystemfile

попробуйте изменить это на

#Do these commands as a normal user
echo "Hello World"
cat ./somefile

#Do these commands as root
sudo echo "Hello again"
sudo cat /etc/somesystemfile

Если есть конкретная команда, которую вы хотите, чтобы скрипт мог выполняться от имени пользователя root, в то время как он работает как another_user, тогда вам следует использовать sudo.

Настройте sudo, чтобы позволить another_user выполнять определенную команду, что-то вроде этого в вашем файле sudoers,

someuser ALL=/path/to/specific_command

а затем в вашем сценарии bash используйте

sudo /path/to/specific_command -some -args

Если вы хотите, чтобы ваш сценарий bash запускал множество команд от имени пользователя root или запускал общие команды, такие как mv или cp, вы можете подойти к этому с другой стороны. Напишите сценарий так, чтобы он запускался от имени пользователя root (например, в корневом каталоге crontab), и пусть он выполняет команды без полномочий root, используя 'su - someuser'потому что root может сделать это без ввода паролей.

Запустите процесс как root, затем выполните обычные пользовательские задачи с помощью su (-) user -c ..command.., и завершить его как root. Таким образом, он даже не будет запрашивать пароль.

Я нашел ответ, просто нужно использовать команду su - -c "".

Пример :

tar /home/me /dev/null

su - -c "yum update -y"

tar /home/me /dev/null

su - -c "
yum install xterm -y
yum clean-all
yum remove xterm -y

"