Linux: วิธีการบังคับใช้สิทธิ์เฉพาะในบันทึกที่สร้างขึ้นใหม่ซึ่งสร้างขึ้นโดยการหมุนเวียนบันทึก


15

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

chmod o+r /var/log/maillog

ตอนนี้เมื่อฉันคิดเกี่ยวกับมันเป็นไฟล์บันทึกเพียงไฟล์เดียวเมื่อไฟล์บันทึกจะถูกเติมกลไกการหมุนของล็อกจะเปลี่ยนชื่อไฟล์นี้และเปิดไฟล์ใหม่ แต่maillogไฟล์ใหม่จะไม่มีไฟล์read writeที่ฉันอนุญาต

ดังนั้นคำถามของฉันคือฉันจะแน่ใจได้อย่างไรว่ากลไกการหมุนเวียนบันทึกจะสร้างไฟล์ mailllog ใหม่ทั้งหมดที่มีสิทธิ์ที่เหมาะสมสำหรับผู้ใช้ Nagios

ขอบคุณล่วงหน้า

คำตอบ:


21

logrotateมีcreateตัวเลือก:

create mode owner group

ทันทีหลังจากการหมุน (ก่อนเรียกใช้สคริปต์ postrotate) ไฟล์บันทึกจะถูกสร้างขึ้น (ด้วยชื่อเดียวกับไฟล์บันทึกที่เพิ่งหมุน) modeระบุโหมดสำหรับไฟล์บันทึกในฐานแปด (เหมือนกับ chmod (2)), เจ้าของระบุชื่อผู้ใช้ที่จะเป็นเจ้าของไฟล์บันทึกและกลุ่มระบุกลุ่มที่ไฟล์บันทึกจะเป็นของ แอ็ตทริบิวต์ไฟล์บันทึกใด ๆ อาจถูกละเว้นซึ่งในกรณีนี้แอ็ตทริบิวต์เหล่านั้นสำหรับไฟล์ใหม่จะใช้ค่าเดียวกันกับไฟล์บันทึกดั้งเดิมสำหรับแอททริบิวต์ที่ละเว้น ตัวเลือกนี้สามารถปิดการใช้งานโดยใช้ตัวเลือก nocreate

man logrotateข้อมูลเพิ่มเติมกับ

ใช้มันอย่างนั้น:

/var/log/maillog {
....
        create 664 user group
....
}

ไม่ว่าจะใน/etc/logrotate.confหรือแยกไฟล์ใน/etc/logrotate.dและตรวจสอบว่าไม่มีไฟล์อื่นแทนที่นี้ วิธีการกำหนดค่านี้ขึ้นอยู่กับระบบปฏิบัติการของคุณ (เช่นใน Ubuntu สิ่งนี้ได้รับการจัดการในการrsyslogกำหนดค่า)


ฉันจะกำหนดค่าว่า/var/log/maillogจะสร้างไฟล์บันทึกในอนาคตเท่านั้นด้วยสิทธิ์ผู้ใช้ที่ต้องการโดยไม่เปลี่ยนแปลงการตั้งค่าเริ่มต้นใด ๆ ที่ใช้กับ maillog อยู่แล้ว?
Itai Ganot

ดูแก้ไขและการอ่านของฉันman logrotate(และดูเป็น/etc/logrotate.confและ/etc/logrotate.dสำหรับจำนวนมากตัวอย่าง)
สเวน

2
@ItaiGanot คุณควรแก้ไขการตั้งค่า syslog ของคุณเพื่อสร้างไฟล์ที่มีสิทธิ์ที่เหมาะสมแทนที่จะใช้ chmod เริ่มต้น
เจนนี่ D

@ JennyD ขอบคุณนั่นหมายความว่าฉันควรลบ/var/log/maillogบรรทัดออก/etc/logrotate.d/syslogดังนั้นการตั้งค่า/etc/logrotate.confจะเกิดขึ้นหรือไม่
Itai Ganot

2
@ItaiGanot ไม่! หมายความว่าคุณควรทราบว่าคุณใช้โปรแกรม syslog ใด (อาจเป็นsyslog-ngหรือrsyslog) และเปลี่ยนการตั้งค่า สิ่งนี้มีความจำเป็นเพราะเมื่อระบบของคุณถูกรีบูตหรือโปรแกรม syslog ของคุณถูกรีสตาร์ทด้วยเหตุผลอื่น ๆ มันอาจจะสร้างไฟล์ขึ้นใหม่โดยมีการอนุญาตที่ผิด
เจนนี่ D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.