AWStats: ไม่สามารถเข้าถึง /var/log/apache2/access.log


14

ผมติดตั้ง awstats บนเซิร์ฟเวอร์ใหม่ของฉันอูบุนตูสุวิมล แต่เมื่อ cron พยายามที่จะเรียกว่าเป็นผู้ใช้ก็บ่นว่าwww-datacannot access /var/log/apache2/access.log: Permission denied

ใน/usr/share/doc/awstats/README.Debianย่อหน้านี้มี:

ตามค่าเริ่มต้น Apache จะเก็บ logfiles (ตั้งแต่รุ่น 1.3.22-1) ด้วย uid = root และ gid = adm ดังนั้นคุณต้องเลือก ...

1) เปลี่ยนสิทธิ์ของ logfiles ใน /etc/logrotate.d/apache เพื่อให้ www-data มีการเข้าถึงแบบอ่านอย่างน้อย

2) เป็น 1) แต่เปลี่ยนเป็นผู้ใช้เฉพาะและใช้คุณลักษณะ suEXEC ของ Apache เพื่อเรียกใช้เป็นผู้ใช้เดียวกัน (และเปลี่ยนสิทธิ์ของ / var / lib / awstats ด้วยหรือใช้ไดเรกทอรีอื่น) นี่คือความซับซ้อนมากขึ้น แต่แล้วบันทึกไม่สามารถเข้าถึงเซิร์ฟเวอร์โดยทั่วไป (ซึ่งอาจเป็นจุดเริ่มต้นของ Apache)

3) เปลี่ยน awstats.pl เป็นกลุ่ม adm (แต่ระวังว่าคุณเสี่ยงต่อการอนุญาตให้ CGI-script เข้าถึงสิ่งต่างๆของผู้ดูแลระบบบนเครื่อง!)

ฉันจะไปกับ 1 แต่สิทธิ์ที่แนะนำในการอนุญาตคืออะไร


ลองนี้สัญญาลาดเทว่ามันจะทำงาน: แล้วchown www-data:www-data <yourFile> chmod 655 <yourFile>
theTuxRacer

1
ดีที่จะทำให้ awstats ทำงานก็เพียงพอchmod 755 /var/log/apache2แล้วและchmod 644 access.logแต่ฉันต้องการ "นี่คือการฝึกฝนที่ดีที่สุด" - คำตอบ :) ขอบคุณสำหรับการตีระฆังใน!
Joril

ฉันคิดว่าคุณถูกที่จะไปกับ # 1 (ด้วยการเข้าถึงแบบอ่านเว้นแต่ว่ามีบางสิ่งที่เกินความต้องการ) การทำเช่นนี้ช่วยให้สามารถเข้าถึงบัญชีผู้ใช้ที่ จำกัด และไม่อนุญาตให้เข้าถึงสิ่งใหม่ ๆ
belacqua

คำตอบ:


8

หากคุณไปที่จุดที่ 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

จากนั้นผู้ใช้ทุกคนสามารถอ่านไฟล์ทั้งหมดและไฟล์ทั้งหมดที่สร้างขึ้นในอนาคตจะมีสิทธิ์ในการ adecuate


2
และสำหรับ "ผู้ใช้ทั้งหมด" เพื่อให้สามารถดู "/ var / log / apache2 /" ทำตามปกติ: chmod a + x / var / log / apache2 /
alfonx

6

ในการตั้งค่าส่วนใหญ่:

  • awstats ทำงานเป็นผู้ใช้ apache ของคุณwww-data ;
  • ไฟล์บันทึก apache นั้นเป็นเจ้าของโดยroot: admและมีสิทธิ์ -rw-r ----- (aka: 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) เปลี่ยน " create 640 root adm " เป็น " create 644 root adm " ใน/etc/logrotate.d/apache2โดยใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบหรือถ้าคุณต้องสคริปต์ทุกอย่าง:

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) รีสตาร์ท apache

sudo apachectl -k graceful

ฉันเห็นคนเพิ่มข้อมูล www ไปยังกลุ่มผู้ใช้ adm เป็นโซลูชัน นั่นคือการอนุญาตเพิ่มเติมสำหรับข้อมูล wwwมากกว่าที่ฉันพอใจ

ตัวเลือกที่ปลอดภัยยิ่งขึ้น ได้แก่ การสร้างผู้ใช้และกลุ่มใหม่สำหรับ awstats และทำให้ awstats เรียกใช้ / ดำเนินการในฐานะผู้ใช้ / กลุ่มใหม่นี้


วิธีแก้ปัญหาอื่นก็คือเปลี่ยนกลุ่ม/var/log/apache2และทุกสิ่งที่อยู่ใต้กลุ่มwww-dataและทำให้ไฟล์อ่านได้ในกลุ่ม นี่คืออนุญาตน้อยกว่าทำให้พวกเขาสามารถอ่านได้ทั่วโลก
Reinier โพสต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.