Saya percaya bahwa sistem file FAT32 tidak mendukung izin file, namun ketika saya melakukannya ls -l
pada partisi FAT32, ls -l
menunjukkan bahwa file memiliki izin:
-rw-r--r-- 1 john john 11 Mar 20 15:43 file1.txt
-rw-r--r-- 1 john john 5 Mar 20 15:49 file2.txt
Mengapa ls -l
menampilkan izin file?
linux
permissions
filesystems
fat
fat32
pengguna342731
sumber
sumber
Jawaban:
Filesystem yang disimpan di disk tidak menyimpan izin file, tetapi driver filesystem harus menyediakannya ke sistem operasi karena mereka merupakan bagian integral dari konsep sistem file Unix dan antarmuka panggilan sistem tidak memiliki cara untuk menyajikan bahwa izin tersebut hilang.
Juga pertimbangkan apa yang akan terjadi jika file tidak memiliki bit izin sama sekali? Apakah sama dengan
0777
, yaitu akses ke semua; atau sama dengan0000
, yaitu tidak ada akses ke siapa pun? Namun keduanya adalah izin file, jadi mengapa tidak perlihatkan? Atau lakukan sesuatu yang lebih bermanfaat dan memiliki cara untuk mengatur beberapa izin yang masuk akal.Jadi, pengemudi memalsukan beberapa izin, yang sama untuk semua file. Izin bersama dengan pemilik dan grup file dapat dikonfigurasi pada waktu pemasangan. Ini dijelaskan di bawah "Mount options for fat" di halaman manual mount (8) :
Perhatikan bahwa izin disajikan sebagai topeng, jadi izin final adalah negasi dari topeng.
fmask=0133
akan menghasilkan semua file yang memiliki izin0644
, ataurw-r--r--
.Selain itu, default diwarisi dari proses pemanggilan
mount()
, jadi jika Anda meneleponmount
dari baris perintah, shellumask
akan berlaku.sumber
umask
opsi mount, yang nilai defaultnya adalah umaskmount
proses (lihat halaman manual yang ditautkan dalam jawaban ini).chmod ugo-w
pada file akan mengaktifkan atribut read-only. Menggunakanfmask=0133
opsi seperti pada contoh Anda tidak akan menghasilkan semua file memiliki izin 0644. Apa FAT benar-benar tidak menyimpan adalah uid dan gid untuk setiap file. Mohon klarifikasi; jawabannya seperti itu sangat menyesatkan.Tetapi file memiliki izin. Pengguna john memiliki akses RW, sementara beberapa pengguna acak hanya memiliki akses baca. Izin ini tidak berasal dari filesystem itu sendiri melainkan dari opsi mount (-o uid / gid / umask), yang tidak membuatnya kurang nyata.
Anda bisa membuat beberapa partisi vfat di-mount dengan opsi yang berbeda dan Anda bisa menggunakan ls untuk menentukan opsi-opsi itu. Anda bahkan dapat menggunakan mount --bind untuk membuat direktori tunggal berisi file dari partisi vfat yang berbeda, dan ls akan dengan benar menunjukkan izin apa yang telah ditentukan untuk setiap file.
sumber
ls
tidak tahu tentang FAT32, ia hanya tahu tentang antarmuka Sistem File Virtual (VFS) yang diekspos oleh kernel dengan panggilan POSIXopen
/readdir
/stat
sistem.Linux tidak mendukung konsep file yang tidak memiliki bit izin pengguna / grup / lainnya,
struct stat
cukup berisimode_t st_mode;
anggota (dan uid, anggota gid) yang harus diisi oleh kernel ketikals -l
melakukanstat(2)
panggilan sistem.Tidak ada kode khusus yang berarti "tidak tersedia" atau "tidak berlaku" untuk bidang-bidang tersebut, sehingga driver vfat kernel harus membuat sesuatu. FAT16 / FAT32 memang memiliki flag read-only, tetapi sebaliknya pemilik / grup berasal dari opsi mount, dan begitu juga umask.
sumber