새 Ubuntu Lucid 서버에 awstats를 설치했지만 cron이 사용자로 실행하려고 www-data
하면 불평합니다 cannot access /var/log/apache2/access.log: Permission denied
.
에서 /usr/share/doc/awstats/README.Debian
이 단락이있다 :
기본적으로 Apache는 (버전 1.3.22-1부터) uid = root 및 gid = adm을 가진 로그 파일을 저장하므로 다음 중 하나를 수행해야합니다.
1) www-data가 최소한 읽기 액세스 권한을 갖도록 /etc/logrotate.d/apache에서 로그 파일의 권한을 변경하십시오.
2) 1)과 같이 특정 사용자로 변경하고 Apache의 suEXEC 기능을 사용하여 동일한 사용자로 실행하십시오 (및 / var / lib / awstats의 권한을 변경하거나 다른 디렉토리를 사용하십시오). 이것은 더 복잡하지만 로그는 일반적으로 서버에서 액세스 할 수 없습니다 (아파치 기본 설정일 수 있음).
3) awstats.pl을 그룹 adm으로 변경합니다 (그러나 컴퓨터의 관리자 항목에 CGI 스크립트 액세스를 허용 할 위험이 있습니다!).
나는 1과 함께 갈 것이지만 부여 할 권장 권한은 무엇입니까?
답변
포인트 1로 가서 www-data에 최소한 읽기 권한이 있어야한다고 권장하면 권장 읽기 권한이 읽기 전용입니다.
logrotate 파일에서 행을 변경할 수 있습니다.
create 640 root adm
에
create 644 root adm
모든 사용자 (www-data 포함)에게 읽기 권한을 부여합니다.
이 설정과 일치하도록 / var / log / apache2 /에 존재하는 권한 파일을 변경해야합니다.
chmod a+r /var/log/apache2/* #or whatever your path is
그런 다음 모든 사용자가 모든 파일을 읽을 수 있으며 나중에 로그 로테이트로 만드는 모든 파일에 적절한 권한이 부여됩니다.
답변
대부분의 설정에서 :
- awstats는 아파치 사용자로 실행됩니다 www-data .
- 아파치 로그 파일에 의해 소유 ADM : 루트 및이
—– -rw-R을 (일명 : chmod를 640 ) 권한; 과 -
소유권 및 권한 설정은 /etc/logrotate.d/apache2 파일에서 찾을 수 있습니다
. 내용은 다음과 같습니다./var/log/apache2/*.log { daily missingok rotate 60 compress delaycompress notifempty dateext create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript }
가장 간단한 해결책은 다음과 같습니다.
1) 자주 사용하는 텍스트 편집기를 사용하거나 모든 것을 스크립팅해야하는 경우 /etc/logrotate.d/apache2 에서 ” create 640 root adm “을 ” create 644 root adm “으로 변경 하십시오.
sudo sed -i 's/create 640 root adm/create 644 root adm/g' /etc/logrotate.d/apache2
2) /var/log/apache2/access.log 및 /var/log/apache2/error.log 에 대한 권한 을 644로 변경하십시오 .
sudo chmod 644 /var/log/apache2/access.log /var/log/apache2/error.log
3) 아파치를 다시 시작하십시오.
sudo apachectl -k graceful
사람들이 www-data를 adm 사용자 그룹에 솔루션으로 추가하는 것을 보았습니다. 그것은 더 많은 권한입니다 내가 익숙한 것보다 www-data에 입니다.
보다 안전한 다른 옵션으로는 awstats에 대한 새 사용자 및 그룹을 작성하고이 새 사용자 / 그룹으로 awstats를 실행 / 실행하는 것이 포함됩니다.