CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh가 작동하지 않습니다.

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh가 작동하지 않습니다.

웹 인터페이스 IPtables 관리를 시도 중입니다.

파일을 만들었습니다.테스트.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $output;

비밀번호를 사용하지 않고 아파치를 통해 sudo로 파일을 실행할 수 있도록 /usr/bin/iptables.sh NOPASSWD를 제공했습니다.

sudo iptables -L

sudoers 파일:

apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh

하지만 여전히 오류가 발생합니다.

귀하는 로컬 시스템 관리자로부터 일반적인 강의를 들으셨으리라 믿습니다. 이는 일반적으로 다음 세 가지로 요약됩니다. #1) 다른 사람의 개인 정보를 존중합니다. #2) 입력하기 전에 생각해보세요. #3) 큰 힘에는 큰 책임이 따른다. sudo: 비밀번호를 읽으려면 터미널이 필요합니다. -S 옵션을 사용하여 표준 입력에서 읽거나 Askpass 도우미{"mode":"full","isActive":false}를 구성하세요.

그러나 내가 사용하면

apache ALL=(root) NOPASSWD: ALL

모든 것이 잘 작동합니다.

내 디렉토리를 다시 확인하고 정확한 경로를 사용했습니다.

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

여기 정말 아무것도 모르네요. 방향을 알려주실 분 계신가요? :'(

답변1

호출하는 명령은 파일 sudo의 내용과 일치해야 sudoers하지만 귀하의 경우에는 일치하지 않습니다.

bash /usr/bin/iptables.sh을(를 ) 실행하려고 했지만 sudoers을(를) 실행할 수만 있습니다 /usr/bin/iptables.sh.

답변2

/usr/bin/iptables.sh루트의 루트를 참조 하므로 sudo를 사용해 보십시오 .

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $output;

관련 정보