apa perbedaan antara umask dan chmod

13

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

pengguna548781
sumber
2
umaskmenetapkan variabel lingkungan yang secara otomatis menetapkan izin file untuk file yang baru dibuat . chmodmengubah izin file yang ada .
DavidPostill
1
@ DavidPostill. Tidak, umasktidak mengatur "variabel lingkungan" Apa yang dilakukannya adalah mengatur topeng pembuatan mode file dari lingkungan eksekusi shell saat ini.
fpmurphy
@ fpmurphy1 Terima kasih atas klarifikasi :)
DavidPostill

Jawaban:

11

Perbedaannya adalah bahwa umaskhanya memerlukan file baru . Seperti yang Anda nyatakan, umask menetapkan izin default yang akan dimiliki file / direktori pada waktu pembuatan, tetapi setelah umaskitu tidak memengaruhi mereka lagi.

chmodNamun, perlu file dibuat sebelum dijalankan.

Karena itu, jika Anda menjalankannya umask, itu tidak akan berpengaruh sama sekali pada file yang ada.

nKn
sumber
2
Anda tidak dapat menggunakan umaskfile, itu tidak memiliki fileargumen.
DavidPostill
Benar, tulis ulang bagian itu.
nKn
4

umasksangat berbeda dari chmod, sebenarnya.

  1. Perbedaan penting belum disebutkan: chmodset, tetapi umask membersihkan (membatasi) bit izin. Itu sebabnya ini disebut "topeng" (seperti dalam "bitmask").

  2. Seperti yang ditulis David , umaskadalah pengaturan konfigurasi (tingkat proses), sehingga tidak diterapkan pada file tertentu (sebagai lawan dari chmod).

  3. Yang membawa kita ke poin penting lain: umasktidak terbatas pada file. Ini juga diterapkan saat membuat direktori. (Lihat juga misalnya jawaban ini .)

  4. Juga penting, bahwa chmodperintah itu sendiri tidak terpengaruh oleh yang saat ini dikonfigurasi umask.

Sekarang, untuk contoh Anda tentang apa yang akan umask 666dilakukan:

Ini akan memberi tahu proses saat ini (misalnya shell Anda) bahwa setiap objek sistem file baru harus dibuat dengan R+ Wbit (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 memungkinkan Xbit (eksekusi) diatur, tetapi untuk file yang tidak dapat dibaca ...)

Misalnya:

$ touch foo; ls -la foo
-rw-r--r-- ... foo   <-- default permissions

$ umask 666
$ touch bar; ls -la bar
---------- ... bar   <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir   <-- not very practical for dirs, either

$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask

$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong  <-- (so, it seems this was the default umask)

$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong  <-- no surprise of any kind here
Sz.
sumber
0

UMASK = chmod 777 - izin umask

umask 022 => 777 - 022 => chmod 755
umask 077 => 777 - 077 => chmod 700
umask 002 => 777 - 002 => chmod 775
umask 007 => 777 - 007 => chmod 770
umask 027 => 777 - 027 => chmod 750
umask 177 => 777 - 177 => chmod 600

Sesuatu seperti itu.

PanPikuś
sumber
0

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 octalperintah 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.

N   Description                      ls   binary    
0   No permissions at all            ---  000
1   Only execute                     --x  001
2   Only write                       -w-  010
3   Write and execute                -wx  011
4   Only read                        r--  100
5   Read and execute                 r-x  101
6   Read and write                   rw-  110
7   Read, write, and execute         rwx  111
R4zZ
sumber