Я не могу выполнить следующую команду:
ssh someuser@lab-test "sudo /usr/local/scripts/user.sh add tstt7777 177700007 \"Test User 06\" "
Короче говоря, мне нужно запустить сценарий user.sh с правами ROOT в качестве пользователя с удаленной машины. Однако я не хочу, чтобы какой-либо пользователь мог запускать ЛЮБЫЕ другие команды, открывать оболочку или иным образом иметь доступ к системе. Пользователю нужно только запустить этот сценарий с несколькими динамическими аргументами.
Я уже занимался обменом открытым ключом и добавил привилегии в sudo:
#Sudo
someuser ALL = NOPASSWD: /usr/local/scripts/user.sh
Но я получаю следующую ошибку:
sudo: sorry, you must have a tty to run sudo
Я посмотрел на функцию «Command =» в ssh, но я понимаю, что это будет запускать только указанную команду и не позволит передавать аргументы, как указано в моем вызове.
Что-то мне не хватает, чтобы мой метод работал через sudo?
Есть ли лучший метод, который я не рассматривал в SSH или BASH?
Запустите visudo и закомментируйте, как показано ниже:
#Default requiretty
Просто добавьте -t (pseudo-tty) вместе с командой ssh.