
저는 이메일을 받았을 때 PHP 스크립트를 실행하기 위해 Exim4를 사용하고 있습니다.
이 스크립트는 파일이 존재하지 않는 경우 /var/log/myapp 폴더에 파일을 생성해야 하며, 그렇지 않으면 파일을 읽고 로그에 더 많은 콘텐츠를 추가해야 합니다.
폴더에 777 권한을 적용하여 몇 가지 테스트를 수행한 결과 Exim4에서 사용하는 사용자는 nobody
.
그러나 어떤 경우에는 내 관리 사용자(예: bob
)가 PHP CLI를 통해 PHP 파일을 수동으로 실행하고 이러한 로그 파일을 사용할 수도 있습니다.
아래 명령을 실행하여 내 사용자를 추가하고 아무도 폴더에 쓸 수 없지만 내 사용자만 파일을 만들 수 있지만 '아무도'는 할 수 없습니다.
sudo groupadd eximapplog
sudo usermod -a -G eximapplog bob
sudo usermod -a -G eximapplog nobody
sudo chgrp -R eximapplog /var/log/myapp
sudo chmod g+rwx /var/log/myapp
sudo chmod -R 775 /var/log/myapp
내가 뭘 잘못하고 있는 걸까요?
답변1
내 생각에 오류는 사용자(bob)와 "nobody" 사용자 간의 권한 수준 차이로 인해 발생한다고 생각합니다.
루트가 아닌 특정 사용자로 실행되도록 PHP 스크립트 또는 Exim4 구성을 조정해 보겠습니다.
먼저 새 사용자와 새 그룹을 만듭니다.
sudo adduser eximappuser
sudo groupadd eximappgroup
그런 다음 eximappuser와 bob을 새 그룹에 추가합니다.
sudo usermod -a -G eximappgroup eximappuser
sudo usermod -a -G eximappgroup bob
우리는 소유자 권리를 변경합니다
sudo chown -R eximappuser:eximappgroup /var/log/myapp
그런 다음 소유자와 그룹이 읽고, 쓰고, 실행할 수 있도록 var/log/myapp의 권한을 변경합니다.
Exim4
그런 다음 'nobody' 대신 'eximappuser'로 실행되도록 PHP 스크립트를 구성해야 합니다.