- Konu sahibi
- #1
Linux’ta
Bir program yeni dosya oluştururken genellikle dosyalar için
Örneğin
Aşağıdaki tablo, uygulamanın varsayılan başlangıç izinlerini kullandığı tipik durumu gösterir:
Dosyanın sahibi, grubu ve diğer kullanıcıları için üçer izin biti bulunur: okuma
Geçerli kabuk oturumundaki değeri görmek için:
Bash gibi destekleyen kabuklarda sembolik, izin verilen bitleri gösteren biçim için:
Ana terminalin maskesini değiştirmeden, yazılabilir geçici dizinde benzersiz örnekler oluşturmak için alt kabuk kullanın:
Parantez bitince ana kabuğun maskesi korunur. mktemp üst klasörü özel izinle oluşturur; karşılaştırılacak nesneler içteki dizin ve ornek dosyasıdır. Örneklerin konumunu saklayın; otomatik silme veya gerçek proje izinlerini değiştirme adımı yoktur.
Beklenen sonuç,
Kalıcı davranış için
umask, yeni oluşturulan dosya ve dizinlerin başlangıç izinlerinden hangi izinlerin çıkarılacağını belirler. Böylece her yeni dosyayı veya dizini tek tek chmod ile düzeltmeden varsayılan erişim düzeyini sınırlayabilirsiniz. umask mevcut dosyaların izinlerini değiştirmez; yalnızca sonradan oluşturulacak dosya ve dizinleri etkiler.Nasıl çalışır?
Bir program yeni dosya oluştururken genellikle dosyalar için
666, dizinler için 777 izinlerini başlangıç noktası olarak kullanır. Sistem bu değerden umask içinde engellenen izinleri çıkarır. Dosya oluşturma sırasında program daha kısıtlı bir mod seçerse sonuç ayrıca bu seçime de bağlıdır.Örneğin
umask 027 kullanıldığında:0666 & ~0027 = 0640 dosya izni ve 0777 & ~0027 = 0750 dizin izni elde edilir. Burada sekizlik mod üzerinde bit düzeyinde VE ve tersleme vardır; normal sayı çıkarması yapılmaz. Bu nedenle sonucu izin bitleri üzerinden değerlendirmek gerekir.Yaygın umask değerlerinin sonucu
Aşağıdaki tablo, uygulamanın varsayılan başlangıç izinlerini kullandığı tipik durumu gösterir:
| umask | Yeni dosya | Yeni dizin | Pratik anlamı |
|---|---|---|---|
| 000 | 666 | 777 | Grup ve diğer kullanıcılar için geniş erişim; dikkat gerektirir |
| 022 | 644 | 755 | Sahibi yazabilir, diğerleri genellikle okuyabilir veya dizine girebilir |
| 027 | 640 | 750 | Diğer kullanıcıların erişimi kapatılır, grup erişimi sınırlanır |
| 077 | 600 | 700 | Yalnızca sahibi erişebilir |
Dosyanın sahibi, grubu ve diğer kullanıcıları için üçer izin biti bulunur: okuma
r, yazma w ve çalıştırma/gezinme x. umask 077 ile oluşturulan normal bir dosya tipik olarak 600, dizin ise 700 olur. Dizinlerde x izni, içeriğe erişebilmek ve dizinde gezinebilmek için önemlidir.umask değerini görme ve geçici değiştirme
Geçerli kabuk oturumundaki değeri görmek için:
Kod:
umask
Bash gibi destekleyen kabuklarda sembolik, izin verilen bitleri gösteren biçim için:
Kod:
umask -S
Ana terminalin maskesini değiştirmeden, yazılabilir geçici dizinde benzersiz örnekler oluşturmak için alt kabuk kullanın:
Bash:
(
umask 027
demo_root=$(mktemp -d) || exit 1
mkdir "$demo_root/dizin" || exit 1
touch "$demo_root/dizin/ornek" || exit 1
printf '%s\n' "$demo_root"
ls -ld "$demo_root/dizin" "$demo_root/dizin/ornek"
)
Parantez bitince ana kabuğun maskesi korunur. mktemp üst klasörü özel izinle oluşturur; karşılaştırılacak nesneler içteki dizin ve ornek dosyasıdır. Örneklerin konumunu saklayın; otomatik silme veya gerçek proje izinlerini değiştirme adımı yoktur.
Beklenen sonuç,
027 için dizinde 750, dosyada 640 izinleridir. Farklı bir sonuç görürseniz programın dosyayı 666 veya dizini 777 ile oluşturmaması, dosya oluşturulduktan sonra chmod uygulaması ya da üst dizinde varsayılan ACL bulunması mümkündür. Varsayılan ACL varsa umask yerine miras alınan ACL ve programın istediği mod birlikte sonucu belirler.Kalıcı davranış için
umask 027 satırı, kullandığınız kabuğun oturum başlangıç dosyasına eklenebilir; ancak dosya yolu kabuğa, dağıtıma ve oturum türüne göre değişir. Bu nedenle satırı rastgele bir dosyaya eklemek yerine kullandığınız kabuğun başlangıç mekanizmasını doğrulamak gerekir. Servisler ve grafik uygulamalar da terminaldeki umask değerini miras almak zorunda değildir; servis yapılandırmaları ayrıca kontrol edilmelidir.Sık yapılan hatalar
- Mevcut dosyayı değiştirdiğini sanmak: umask geriye dönük çalışmaz. Var olan izinler için
chmod, sahiplik içinchownveyachgrpgerekir. - Dosyada 777 beklemek: Dosya oluşturan programlar güvenlik nedeniyle çalıştırma bitini başlangıç moduna eklemeyebilir. umask yalnızca programın talep ettiği izinleri kısıtlar.
- umask değerini normal izin değeri sanmak:
027“dosyanın izni 027” anlamına gelmez; kaldırılacak izinleri belirtir. - Sadece umask’a güvenmek: Ortak dizinler, ACL’ler, grup üyelikleri ve uygulamanın kendi izin ayarları nihai erişimi etkileyebilir. Gereken dosyada sonuç iznini ayrıca
statveyals -lile doğrulayın.