У меня есть сценарий оболочки, в котором большинство команд необходимо запускать с правами пользователя sesu
а затем мне нужно запускать некоторые команды как текущий пользователь. Можете ли вы помочь мне в этом?
4 ответа
Если вы не хотите каждый раз указывать пароль, добавьте sesu
в группу sudoers
и выполните нужную команду следующим образом:
sudo su -c "command string"
Таким образом, command string
запускается как суперпользователь (root и т.д.).
Команда
exit
закрывает текущую оболочку. Если вы работали с оболочкой, подобной пользователю X, то переключились на пользователя Y, выход закрывает оболочку, в которой вы были Y, и возвращает вас к X
Я был в похожей ситуации в последнее время. Вот что я сделал, чтобы сразу перейти на уровень суперпользователя при вызове скрипта и впоследствии выполнять задачи обычного пользователя. Я думаю, что это может помочь вам найти способ достичь желаемого решения:
#!/bin/bash
# generic_sudo.sh
# Tool that demonstrates in-then-out of sudo
# This demo is pointless if called with 'sudo generic_sudo.sh'
# Need root priviledges for some superuser work
if (( EUID != 0 )); then # If the user is not "root":
# In general one should use ((..)) for testing numbers and integer variables, and [[..]] for testing strings and files.
sudo $0 # Relaunch it as "root".
EXITCODE=$?
printf "su mode OFF.\n" # If we got here, we left superuser mode
printf "EUID is: %d\n" $EUID
printf "Exit code %d\n" $EXITCODE
exit $EXITCODE # Once it finishes, exit gracefully.
else
printf "su mode ON.\n"
fi # End if.
printf "EUID is: %d\n" $EUID
# Some superuser work
printf "Some superuser work was done.\n"
exit 0
Вы можете использовать su
для переключения на другого пользователя и опцию -c
для выполнения команды, например
su anotherUser -c "ls /"
Проверьте, есть ли у вас sudo
и подумайте, сможете ли вы использовать его в вашем случае. В приведенном выше примере su будет запрашиваться пароль другого пользователя, и это может раздражать.