Execute o visudo e comente como abaixo:
#Default requiretty
Estou com dificuldades em executar o seguinte comando:
ssh someuser@lab-test "sudo /usr/local/scripts/user.sh add tstt7777 177700007 \"Test User 06\" "
Para encurtar a história, preciso executar o script user.sh com as privações ROOT como algum usuário de uma máquina remota. No entanto, eu não quero que algum usuário seja capaz de executar qualquer outro comando, abrir um shell ou ter acesso ao sistema. O usuário precisa apenas executar esse script com vários argumentos dinâmicos.
Já lidei com a troca de chaves públicas e adicionei privlages no sudo:
#Sudo
someuser ALL = NOPASSWD: /usr/local/scripts/user.sh
Mas recebo o seguinte erro:
sudo: sorry, you must have a tty to run sudo
Eu olhei para a função "Command=" em ssh, mas meu entendimento é que isso só irá executar o comando especificado e não permitirá que argumentos sejam passados como indicado na minha invocação.
Há algo que estou perdendo para fazer meu método funcionar via sudo?
Existe um método melhor que não considerei em SSH ou BASH?
Basta adicionar a opção -t (pseudo-tty) junto com o comando ssh.