Xattr ve chattr arasındaki fark


10

İlişki ve arasındaki fark nedir xattrve chattr? chattrLinux'ta Linux çekirdeği ve inode meta verilerinin içinde neler olduğunu belirlediğimde bilmek istiyorum .


Dün ilgili bir soruya yardımcı olabilecek uzun bir cevap yazdım - unix.stackexchange.com/questions/118840/… . Not o attrkomut XFS dosya sistemleri için tasarlanmıştır, eşdeğer dosya sistemi bağımsız komutsetfattr
Graeme

Yanıtlar:


14

Linux tarafından lsattr/ chattrLinux tarafından yönetilen ve bazıları oldukça az dosya sistemi (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) tarafından saklanabilen ve hatta CIFS üzerinden sorgulanabilen öznitelikler / SMB (POSIX uzantılarındayken) bayraklardır. Bir özniteliği devre dışı bırakmak veya etkinleştirmek için ( değiştirilemez veya arşiv gibi ...) açılabilir veya kapatılabilen bitler . Nasıl saklandıkları dosya sistemine özgüdür, ancak genellikle inode'da 16/32/64 bit kayıt olarak bulunur.

Bayrakların tam listesi Linux yerel dosya sistemlerinde (ext2 / 3/4, btrfs ...) bulunur, ancak tüm bayraklar tüm FS için geçerli değildir ve diğer yerel olmayan FS için Linux bunları eşdeğer olarak eşlemeye çalışır ilgili dosya sistemindeki özellikler. Örneğin , OSX tarafından HFS + dosya sistemlerinde saklanan benzeşebilir bayrak Linux'ta karşılık gelen değişmez bayrağa eşlenir chattr. Hangi bayrak sistemi hiç bir şekilde belgelenmemektedir. Çoğu zaman, çekirdek kaynak kodunu okumak tek seçenektir.

Genişletilmiş öznitelikler ise Linux ile setfattrveya attrLinux'ta ayarlandığı gibi bayraklardan daha fazlasını depolar. Bir dosyaya da eklenirler ve (hem anahtar hem de değer) rastgele bayt dizileri olabilen anahtar / değer çiftleridir (ancak bazı dosya sistemlerinde boyut sınırlaması olsa da).

Anahtar örneğin: system.posix_acl_accessveya olabilir user.rsync.%stat. systemAd (Birlikte POSIX ACL değiştirmek olmaz sistem için ayrılmıştır setfattr, ancak daha fazla olan setfaclPOSIX ACL sadece bazı dosya sistemleri üzerinde en az genişletilmiş özellikler olarak depolanacak olur,) ise, userad uygulamalar tarafından kullanılabilecek burada ( rsyncbunu --fake-supersüper kullanıcı olmadığınızda sahiplik veya izinlerle ilgili bilgileri depolamak için kullanır ).

Yine, nasıl saklandıkları dosya sistemine özeldir. Daha fazla bilgi için WikiPedia'ya bakın .


Do lsattr/ chattrolmayan için çalışma extdosya sistemleri? Değilse extLinux'ta olmayan sistemlerde bayrakları nasıl değiştirirdiniz ? Ayrıca attrman sayfası XFS için yazıldığını söylüyor (benim için çalışmasına rağmen ext4). Aslında bunu incelemek için uzun zaman geçirdim, iyi bilgiler bulmak zor. Lütfen bakınız - unix.stackexchange.com/questions/118840/…
Graeme

@Graneme, bu soruların cevapları cevabımda. lsattr/chattrdosya bayrakları içindir. Tüm bayraklar tüm dosya sistemleri tarafından desteklenmez, örneğin sıkıştırma gibi bazıları ext4 üzerinde çalışmaz ancak btrfs üzerinde çalışır.
Stéphane Chazelas

İlgileniyorsanız, bu bayrakları birkaç dosya sisteminde test etmek için bir komut dosyası yazdım ve sonuçları yukarıda bağlantılı cevabım üzerine koydum. Hiçbir ayarı / okuma hiçbir başarı vardı reiserfs.
Graeme

-1

Her şey içinde stroed edilmiştir inodeEğer gerçekten onun değiştirmek, bir dosyayı değiştirmek .her inodeEğer iyi bir komut var İçerir komut:

stat --format=%a yourfile

Şuradan %variableyararlı bir ürünü kullanabilirsiniz :inode

Ama cevabınız:

xattrMacOS'ta ve chattrlinux kutusunda.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.