Выполнить скрипт sudo Bash от имени другого пользователя, будучи пользователем root
Я вошел в систему как пользователь root и хочу выполнить скрипт Bash с разрешениями sudo от имени другого пользователя.
Это тестовый скрипт Bash в /home/me/sudo.bash:
mkdir -p /etc/test # Creating an /etc directory to test permissions
echo "test $(whoami) $USER $HOME" > /etc/test/a.txt
Команда, которую я сейчас имею (запускаю от root, запускаю для меня):
sudo --non-interactive --login --set-home --user=me \
sudo --non-interactive bash /home/me/sudo.bash
Содержание /etc/test/a.txt:
test root root /home/me
Что я ожидал:
test me me /home/me
Что я здесь не так делаю?
1 ответ
Ожидается, что $(whoami) вернет "root", так как он работает как root из-за второго sudo,
Также, $USER вернет "корень", потому что sudo всегда устанавливает эту переменную для целевого пользователя (который, опять же, является корнем на втором sudo.)
Если вам интересно узнать, какой пользователь вызвал sudo, который был бы "я" на случай второго sudoзатем посмотрите на $SUDO_USER переменная, которая sudo устанавливает пользователя, который его вызвал.
См. SUDO_USER и USER в разделе "Окружающая среда" sudo справочная страница.