Bash: как выйти / выйти из пользователя, который запускает скрипт - PullRequest
0 голосов
/ 04 мая 2018

У меня есть скрипт bash, который создает несколько каталогов и т. Д., Создает обратный туннель SSH, используя зашифрованный ключ пользователя (он дешифруется и запускается psh_ssh при входе в систему через pam_ssh), затем запускает сеанс tmux и отсоединяется (ждем повторного прикрепления позже). На этом этапе все сделано, и я хочу убедиться, что пользователь, выполнивший сценарий, выйдет из системы.

Причина этого заключается в следующем: только определенный пользователь (может быть корнем в будущем) может выполнять этот скрипт, поэтому, будучи regular_user в терминале, я делаю: su special_user, ./special_script.sh сейчас, если Я забываю выйти из системы и оставить терминал открытым - кто-то может запустить этот скрипт снова, поэтому я хочу, чтобы по его окончании ./special_script.sh выбросил special_user из своего сеанса, вернув его в regular_user.

Примечание: special_user используется сотрудниками службы поддержки, которые обращаются к regular_users, чтобы помочь им в их сессиях, поэтому вполне возможно, что однажды парень из службы поддержки забудет выйти из системы, оставив свою сессию без дела. В идеале было бы необходимо использовать что-то вроде sudo special_user special_script.sh, но важно, чтобы была запрошена фраза special_user (для передачи в ssh-agent).

Возможно ли это?

1 Ответ

0 голосов
/ 08 мая 2018

Когда вы не можете использовать sudo или встраивать скрипт в обычный исполняемый файл для бита setuid (см. https://unix.stackexchange.com/a/369/57293),, вы можете попытаться манипулировать .bashrc special_user

special_script.sh
exit 0

Помните, что все решения требуют проверки special_script.sh, когда речь идет о безопасности. Когда special_script.sh вызывает такую ​​программу, как vi или sqlplus, пользователь может открыть оболочку и выполнить все действия в этой оболочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...