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

запуск сценария удаленной оболочки, который переключается на пользователя, не возвращается к исходящей оболочке локального сервера

Когда я запускаю такой сценарий:

ssh -t root@10.10.10.10 '/tmp/somescript.sh'

где сценарий определяется как:

#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
su myuser -  # <------- NOTICE THIS ! ! ! ! 
rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm

Обратите внимание на вышеуказанное вс команда.

Если я закомментирую вс команда, сценарий запускается удаленно, а затем моя командная строка возвращается туда, откуда я пришел (тот же сервер, на котором я запускал команду ssh выше)

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

Как я могу это предотвратить? Убедиться, что издателем команды rpm является другой пользователь, а не root, только указанный в списке?

Запустите команду rpm с помощью sudo:

#!/bin/sh
mkdir -p /data/workday/cred
chown -R myuser:myuser /data
sudo -u myuser rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm

su запускает оболочку. Когда вы выйдете из этой оболочки, будет выполнена команда rpm. Если вы меняете пользователя для выполнения команды rpm, тогда

su -c 'rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm'  myuser