I installed awstats on my new Ubuntu Lucid server, but when cron tries to run it as user www-data, it complains that cannot access /var/log/apache2/access.log: Permission denied.

In /usr/share/doc/awstats/README.Debian there's this paragraph:

By default Apache stores (since version 1.3.22-1) logfiles with uid=root and gid=adm, so you need to either...

1) Change the rights of the logfiles in /etc/logrotate.d/apache so that www-data has at least read access.

2) As 1) but change to a specific user, and use the suEXEC feature of Apache to run as same user (and either change the right of /var/lib/awstats as well or use another directory). This is more complicated, but then the logs are not generally accessible to the server (which was probably the point of the Apache default).

3) Change awstats.pl to group adm (but beware that you are then taking the risk of allowing a CGI-script access to admin stuff on the machine!).

I'd go with 1, but what are the recommended permissions to grant?

link|improve this question

67% accept rate
Try this, cant promise if it will work: chown www-data:www-data <yourFile> and then chmod 655 <yourFile>. – Kaustubh P Jan 14 '11 at 10:08
1  
Well to make awstats work it's enough to chmod 755 /var/log/apache2 and chmod 644 access.log, but I'd like a "this is the best pratice"-kind of answer :) Thanks for chiming in though! – Joril Jan 14 '11 at 10:41
I think you're right to go with #1 (with just read access, unless there is something else awstats needs). This gives access to a limited user account, and doesn't grant new access to anything beyond that. – belacqua Feb 14 '11 at 17:49
feedback

2 Answers

up vote 1 down vote accepted

If you go for point 1 and it says that www-data should have at least read permission then the recomended is grant only read.

You can alter the line (in logrotate file):

create 640 root adm

to

create 644 root adm

To give all users (www-data included) read permission.

You'll need to change permissions existent files in /var/log/apache2/ to match this setting

chmod a+r /var/log/apache2/* #or whatever your path is

Then all the files can be read by all users and all the files that logrotate create in the future will have the adecuate permissions

link|improve this answer
feedback

open the terminal and write

gksudo nautilus

and you will run file browser with root

link|improve this answer
You were downvoted because your answer had nothing to do with the question. It seems to be a trend. The answers you give are really not that bad, just off-topic. I didn't feel the need to give you an extra -1, but wanted to explain. – djeikyb Feb 16 '11 at 22:37
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.