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

Выполнение SU в сценарии bash

Я запускаю удаленный сценарий bash (используя ssh -t 'bash doscript.sh'). В "doscript.sh" у меня есть sudo su anotheruser. В этот момент кажется, что сценарий запускает оболочку, и я остаюсь в этом «интерактивном» сценарии, а остальная часть моего сценария (doscript.sh) не запускается, пока я не наберу «exit». Есть ли способ обойти эту проблему?

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

Вот содержимое моего тестового скрипта doscript.sh:

sudo su diy
cd
pwd
whoami
exit
whoami

sudo запускает оболочку, если вы не укажете иное.

Похоже, вы действительно хотите запустить этот сценарий от имени другого пользователя. Для этого попробуйте что-нибудь вроде этого:

#!/bin/bash
if [ `id -nu` != diy ]; then
    sudo -u diy $0 # Re-run this script as user diy
else
    # Everything you want to do goes here
fi

Имейте в виду, что /etc/sudoers должен быть настроен так, чтобы исходный пользователь мог запускать этот сценарий как новый пользователь.

su как используется в вашем скрипте, запускает только su линия себя как другой пользователь.

Использовать su - otheruser -c "cmds to execute".