Saya percaya bahwa umask adalah sesuatu yang mengontrol izin file , tetapi tidak sepenuhnya memahaminya.
Setelah berjalan umask 0644
di terminal , saya tidak bisa membaca file yang saya buat dengan editor teks baris perintah nano
. Saya perhatikan bahwa izin file itu ditetapkan 0022
sebagai ganti default 0755
.
Bagaimana cara kerja umask? Saya pikir saya bisa menghapus setiap digit di umask dari 0777
, 7 - 6 = 1
dan 7 - 4 = 3
, jadi saya berharap izinnya seperti itu 0133
, tetapi ternyata, ini bukan masalahnya.
- Apa itu umask? Jelaskan kepada saya seperti saya adalah "Linux noob"
- Bagaimana saya menghitung dengan umask?
- Apa gunanya kasing untuk umask?
permissions
umask
Lekensteyn
sumber
sumber
app_mode 666 rw- rw- rw-
umask 644 --0 -00 -00
file_mode 022 --- -w- -w-
Jawaban:
Umask bertindak sebagai seperangkat izin yang aplikasi tidak dapat atur pada file. Ini adalah topeng pembuatan mode file untuk proses dan tidak dapat ditetapkan untuk direktori itu sendiri. Sebagian besar aplikasi tidak akan membuat file dengan mengeksekusi set izin, sehingga mereka akan memiliki default
666
, yang kemudian dimodifikasi oleh umask.Karena Anda telah mengatur umask untuk menghapus bit baca / tulis untuk pemilik dan bit baca untuk yang lain, default seperti
777
dalam aplikasi akan menghasilkan hak akses file133
. Ini berarti bahwa Anda (dan orang lain) dapat mengeksekusi file, dan orang lain akan dapat menulis ke sana.Jika Anda ingin membuat file tidak dapat dibaca / ditulis / dieksekusi oleh siapa pun kecuali pemiliknya, Anda harus menggunakan umask seperti
077
untuk mematikan izin tersebut untuk grup & lainnya.Sebaliknya, umask of
000
akan membuat direktori yang baru dibuat dapat dibaca, ditulis dan diturunkan untuk semua orang (izinnya akan777
). Umask seperti itu sangat tidak aman dan Anda tidak boleh mengatur umask000
.Umask default pada Ubuntu adalah
022
yang berarti bahwa file yang baru dibuat dapat dibaca oleh semua orang, tetapi hanya dapat ditulis oleh pemilik:Mulai di Ubuntu Oneiric (11.10), umask default telah dilonggarkan
002
, yang memperluas akses tulis ke grup pemilik:Melihat dan memodifikasi umask
Untuk melihat pengaturan umask Anda saat ini, buka terminal dan jalankan perintah:
Untuk mengubah pengaturan umask dari shell saat ini ke sesuatu yang lain, katakan 077, jalankan:
Untuk menguji apakah pengaturan ini berfungsi atau tidak, Anda dapat membuat file baru (izin file dari file yang sudah ada tidak akan terpengaruh) dan menampilkan informasi tentang file tersebut, jalankan:
Pengaturan umask diwarisi oleh proses yang dimulai dari shell yang sama. Misalnya, mulai editor teks GEdit dengan mengeksekusi
gedit
di terminal dan menyimpan file menggunakan gedit. Anda akan melihat bahwa file yang baru dibuat dipengaruhi oleh pengaturan umask yang sama seperti di terminal.Use case: sistem multi-pengguna
Jika Anda berada di sistem yang dibagikan oleh banyak pengguna, itu diinginkan agar orang lain tidak dapat membaca file di direktori home Anda. Untuk itu, umask sangat berguna. Edit
~/.profile
dan tambahkan baris baru dengan:Anda harus masuk kembali agar perubahan umask ini
~/.profile
berlaku. Selanjutnya, Anda perlu mengubah izin file yang ada file di direktori home Anda dengan menghapus bit baca, tulis, dan eksekusi untuk dunia. Buka terminal dan jalankan:Jika Anda ingin pengaturan umask ini diterapkan ke semua pengguna pada sistem, Anda dapat mengedit file profil seluruh sistem di
/etc/profile
.sumber
777
berarti bahwa kelompok dan orang lain akan dapat menulis kepadanya, sementara itu077
berarti mereka tidak bisa?000
, izin file akan777
. Jadi dengan mask default022
, bukankah seharusnya hak akses file755
, yaitu sesuai dengan-rwxr-xr-x
, bukan-rw-r--r--
?000
maka tidak ada izin yang akan dihapus. aplikasi sukatouch
dannano
membuat file dengan standar666
sehingga izin file akan tetap666
tetapi umask022
akan menghapus bit tulis untuk grup dan yang lainnya, jadi666
dikurangi menjadi644
alias-rw-r--r--
Pertimbangkanmkdir
mode pembuatan default777
dengan umask apa yang022
akan mengurangi izin untuk755
Selain diskusi yang baik dalam jawaban yang diterima, ada baiknya menambahkan beberapa poin tentang
umask
, dengan mengacu pada bagaimana hal itu dikelola dalam 12,04 dan seterusnya.Umask dan pam_umask
Umask default sekarang dalam
/etc/login.defs
dan tidak dalam/etc/profile
, seperti catatan resmi/etc/profile
berbunyi:Pam_umask
dijelaskan secara singkat di bawah ini, dan harus dikatakan bahwa file default untuk pengguna untuk menempatkan pengaturan umask kustomnya masih~/.profile
.Pam_umask
adalah salah satu dari banyak modul PAM penting yang sangat penting dalam operasi Ubuntu (jalankanapropos '^pam_'
untuk menemukan halaman manual untuk yang lainnya). Di halaman manual untukpam_umask
dicatat bahwaCatatan tentang umask default
Folder baru di
$HOME
dapat dibuatmkdir
dengan izin 775 default dan file yang dibuat dengantouch
izin 664 default bahkan ketika umask defaultnya adalah 022. Ini tampaknya, pada awalnya, bertentangan, dan layak untuk dijelaskan.Meskipun umask default adalah 022 di Ubuntu, ini bukan keseluruhan cerita, karena ada pengaturan di
/etc/login.defs
yang memungkinkan umask menjadi 002 untuk pengguna non-root jika kondisi terpenuhi (lihat kutipan di bawah). Pada instalasi normal,/etc/login.defs
berisi pengaturanUSERGROUPS_ENAB yes
. Ini adalah apaKarenanya mengapa Anda melihat yang berikut dengan
stat
ketika folder baru dibuat denganmkdir
pada sistem pengguna tunggal seperti milik saya (uid dan gid adalah sama):Untuk informasi lebih lanjut, lihat
man pam_umask
dan manual Ubuntu online .sumber
/etc/login.defs
sudah pastiUSERGROUPS_ENAB yes
setelah memeriksanya. Sintaks file itu sedikit tidak biasa.Ini cukup tua, tetapi ini layak disebut. Untuk menghitung umask, tidak seperti izin sistem file. Payung oktal dihitung melalui bitwise DAN dari komplemen unary dari argumen menggunakan bitwise TIDAK. Notasi oktal adalah sebagai berikut:
Kemudian Anda dapat menghitung untuk menetapkan umask yang tepat seperti:
Menghitung Izin Akhir Untuk File
Anda cukup mengurangi umask dari izin dasar untuk menentukan izin final untuk file sebagai berikut:
666
022
(666-022)
:644 (rw-r–r–)
Menghitung Izin Akhir Untuk Direktori
Anda cukup mengurangi umask dari izin dasar untuk menentukan izin akhir untuk direktori sebagai berikut:
777
022
(777-022)
:755 (rwxr-xr-x)
sumber
077
bagaimana Anda mengurangi666-077
dalam kasus itu?Yang lain menjawab telah menjelaskan dengan baik konsep umasking dan mengapa itu diperlukan. Biarkan saya menambahkan dua sen saya dan memberi Anda contoh matematis tentang bagaimana perizinan sebenarnya dihitung.
Pertama-tama, "Topeng" tidak berarti "kurangi", dalam arti aritmatika - tidak ada pinjaman atau barang yang terlibat, kedua, itu
umask
adalah topeng; ini bukan angka yang harus dikurangi.Ketiga, topeng mematikan bit izin. Jika sudah tidak aktif, maka
umask
tidak ada perubahan pada izin,Sebagai contoh, asumsikan bahwa Anda harus membuka kedok
077
dari default sistem untuk file yang ada666
dan direktori mana777
.Perintah yang akan Anda gunakan adalah,
(buka tab nilai dalam biner,
000 111 111
)Apa yang akan dilakukan unmask ini adalah akan mematikan salah satu dari enam LSB pertama (bit paling tidak signifikan) jika ada
1
dan tidak akan membuat perubahan jika ada yang sudah mati.Berikut adalah bagaimana izin final dihitung:
Amati bagaimana kedua
110
nilai berubah menjadi000
.Demikian pula,
sumber
umask 177
(001 111 111), itu akan mematikan 7 bit paling tidak penting pertama jika mereka1
result = file permission & (!umask)
Konsep dasar:
Jika Anda seperti kebanyakan manusia dan tidak mengerti apa maksudnya "payung oktal dihitung melalui bitwise DAN dari komplemen unary dari argumen menggunakan bitwise TIDAK" artinya, inilah penjelasan sederhana saya:
Pertama-tama, pikirkan tentang apa itu "topeng". Topeng menghalangi sesuatu. Pikirkan selotip. Dalam hal ini, umask seperti selotip untuk memblokir / menonaktifkan izin saat membuat file atau direktori baru.
Izin default saat membuat dir baru adalah
octal 777 (111 111 111)
, dan file baru adalahoctal 666 (110 110 110)
. Kami mengatur umask untuk memblokir / menonaktifkan izin tertentu.1
untuk memblokir / menonaktifkan izin itu (letakkan selotip di atasnya).0
akan memungkinkan izin untuk melewati (tidak ada selotip di atas bit itu).Jadi
octal 022 (000 010 010)
topeng berarti menonaktifkangroup write
danothers write
, dan mengizinkan semua izin lainnya untuk lewat.Perhitungan:
Berikut adalah contoh perhitungan untuk file baru (izin 666 default) dengan 022 umask:
Jadi begitulah Anda berakhir dengan hasil 644 saat Anda membuat file baru.
Cara yang lebih mudah:
Tetapi jika perhitungan topeng terbalik hanya membingungkan Anda, ada cara yang lebih mudah menggunakan notasi umask simbolis. Ketika Anda menggunakan metode ini, maka Anda hanya menentukan bit pass-through bukan bit mask.
umask u=rwx,g=rx,o=rx
berarti memungkinkan melewati untukuser rwx
,group rx
,other rx
. Yang menyiratkan menonaktifkangroup w
,others w
. Jika Anda menjalankan perintah ini kemudian periksaumask
, Anda akan mendapatkannya022
.umask u=rwx,g=,o=
berarti memungkinkan melewatiuser rwx
. Yang menyiratkan menonaktifkan semua akses untukgroup
danothers
. Jika Anda menjalankan perintah ini kemudian periksaumask
, Anda akan mendapatkannya077
.Perhitungan bonus:
Jika Anda benar-benar ingin memahami apa "payung oktal dihitung melalui bitwise DAN dari komplemen unary dari argumen menggunakan bitwise TIDAK" artinya, inilah beberapa tabel logika yang dapat membantu menunjukkan. Ingat, sedikit topeng
1
berarti menonaktifkan,0
berarti melewati.Jika Anda membuat tabel dengan
NOT(mask)
, sekarang hanyaAND
tabel logika sederhana !Jadi rumus untuk itu adalah:
result = perm AND (NOT mask)
sumber