Não é possível passar um comando para ssh enquanto estiver usando pkexec, me dá um erro

0

Estou escrevendo um script que depende de pkexec à medida que a máquina é endurecida e sudo não funcionará. Permitir que pkexec temporariamente não solicite uma senha ao usuário, portanto, qualquer comando funcionará diretamente.

Se eu fizer login manualmente no SSH e tiver uma sessão aberta e executar um comando como: pkexec service iptables restart funciona, no entanto, se eu tentar fazer algo como ssh [email protected] "pkexec service iptables restart" , recebo o seguinte erro:

Cannot run program service: no such file or directory

Então, tem algo a ver comigo passando pkexec como parâmetros.

    
por Alejandro 20.09.2016 / 02:35

1 resposta

0

Quando você executa um comando ssh remotehost some_command type, seu $PATH pode não ser definido para os valores esperados.

Por exemplo, podemos ver que o PATH no meu shell de login atual não corresponde ao PATH remoto, mesmo que eu esteja fazendo login na mesma máquina:

$ echo $PATH
/home/sweh/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/u/bin:/usr/local/bin:/usr/bin/X11:/etc:/usr/local/sbin:/sbin:/usr/sbin

$ ssh localhost 'echo $PATH'
/usr/local/bin:/usr/bin

Por esse motivo, é normal especificar o nome completo do caminho para os comandos.

Nesse caso, a mensagem de erro Cannot run program service: no such file or directory significa que o comando pkexec foi encontrado (provavelmente está no PATH padrão), mas o comando service não foi.

Então, especifique /sbin/service ... eg

ssh [email protected] "pkexec /sbin/service iptables restart"
    
por 20.09.2016 / 23:40

Tags