Saya benar-benar bingung antara umask dan chmod. Keduanya digunakan untuk memberikan izin ke file. Tapi di mana tepatnya perbedaan dan kapan menggunakannya.
Saya telah membaca dokumentasi online tetapi keduanya terlihat sama bagi saya.
umask: umask digunakan untuk mengatur izin file default. Izin ini akan digunakan untuk semua file berikutnya selama pembuatannya. chmod: digunakan untuk mengubah izin file dan direktori.
Sesuai pemahaman saya jika misalnya file test.doc dibuat.
Secara default unix memberi kode 022 file umask.
Sekarang ketika saya mengubahnya ke chmod 666 test.doc saya dapat mengubah tingkat izin file ini.
Sekarang bagaimana jika saya menggunakan umask 666 untuk file yang sama.
Apa bedanya ketika saya menggunakan chmod 666 dan umask 666
umask
menetapkan variabel lingkungan yang secara otomatis menetapkan izin file untuk file yang baru dibuat .chmod
mengubah izin file yang ada .umask
tidak mengatur "variabel lingkungan" Apa yang dilakukannya adalah mengatur topeng pembuatan mode file dari lingkungan eksekusi shell saat ini.Jawaban:
Perbedaannya adalah bahwa
umask
hanya memerlukan file baru . Seperti yang Anda nyatakan, umask menetapkan izin default yang akan dimiliki file / direktori pada waktu pembuatan, tetapi setelahumask
itu tidak memengaruhi mereka lagi.chmod
Namun, perlu file dibuat sebelum dijalankan.Karena itu, jika Anda menjalankannya
umask
, itu tidak akan berpengaruh sama sekali pada file yang ada.sumber
umask
file, itu tidak memilikifile
argumen.umask
sangat berbeda darichmod
, sebenarnya.Perbedaan penting belum disebutkan:
chmod
set, tetapiumask
membersihkan (membatasi) bit izin. Itu sebabnya ini disebut "topeng" (seperti dalam "bitmask").Seperti yang ditulis David ,
umask
adalah pengaturan konfigurasi (tingkat proses), sehingga tidak diterapkan pada file tertentu (sebagai lawan darichmod
).Yang membawa kita ke poin penting lain:
umask
tidak terbatas pada file. Ini juga diterapkan saat membuat direktori. (Lihat juga misalnya jawaban ini .)Juga penting, bahwa
chmod
perintah itu sendiri tidak terpengaruh oleh yang saat ini dikonfigurasiumask
.Sekarang, untuk contoh Anda tentang apa yang akan
umask 666
dilakukan:Ini akan memberi tahu proses saat ini (misalnya shell Anda) bahwa setiap objek sistem file baru harus dibuat dengan
R
+W
bit (4 + 2 = 6) dihapus (dari izin apa pun secara implisit atau secara eksplisit diminta saat pembuatan). (Jadi, 666 bukan nilai yang sangat praktis, karena hanya memungkinkanX
bit (eksekusi) diatur, tetapi untuk file yang tidak dapat dibaca ...)Misalnya:
sumber
UMASK = chmod 777 - izin umask
Sesuatu seperti itu.
sumber
Izin default untuk direktori / file adalah umask 022 lalu, direktori ditetapkan secara default dengan izin 755 (
drwx-rw-rw
) dan file diatur dengan 644 (-rw-r--r--
). Pada dasarnya, Anda mengurangi nilai oktal dari izin yang Anda inginkan dari 777 untuk direktori dan dari 666 untuk file. Jadi dari contoh di atas:(directory) umask 022 => 777 - 022 = 755
(file) umask 022 => 666 - 022 = 644
Anda dapat menemukan hasil dari
umask octal
perintah di sumber ketika menggunakan umask , tergantung pada oktal dan apakah itu file atau direktori.Sumber
Namun , jika Anda
chmod 022 <file>
untuk direktori, Anda harus mendapatkan ini:d----w--w-
yang tidak masuk akal.Di bawahnya, Anda akan menemukan deskripsi hebat nilai oktal yang dapat Anda ambil di sini oleh Somnath Muluk dengan sumber-sumber yang bagus juga.
sumber