Bagikan melalui


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.

Metadata WSL pada file Windows

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.

Skenario Akses File

Di bawah ini adalah deskripsi tentang bagaimana izin ditentukan saat mengakses file dengan cara yang berbeda menggunakan Subsistem Windows untuk Linux.

Mengakses File di sistem file drive Windows (DrvFS) dari Linux

Skenario ini terjadi ketika Anda mengakses file Windows dari WSL, kemungkinan besar melalui /mnt/c.

Membaca izin file dari file Windows yang sudah ada

Hasilnya tergantung pada apakah file sudah memiliki metadata yang ada.

File DrvFS tidak memiliki metadata (default)

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.

File memiliki metadata

Jika file memiliki metadata yang ada, kita cukup menggunakan nilai metadata tersebut alih-alih menerjemahkan izin efektif pengguna Windows.

Mengubah izin file pada file Windows yang ada menggunakan chmod

Hasilnya tergantung pada apakah file sudah memiliki metadata yang ada.

file chmod tidak memiliki metadata (default)

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.

file chmod memiliki metadata

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.

Membuat file di DriveFS

Hasilnya bergantung pada apakah metadata diaktifkan.

Metadata tidak diaktifkan (default)

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.

Metadata diaktifkan

Bit izin file diatur untuk mengikuti umask Linux, dan file akan disimpan dengan metadata.

Pengguna Linux dan grup Linux mana yang memiliki file?

Hasilnya tergantung pada apakah file sudah memiliki metadata yang ada.

File pengguna tidak memiliki metadata (default)

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.

File pengguna memiliki metadata

UID dan GID yang ditentukan dalam metadata diterapkan sebagai pemilik pengguna dan pemilik grup file.

Mengakses file Linux dari Windows menggunakan \\wsl$

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.

Membuat file baru

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.

Mengakses file di sistem file akar Linux dari Linux

Setiap file yang dibuat, dimodifikasi, atau diakses dalam sistem file root Linux mengikuti konvensi Linux standar, seperti menerapkan umask ke file yang baru dibuat.

Mengonfigurasi izin file

Anda dapat mengonfigurasi izin file di dalam drive Windows menggunakan opsi pemasangan di wsl.conf. Opsi pemasangan memungkinkan Anda mengatur umaskmasker 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.