จำกัด การเข้าถึงไฟล์เพื่อต่อท้ายเท่านั้น


12

ฉันมีไดเรกทอรีพร้อมไฟล์บันทึกและฉันวางบันทึกจากสคริปต์ที่เปิดตัวโดยผู้ใช้ลงในพวกเขา การบันทึกด้วย syslog ไม่สามารถทำได้ในกรณีนี้ (ไม่ใช่ daemon rsync)

ฉันต้องการให้ผู้ใช้มีสิทธิ์เขียนไฟล์บันทึกเท่านั้น ปัญหาคือสิทธิ์ในการเขียนที่ต้องถูก จำกัด เพิ่มเติมเพื่อให้ผู้ใช้ (สคริปต์) สามารถผนวกเข้ากับไฟล์นั้นเท่านั้น ระบบไฟล์พื้นฐานคือ XFS

ต่อไปนี้ใช้ไม่ได้:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

มีวิธีอื่นในการนี้หรือไม่? ขอบคุณสำหรับคำแนะนำของคุณ


คุณแน่ใจหรือว่าเป็น XFS chattr +aทำงานได้สำหรับฉันที่นี่ (3.2 เคอร์เนล) โปรดทราบว่าคุณจะต้องรูทเพื่อใช้chattr( $พร้อมท์แนะนำให้ไม่ใช่ผู้ใช้ระดับสูง) แต่คุณจะได้รับข้อความแสดงข้อผิดพลาดอื่น ๆ หากchattr +aได้รับการสนับสนุนและคุณไม่รูท
Stéphane Chazelas


ตัวเลือกการเมานท์บนพาร์ติชั่นคืออะไร? มันอาจจะเก็บไว้โดยใช้ xattr ซึ่งอาจต้องมีตัวเลือกการเมาท์ที่เกี่ยวข้อง? (socumentation สำหรับ XFS ไม่ได้พูดถึงเรื่องนี้มากเช่นกัน ... )
Gert van den Berg

สิ่งนี้ปิดใน SF ดังนั้นฉันจึงเปิดทิ้งไว้ที่นี่
Michael Mrozek

คำตอบ:


8

chattrยูทิลิตี้ถูกเขียนขึ้นสำหรับ ext2 / ext3 / ext4 filesystems มันปล่อยioctlsบนไฟล์ดังนั้นมันก็ขึ้นอยู่กับระบบไฟล์พื้นฐานที่จะตัดสินใจว่าจะทำอย่างไรกับพวกเขา ไดรเวอร์ XFS ในเคอร์เนล Linux รุ่นใหม่รองรับFS_IOC_SETFLAGSioctl เช่นเดียวกับ ext [234] เพื่อควบคุมการตั้งค่าสถานะเช่นผนวกเท่านั้น แต่คุณอาจใช้เคอร์เนลรุ่นเก่าที่ไม่มี (CentOS?) ลองใช้xfs_ioยูทิลิตี้แทน:

echo chattr +a | xfs_io test.log

โปรดทราบว่าสำหรับ XFS เช่น ext [234] เฉพาะ root เท่านั้นที่สามารถเปลี่ยนการตั้งค่าสถานะผนวกเท่านั้น (แม่นยำยิ่งขึ้นคุณต้องมีCAP_LINUX_IMMUTABLEความสามารถ)


1

คุณมีสิทธิ์ทำเช่นนั้นหรือไม่? จากman 1 chattr:

ไฟล์ที่มี `a 'attribute set สามารถเปิดได้ในโหมดต่อท้ายเพื่อการเขียนเท่านั้น เฉพาะ superuser หรือกระบวนการที่มีความสามารถ CAP_LINUX_IMMUTABLE เท่านั้นที่สามารถตั้งค่าหรือล้างแอตทริบิวต์นี้


0

อีกทางหนึ่งคุณสามารถบรรลุผลเช่นเดียวกันโดยใช้SELinuxโอกาสที่จะเปิดใช้งานและทำงานหากคุณใช้ Distro ที่รองรับ Red Hat สิ่งนี้ใช้ได้กับทุกระบบไฟล์ SELinux จะบล็อกกระบวนการจากการดำเนินการที่ไม่อนุญาต

น่าเสียดายที่คุณต้องเขียนนโยบายสำหรับแอปพลิเคชันของคุณเพื่ออนุญาตการเข้าถึงทรัพยากรระบบทั้งหมดยกเว้นการต่อท้ายไฟล์บางไฟล์ นี่อาจเป็นเรื่องท้าทายเล็กน้อยหากคุณทำสิ่งนี้เป็นครั้งแรก แต่ก็มีข้อได้เปรียบในเรื่องความปลอดภัยที่เพิ่มเข้ามา

ฉันมีตัวอย่างวิธีเขียนกฎไฟล์ผนวกเท่านั้นในการพูดคุยนี้: https://www.youtube.com/watch?v=zQcYXJkwTns

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