3

У меня есть сценарий оболочки, в котором большинство команд необходимо запускать под sudo; тем не менее, последние несколько команд должны выполняться от имени текущего пользователя. Есть ли способ выйти из sudo и переключиться на текущего пользователя?

Если бы я запускал все это из командной строки, я мог бы сделать что-то вроде:

sudo su
[su commands]
exit
[user commands]

Тем не менее, exit остановит скрипт по этой команде.

2 ответа2

4

Рассматривали ли вы изменение сценария для добавления префикса sudo к командам, которые необходимо запустить от имени пользователя root? Встроенный механизм кэширования учетных данных sudo будет означать, что вам нужно будет ответить на запрос пароля только один раз, если сценарий оболочки не выполняется очень долго.

1

Не используйте sudo su или su - <user> , потому что вы открываете подоболочку с помощью этой команды. Это не будет работать очень хорошо.

Пожалуйста, используйте sudo "su commands" например sudo "ls /home"

если вы действительно хотите использовать sudo su , вы можете использовать его, набрав, например,

sudo su -c "ls /tmp"

если у вас более одной команды, разделите ее ;

sudo su -c "ls /tmp/; whoami"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .