วิธีที่ปลอดภัยที่สุดในการอนุญาตให้ผู้ใช้สามารถอ่านไฟล์ล็อกได้คืออะไร?


21

ใบสมัครของฉันต้องมีการเข้าถึงแบบอ่านไปซึ่งเป็นผู้ใช้และกลุ่ม/var/log/messages rootระดับแสงขั้นต่ำที่ต้องการ/var/log/messagesคือเท่าไหร่เพื่อให้แอปพลิเคชันของฉันสามารถอ่านได้

ปัจจุบันแผนของฉันคือการเปลี่ยนความเป็นเจ้าของกลุ่มเป็นกลุ่ม/var/log/messagesใหม่และเพิ่มรูทและผู้ใช้แอปพลิเคชันของฉันให้กับมัน แต่สิ่งนี้จะให้สิทธิ์ในการเขียนแอปพลิเคชัน/var/log/messagesด้วย

ระบบปฏิบัติการ: Centos 5.5

คำตอบ:


7

ไม่จำเป็นต้องเพิ่มรูทไปยังกลุ่มเนื่องจากจะสามารถเข้าถึงได้ผ่านทางผู้ใช้ privs anyways เพียงแค่ให้กลุ่มอ่านสิ่งที่กลุ่มคุณเคยตัดสินใจ อย่าลืมทำการเปลี่ยนแปลงด้วย logrotate เช่นกันมิฉะนั้นการเปลี่ยนแปลงกลุ่มจะได้รับการเช็ดทุกคืน


สคริปต์ logrotate อยู่ที่ไหน
gAMBOOKa

1
/etc/logrotate.d/ เป็นโฟลเดอร์สำหรับสคริปต์ logrotate ที่เสียหาย / var / log / messages อยู่ใน /etc/logrotate.d/syslog คุณจะต้องย้าย / var / log / ข้อความไปยังไฟล์ของตัวเองภายใน /etc/logrotate.conf แล้วใช้บางอย่างเช่น 'create 0640 root new_group' บอกให้สร้างไฟล์อย่างถูกต้อง
rfelsburg

คุณจะต้องย้าย / var / log / ข้อความไปยังไฟล์ของตัวเองภายใน /etc/logrotate.d/
Massimo

17

เพียงเพื่อขยายคำตอบข้างต้นเล็กน้อยนี่เป็นกรณีการใช้งานจริง ฉันเรียกใช้โปรแกรมวิเคราะห์บันทึกองค์กร Splunk บนกล่อง Redhat มันทำงานภายใต้ผู้ใช้และกลุ่ม Splunk วิธีนี้ป้องกันการเข้าถึงไฟล์บันทึกใน / var / log เนื่องจากไฟล์เหล่านั้นเข้าถึงได้โดย root เท่านั้น (หรือผู้ดูแลระบบ sudo)

เพื่ออนุญาตให้เข้าถึงแบบอ่านอย่างเดียวสำหรับ splunk เท่านั้นฉันได้ใช้ ACL's และ logrotate ที่แก้ไขแล้วเพื่อคงไว้

คุณสามารถตั้งค่า ACL ด้วยตนเองได้

sudo setfacl -m g:splunk:rx /var/log/messages

สิ่งนี้จะไม่คงอยู่เนื่องจาก logrotate จะไม่ใช้การตั้งค่า ACL อีกครั้งดังนั้นสำหรับวิธีแก้ไขปัญหาที่ถาวรยิ่งขึ้นฉันได้เพิ่มกฎเพื่อ logrotate เพื่อรีเซ็ต ACL ฉันเพิ่มไฟล์ ..

/etc/logrotate.d/Splunk_ACLs

กับ

{
    postrotate
        /usr/bin/setfacl -m g:splunk:rx /var/log/cron
        /usr/bin/setfacl -m g:splunk:rx /var/log/maillog
        /usr/bin/setfacl -m g:splunk:rx /var/log/messages
        /usr/bin/setfacl -m g:splunk:rx /var/log/secure
        /usr/bin/setfacl -m g:splunk:rx /var/log/spooler
    endscript
}

ตรวจสอบสถานะ ACL ของไฟล์ด้วย

$ getfacl /var/log/messages

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ACL กรุณาดูที่ https://help.ubuntu.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/


นอกจากนี้ยังโพสต์ไป Splunk ตอบanswers.splunk.com/answers/4253/...
กรงขังสุนัขจิ้งจอก

1
โปรดทราบว่า splunk ไม่จำเป็นต้องมีการอนุญาตให้ใช้งานไฟล์บันทึกอ่าน
rojs

@nickfox นั่นคือเนื้อหาทั้งหมด/etc/logrotate.d/Splunk_ACLsที่คุณโพสต์ไว้หรือไม่ คุณไม่จำเป็นต้องระบุเส้นทางใด ๆ เพื่อให้ logrotate ประมวลผลบิต postrotate หรือไม่
Dale Anderson

hmmm ไม่คิดอย่างนั้น ฉันไม่ต้องการแก้ไขการกำหนดค่า logrotate ที่มีอยู่สำหรับบันทึกของระบบและฉันก็ไม่ต้องการแทนที่มันด้วยของฉันเอง วิธีนี้การแก้ไขแบบกำหนดเองสำหรับ splunk มีอยู่อย่างอิสระ ช่วยให้คุณสามารถปรับใช้กับแพคเกจหรือหุ่นเชิด ฯลฯ นั่นคือสิ่งที่ไดเรกทอรี /app.d/ แน่นอนว่าฉันผิดมันเป็นเวลากว่าหนึ่งปีแล้วตั้งแต่ฉันทำเช่นนั้น
nick fox

1
เพียงหมายเหตุที่แนะนำว่าถ้าคุณใช้ตัวเลือก X (เหมือนในตัวพิมพ์ใหญ่ X แทน x) มันจะเพิ่ม
เอ็กซีคิวต์

5

แผนของคุณเป็นที่ยอมรับและในรูปแบบการอนุญาตแบบ Unix เป็นวิธีที่ดีที่สุด
ตัวเลือกอื่นคือให้ syslog เบี่ยงเบนข้อความที่สนใจไปยังไฟล์อื่น (ซึ่งจะช่วยให้ผู้ใช้แอปเข้าถึงสิ่งที่มีความละเอียดอ่อนซึ่งอาจมีอยู่/var/log/messages)

หากคุณไม่รู้สึกอยากถูกผูกมัดกับรูปแบบการอนุญาตแบบดั้งเดิมของผู้ใช้ / กลุ่ม / อื่น ๆ คุณสามารถใช้POSIX ACLs (อื่น ๆ ซึ่งอาจเป็นวิธี / ข้อมูลที่ดีกว่าผ่านทาง Google) เพื่อให้ผู้ใช้แอปอ่านอย่างเดียว/var/log/messages- นี่เป็นสิ่งที่ละเอียดยิ่งขึ้นและไม่เสี่ยงที่จะทำให้คนอื่นอยู่ในกลุ่มแอปพลิเคชันโดยไม่ตั้งใจและให้พวกเขาเข้าถึงสิ่งที่พวกเขาไม่ควรมองเห็น


2

Yip ฉันเคยsetfaclทำเช่นนี้เพื่อให้การเข้าถึงmail.logไฟล์สำหรับลูกค้าไม่ได้คุณจะต้องติดคำสั่งในlogrotate.confไฟล์เพื่อตั้งค่า ACL อีกครั้งหลังจากที่บันทึกการหมุนเช่น:

postrotate
         /usr/bin/setfacl -m o::r /var/log/mail.log  
endscript

หมายเหตุฉันเพิ่งตั้งค่านี้และยังไม่ได้ทดสอบ แต่ถึงจะโพสต์กลับมาที่นี่ได้โปรดดูว่าทำไมจึงไม่ทำงานมีคนแก้ไขฉันถ้าฉันผิด


0

คุณสามารถใช้ACLสำหรับสิ่งนี้ อนุญาตให้คุณตั้งค่ากฎการเข้าถึงเพิ่มเติมเฉพาะสำหรับผู้ใช้และไฟล์เฉพาะ


-1

เมื่อคุณกำหนดค่า ACL ของคุณตามที่คนอื่นพูดแทนที่จะใส่กฎ acl ทั้งหมดของคุณในการกำหนดค่า postrotate คุณสามารถใช้ logrotate เพื่อใช้ copytruncate แทนการสร้างล็อกไฟล์ใหม่ทุกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.