Izin File untuk WSL
Halaman ini merinci bagaimana izin file Linux ditafsirkan di seluruh Subsistem Windows untuk Linux, terutama saat mengakses sumber daya di dalam Windows pada sistem file NT. Dokumentasi ini mengasumsikan pemahaman dasar tentang struktur izin sistem file Linux dan perintah umask.
Saat mengakses file Windows dari WSL, izin file dihitung dari izin Windows, atau dibaca dari metadata yang telah ditambahkan ke file oleh WSL. Metadata ini tidak diaktifkan secara default.
Ketika metadata diaktifkan sebagai opsi pemasangan di WSL, atribut yang diperluas pada file Windows NT dapat ditambahkan dan ditafsirkan untuk menyediakan izin sistem file Linux.
WSL dapat menambahkan empat atribut NTFS yang diperluas:
Nama Atribut | Deskripsi |
---|---|
$LXUID | ID Pemilik Pengguna |
$LXGID | ID Pemilik Grup |
$LXMOD | Mode file (Izin sistem file oktal dan jenis, misalnya: 0777) |
$LXDEV | Perangkat, jika itu adalah file perangkat |
Selain itu, file apa pun yang bukan file atau direktori biasa (misalnya: symlinks, FIFO, perangkat blok, soket unix, dan perangkat karakter) juga memiliki titik pemisahan ulang NTFS. Ini membuatnya jauh lebih cepat untuk menentukan jenis file dalam direktori tertentu tanpa harus mengkueri atribut yang diperluas.
Di bawah ini adalah deskripsi tentang bagaimana izin ditentukan saat mengakses file dengan cara yang berbeda menggunakan Subsistem Windows untuk Linux.
Skenario ini terjadi ketika Anda mengakses file Windows dari WSL, kemungkinan besar melalui /mnt/c
.
Hasilnya tergantung pada apakah file sudah memiliki metadata yang ada.
Jika file tidak memiliki metadata yang terkait dengannya maka kami menerjemahkan izin efektif pengguna Windows untuk membaca/menulis/menjalankan bit dan mengaturnya ke nilai yang sama untuk pengguna, grup, dan lainnya. Misalnya, jika akun pengguna Windows Anda telah membaca dan menjalankan akses tetapi tidak menulis akses ke file maka ini akan ditampilkan sebagai r-x
untuk pengguna, grup, dan lainnya. Jika file memiliki atribut 'Baca Saja' yang diatur di Windows, maka kami tidak memberikan akses tulis di Linux.
Jika file memiliki metadata yang ada, kita cukup menggunakan nilai metadata tersebut alih-alih menerjemahkan izin efektif pengguna Windows.
Hasilnya tergantung pada apakah file sudah memiliki metadata yang ada.
Chmod hanya akan memiliki satu efek, jika Anda menghapus semua atribut tulis file maka atribut 'baca saja' pada file Windows akan diatur, karena ini adalah perilaku yang sama dengan CIFS (Common Internet File System) yang merupakan klien SMB (Server Message Block) di Linux.
Chmod akan mengubah atau menambahkan metadata tergantung pada metadata file yang sudah ada.
Harap diingat bahwa Anda tidak dapat memberi diri Anda lebih banyak akses daripada apa yang Anda miliki di Windows, bahkan jika metadata mengatakan itu adalah kasusnya. Misalnya, Anda dapat mengatur metadata untuk menampilkan bahwa Anda memiliki izin tulis ke file menggunakan chmod 777
, tetapi jika Anda mencoba mengakses file tersebut, Anda masih tidak akan dapat menulis ke file tersebut. Ini berkat interoperabilitas, karena perintah baca atau tulis apa pun ke file Windows dirutekan melalui izin pengguna Windows Anda.
Hasilnya bergantung pada apakah metadata diaktifkan.
Izin Windows dari file yang baru dibuat akan sama seperti jika Anda membuat file di Windows tanpa deskriptor keamanan tertentu, itu akan mewarisi izin induk.
Bit izin file diatur untuk mengikuti umask Linux, dan file akan disimpan dengan metadata.
Hasilnya tergantung pada apakah file sudah memiliki metadata yang ada.
Dalam skenario default, saat melakukan pengotomatisan drive Windows, kami menentukan bahwa ID pengguna (UID) untuk file apa pun diatur ke ID pengguna pengguna WSL Anda dan ID grup (GID) diatur ke ID grup utama pengguna WSL Anda.
UID dan GID yang ditentukan dalam metadata diterapkan sebagai pemilik pengguna dan pemilik grup file.
Mengakses file Linux melalui \\wsl$
akan menggunakan pengguna default distribusi WSL Anda. Oleh karena itu setiap aplikasi Windows yang mengakses file Linux akan memiliki izin yang sama dengan pengguna default.
Umask default diterapkan saat membuat file baru di dalam distribusi WSL dari Windows. Umask default adalah 022
, atau dengan kata lain memungkinkan semua izin kecuali izin tulis ke grup dan lainnya.
Setiap file yang dibuat, dimodifikasi, atau diakses dalam sistem file root Linux mengikuti konvensi Linux standar, seperti menerapkan umask ke file yang baru dibuat.
Anda dapat mengonfigurasi izin file di dalam drive Windows menggunakan opsi pemasangan di wsl.conf. Opsi pemasangan memungkinkan Anda mengatur umask
masker izin , dmask
dan fmask
. umask
diterapkan ke semua file, dmask
diterapkan hanya ke direktori dan fmask
diterapkan hanya ke file. Masker izin ini kemudian dimasukkan melalui operasi ATAU logis saat diterapkan ke file, misalnya: Jika Anda memiliki umask
nilai 023
dan fmask
nilai 022
maka masker izin yang dihasilkan untuk file akan menjadi 023
.
Pelajari lebih lanjut: Per opsi konfigurasi distribusi dengan wsl.conf.
Umpan balik Windows Subsystem for Linux
Windows Subsystem for Linux adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: