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_command
type 명령을 실행할 때 $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
을 의미합니다 .pkexec
service
따라서 지정하십시오 /sbin/service
... 예를 들어
ssh [email protected] "pkexec /sbin/service iptables restart"