pkexec를 사용할 때 ssh에 명령을 전달할 수 없으며 오류가 발생합니다.

pkexec를 사용할 때 ssh에 명령을 전달할 수 없으며 오류가 발생합니다.

pkexec강화된 기계 에 의존하여 sudo작동하지 않는 스크립트를 작성 중입니다 . pkexec지금은 사용자에게 비밀번호를 묻는 메시지가 표시되지 않도록 허용하므로 모든 명령을 직접 실행할 수 있습니다.

수동으로 SSH에 로그인하고 세션을 열고 다음과 같은 명령을 실행하면 pkexec service iptables restart작동하지만 이와 같은 작업을 시도하면 다음 오류가 발생합니다.ssh [email protected] "pkexec service iptables restart"

Cannot run program service: no such file or directory

pkexec따라서 이는 매개변수로 전달하는 것과 관련이 있습니다.

답변1

ssh remotehost some_commandtype 명령을 실행할 때 $PATH예상한 값으로 설정되지 않을 수 있습니다.

예를 들어, 동일한 시스템에 로그인했음에도 불구하고 현재 로그인 셸의 PATH가 원격 PATH와 일치하지 않는 것을 볼 수 있습니다.

$ 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

따라서 명령의 전체 경로 이름을 지정하는 것이 일반적입니다.

이 경우 오류 메시지는 명령을 찾았지만(기본 경로에서) 명령을 찾을 수 없음 Cannot run program service: no such file or directory을 의미합니다 .pkexecservice

따라서 지정하십시오 /sbin/service... 예를 들어

ssh [email protected] "pkexec /sbin/service iptables restart"

관련 정보