이것은 작동합니다:
apache ALL=(ALL) NOPASSWD:ALL
하지만 그렇지 않습니다:
apache ALL=(ALL) NOPASSWD:/var/log/maillog
"sudo: tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다."라고 표시됩니다.
경로가 정확합니다. 여기서 뭔가 빠졌나요? 아이디어?
NOPASSWD:
작동하지 않은 후에 공백을 추가합니다 . .sh
다음 내용으로 PHP에서 파일을 호출합니다 .
#!/bin/sh
grep bounced /var/log/maillog
스크립트와 로그 파일에 경로를 추가했지만 작동하지 않습니다.
답변1
sudoers 라인
apache ALL=(ALL) NOPASSWD:/var/log/maillog
apache
사용자 허용구현하다문서 /var/log/maillog
. 그러나 스크립트가 실행되므로 grep
해당 줄은 적용되지 않습니다.
Sudo는 명령을 통해 작동합니다. 어떤 명령을 통해서도 특정 파일에 대한 액세스를 허용하는 데 사용할 수 없습니다. grep bounced /var/log/maillog
원하는 경우 이 명령을 허용할 수 있습니다. 그러나 원하는 것이 사용자가 어떤 프로그램을 사용하여 apache
든 읽을 수 있도록 허용하는 것이라면 해당 파일에 대한 액세스 제어 목록에 /var/log/maillog
추가해야 합니다 .apache
setfacl -m user:apache:r /var/log/maillog
로그 회전으로 인해 파일이 다시 생성될 때마다 이 명령이 필요합니다.이것은 새로운 버전의 logrotate를 사용하면 자동으로 수행됩니다.. 버전이 너무 오래된 경우,이 명령을 postrotate
logrotate 구성에 항목 으로 추가하세요..