ความแตกต่างระหว่าง xattr และ chattr


9

ความสัมพันธ์และความแตกต่างระหว่างxattrและchattrคืออะไร? ฉันต้องการทราบเมื่อฉันตั้งค่าchattrคุณลักษณะใน Linux สิ่งที่เกิดขึ้นภายในเคอร์เนล Linux และข้อมูลเมตาของ inode


ผมเขียนคำตอบยาวในคำถามที่เกี่ยวข้องเมื่อวานนี้ซึ่งอาจจะเป็นประโยชน์ - unix.stackexchange.com/questions/118840/... โปรดทราบว่าattrคำสั่งมีไว้สำหรับระบบไฟล์ XFS คำสั่งอิสระของระบบไฟล์เทียบเท่าคือsetfattr
Graeme

คำตอบ:


13

แอ็ตทริบิวต์ที่จัดการโดยlsattr/ chattrบน Linux และบางส่วนสามารถจัดเก็บได้โดยระบบไฟล์บางส่วน (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ... ) และแม้กระทั่งสอบถามผ่าน CIFS / SMB (เมื่อมีส่วนขยาย POSIX) เป็นแฟล็ก เพียงแค่บิตที่สามารถเปิดหรือปิดเพื่อปิดใช้งานหรือเปิดใช้งานแอตทริบิวต์ (เช่นไม่เปลี่ยนรูปหรือเก็บถาวร ... ) วิธีจัดเก็บเป็นระบบไฟล์เฉพาะ แต่โดยทั่วไปเป็นเร็กคอร์ด 16/32/64 บิตใน inode

รายการธงทั้งหมดพบได้ในระบบไฟล์เนทิฟของ Linux (ext2 / 3/4, ... คุณสมบัติในระบบไฟล์ที่สอดคล้องกัน สำหรับกรณีที่simmutableธงเป็นที่จัดเก็บโดย OSX บนระบบไฟล์ HFS + chattrถูกจับคู่กับธงเปลี่ยนรูปที่สอดคล้องกันในลินุกซ์ การตั้งค่าสถานะใดที่สนับสนุนโดยระบบไฟล์ใดที่มีการจัดทำเอกสารแทบจะไม่ บ่อยครั้งที่การอ่านซอร์สโค้ดเคอร์เนลเป็นเพียงตัวเลือกเท่านั้น

คุณลักษณะเพิ่มเติมในทางกลับกันตามที่กำหนดด้วยsetfattrหรือattrบน Linux เก็บมากกว่าธง พวกเขาจะแนบไปกับไฟล์เช่นกันและเป็นคู่ของคีย์ / ค่าที่สามารถ (ทั้งที่สำคัญและค่า) อาร์เรย์โดยพลการของไบต์ (แม้ว่าจะมีข้อ จำกัด ของขนาดในบางระบบไฟล์)

ที่สำคัญสามารถเช่น: หรือsystem.posix_acl_access namespace ถูกสงวนไว้สำหรับระบบ (คุณจะไม่เปลี่ยน POSIX ACLs มีแต่มากขึ้นด้วย, POSIX ACLs เพิ่งเกิดขึ้นจะถูกเก็บไว้เป็นคุณสมบัติการขยายอย่างน้อยในระบบไฟล์บางส่วน) ในขณะที่namespace สามารถนำมาใช้โดยการใช้งาน (ที่นี่ใช้สำหรับตัวเลือกเพื่อเก็บข้อมูลเกี่ยวกับความเป็นเจ้าของหรือการอนุญาตเมื่อคุณไม่ได้เป็น superuser)user.rsync.%statsystemsetfattrsetfacluserrsync--fake-super

อีกครั้งวิธีที่พวกเขาเก็บไว้เป็นระบบแฟ้มที่เฉพาะเจาะจง ดูวิกิพีเดียสำหรับข้อมูลเพิ่มเติม


ทำlsattr/ chattrการทำงานสำหรับผู้ที่ไม่ใช่extระบบไฟล์? ถ้าไม่ใช่คุณจะเปลี่ยนสถานะบนextระบบที่ไม่ใช่บน Linux ได้อย่างไร? นอกจากนี้ยังมีattrหน้าคนบอกว่ามันถูกเขียนขึ้นสำหรับ XFS (แม้ว่ามันจะทำงานสำหรับฉันในext4) จริง ๆ แล้วฉันใช้เวลานานในการดูเมื่อวานนี้ข้อมูลที่ดีมายาก โปรดดู - unix.stackexchange.com/questions/118840/…
แกรม

@ Graeme คำตอบสำหรับคำถามเหล่านั้นอยู่ในคำตอบของฉัน lsattr/chattrใช้สำหรับแฟล็กไฟล์ ระบบไฟล์ทั้งหมดอาจไม่สนับสนุนการตั้งค่าสถานะทั้งหมดบางอย่างเช่นการบีบอัดจะไม่ทำงานบน ext4 แต่จะทำงานบน btrfs
Stéphane Chazelas

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

-1

ทุกอย่างเข้ามาinodeเมื่อคุณเปลี่ยนไฟล์แน่นอนคุณเปลี่ยนinode. สำหรับการเขียนสคริปต์คุณมีคำสั่งที่ดี:

stat --format=%a yourfile

คุณสามารถใช้%variableและคืนประโยชน์จากinode

แต่คำตอบของคุณ:

xattrอยู่ใน MacOS และchattrในกล่อง linux

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