Apa hubungan dan perbedaan antara xattrdan chattr? Saya ingin tahu kapan saya menetapkan chattratribut di Linux apa yang terjadi di dalam kernel dan metadata inode Linux.
Saya menulis jawaban panjang pada pertanyaan terkait kemarin yang mungkin bisa membantu - unix.stackexchange.com/questions/118840/… . Perhatikan bahwa attrperintah ini ditujukan untuk sistem file XFS, perintah independen sistem file yang setara adalahsetfattr
Graeme
Jawaban:
13
Atribut yang ditangani oleh lsattr/ chattrdi Linux dan beberapa di antaranya dapat disimpan oleh beberapa sistem file (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) dan bahkan dipertanyakan melalui CIFS / SMB (ketika dengan ekstensi POSIX) adalah flag. Hanya bit yang dapat dinyalakan atau dimatikan untuk menonaktifkan atau mengaktifkan atribut (seperti yang tidak dapat diubah atau arsip ...). Bagaimana mereka disimpan adalah sistem file khusus, tetapi umumnya sebagai catatan 16/32/64 bit dalam inode.
Daftar lengkap flag terdapat pada sistem file asli Linux (ext2 / 3/4, btrfs ...) meskipun tidak semua flag berlaku untuk semua FS, dan untuk FS non-pribumi lainnya, Linux mencoba memetakannya ke yang setara fitur dalam sistem file yang sesuai. Misalnya flag simmutable yang disimpan oleh OSX pada sistem file HFS + dipetakan ke flag immutable yang sesuai di Linux chattr. Bendera apa yang didukung oleh sistem file apa yang sulit didokumentasikan sama sekali. Seringkali, membaca kode sumber kernel adalah satu-satunya pilihan.
Atribut yang diperluas di sisi lain, sebagaimana diatur dengan setfattratau attrdi Linux menyimpan lebih dari flag. Mereka juga dilampirkan ke file, dan merupakan pasangan kunci / nilai yang dapat (baik kunci dan nilai) array byte yang sewenang-wenang (meskipun dengan batasan ukuran pada beberapa sistem file).
Kuncinya dapat misalnya: system.posix_acl_accessatau user.rsync.%stat. The systemnamespace dicadangkan untuk sistem (Anda tidak akan mengubah POSIX ACL dengan setfattr, tetapi lebih banyak dengan setfacl, POSIX ACL hanya terjadi untuk disimpan sebagai atribut diperpanjang setidaknya pada beberapa sistem file), sedangkan usernamespace dapat digunakan oleh aplikasi (di sini rsyncmenggunakannya untuk --fake-superopsinya, untuk menyimpan informasi tentang kepemilikan atau izin ketika Anda bukan pengguna super).
Sekali lagi, bagaimana mereka disimpan adalah sistem file yang spesifik. Lihat WikiPedia untuk informasi lebih lanjut .
Apakah lsattr/ chattrbekerja untuk extsistem file non ? Jika tidak, bagaimana Anda akan mengubah tanda di non extsistem di Linux? Juga attrhalaman manual mengatakan bahwa ini ditulis untuk XFS (meskipun berfungsi untuk saya ext4). Saya benar-benar menghabiskan waktu lama melihat ini kemarin, informasi yang baik sulit didapat. Silakan lihat - unix.stackexchange.com/questions/118840/...
Graeme
@ Greme, jawaban atas pertanyaan-pertanyaan itu ada dalam jawaban saya. lsattr/chattradalah untuk flag file. Tidak semua flag didukung oleh semua sistem file, misalnya, beberapa dari mereka seperti kompresi tidak akan berfungsi pada ext4 tetapi akan bekerja pada btrfs.
Stéphane Chazelas
Jika Anda tertarik, saya menulis sebuah skrip untuk menguji flag-flag ini pada beberapa filesystem dan memberikan hasilnya pada jawaban saya yang ditautkan di atas. Saya tidak berhasil mengatur / membacanya reiserfs.
Graeme
-1
Semuanya telah di-stroed inode. Ketika Anda mengubah file, memang Anda mengubah. Untuk inodeskrip Anda memiliki perintah yang baik:
stat --format=%a yourfile
Anda dapat menggunakan %variabledan mengembalikan yang bermanfaat dariinode
attr
perintah ini ditujukan untuk sistem file XFS, perintah independen sistem file yang setara adalahsetfattr
Jawaban:
Atribut yang ditangani oleh
lsattr
/chattr
di Linux dan beberapa di antaranya dapat disimpan oleh beberapa sistem file (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) dan bahkan dipertanyakan melalui CIFS / SMB (ketika dengan ekstensi POSIX) adalah flag. Hanya bit yang dapat dinyalakan atau dimatikan untuk menonaktifkan atau mengaktifkan atribut (seperti yang tidak dapat diubah atau arsip ...). Bagaimana mereka disimpan adalah sistem file khusus, tetapi umumnya sebagai catatan 16/32/64 bit dalam inode.Daftar lengkap flag terdapat pada sistem file asli Linux (ext2 / 3/4, btrfs ...) meskipun tidak semua flag berlaku untuk semua FS, dan untuk FS non-pribumi lainnya, Linux mencoba memetakannya ke yang setara fitur dalam sistem file yang sesuai. Misalnya flag simmutable yang disimpan oleh OSX pada sistem file HFS + dipetakan ke flag immutable yang sesuai di Linux
chattr
. Bendera apa yang didukung oleh sistem file apa yang sulit didokumentasikan sama sekali. Seringkali, membaca kode sumber kernel adalah satu-satunya pilihan.Atribut yang diperluas di sisi lain, sebagaimana diatur dengan
setfattr
atauattr
di Linux menyimpan lebih dari flag. Mereka juga dilampirkan ke file, dan merupakan pasangan kunci / nilai yang dapat (baik kunci dan nilai) array byte yang sewenang-wenang (meskipun dengan batasan ukuran pada beberapa sistem file).Kuncinya dapat misalnya:
system.posix_acl_access
atauuser.rsync.%stat
. Thesystem
namespace dicadangkan untuk sistem (Anda tidak akan mengubah POSIX ACL dengansetfattr
, tetapi lebih banyak dengansetfacl
, POSIX ACL hanya terjadi untuk disimpan sebagai atribut diperpanjang setidaknya pada beberapa sistem file), sedangkanuser
namespace dapat digunakan oleh aplikasi (di sinirsync
menggunakannya untuk--fake-super
opsinya, untuk menyimpan informasi tentang kepemilikan atau izin ketika Anda bukan pengguna super).Sekali lagi, bagaimana mereka disimpan adalah sistem file yang spesifik. Lihat WikiPedia untuk informasi lebih lanjut .
sumber
lsattr
/chattr
bekerja untukext
sistem file non ? Jika tidak, bagaimana Anda akan mengubah tanda di nonext
sistem di Linux? Jugaattr
halaman manual mengatakan bahwa ini ditulis untuk XFS (meskipun berfungsi untuk sayaext4
). Saya benar-benar menghabiskan waktu lama melihat ini kemarin, informasi yang baik sulit didapat. Silakan lihat - unix.stackexchange.com/questions/118840/...lsattr/chattr
adalah untuk flag file. Tidak semua flag didukung oleh semua sistem file, misalnya, beberapa dari mereka seperti kompresi tidak akan berfungsi pada ext4 tetapi akan bekerja pada btrfs.reiserfs
.Semuanya telah di-stroed
inode
. Ketika Anda mengubah file, memang Anda mengubah. Untukinode
skrip Anda memiliki perintah yang baik:Anda dapat menggunakan
%variable
dan mengembalikan yang bermanfaat dariinode
Tapi jawaban Anda:
xattr
ada di MacOS danchattr
di kotak linux.sumber