Когда я запускаю такой сценарий:
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