umask nedir?

umask (kullanıcı dosya oluşturma modu maskesi), yeni oluşturulan dosya ve dizinlere atanan varsayılan izinleri kontrol eden bir Linux ve Unix ayarıdır. İzinleri doğrudan ayarlamak yerine, umask yeni bir dosya veya dizin oluşturulduğunda sistem varsayılanlarından hangi izin bitlerinin kaldırılması gerektiğini tanımlar.

Sistem, dosyalar için 666 (herkes için okuma ve yazma) ve dizinler için 777 (herkes için okuma, yazma ve yürütme) temel izniyle başlar. umask daha sonra mantıksal AND-NOT işlemi kullanılarak bu varsayılanlardan bitsel olarak çıkarılır ve son izinler elde edilir. Örneğin, 022 umask değeriyle yeni dosyalar 644 ve yeni dizinler 755 izniyle oluşturulur.

Her umask basamağı bir izin sınıfına karşılık gelir: ilk basamak sahibi, ikinci basamak grubu ve üçüncü basamak diğerleri etkiler. 0 basamağı hiçbir izinin maskelenmedği anlamına gelirken, 7 o sınıf için tüm izinleri kaldırır.

Araç açıklaması

Linux umask Hesaplayıcı, umask değerini ve temel izni, sonuçta ortaya çıkan etkili izinlere sekizli ve sembolik gösterimde dönüştürür. Ayrıca tam umask shell komutunu oluşturarak, sistem yöneticileri, geliştiriciler ve DevOps mühendislerinin umask'ı shell'e, betiğe veya sistem yapılandırmasına uygulamadan önce sonucunu önizlemesine yardımcı olur.

Örnekler

Umask Temel Sonuç Sekizli Sembolik
022 666 644 rw-r--r--
022 777 755 rwxr-xr-x
077 666 600 rw-------
027 777 750 rwxr-x---
002 666 664 rw-rw-r--

Özellikler

  • Herhangi bir umask değerinden sonuçta ortaya çıkan sekizli ve sembolik izinleri hesaplar
  • 3 basamaklı ve 4 basamaklı (başında sticky/setuid biti olan) umask değerlerini destekler
  • Yaygın umask ön ayarları (022, 027, 077, 002, 007, 000)
  • Dosyalar (666) ve dizinler (777) için temel izin ön ayarları
  • Kullanıma hazır umask shell komutunu oluşturur

Kullanım durumları

  • Sunucu sertleştirmesi: /etc/profile veya kullanıcının shell yapılandırmasına eklemeden önce 077 gibi daha katı bir umask'ı önizleyin ve yeni dosyaların özel olduğundan emin olun.
  • Paylaşılan geliştirme ortamları: 002 veya 007 değerinin işbirlikçi proje dizinleri için grup tarafından yazılabilir dosyalar oluşturduğunu doğrulayın.
  • Dağıtım betikleri: CI/CD ardışık düzenlerinde veya konteyner giriş noktalarında kullanılan umask'ın uygulama günlükleri ve yüklenen varlıklar için beklenen dosya izinlerini üreteceğini doğrulayın.

Nasıl çalışır?

Son izin, her sınıf (sahip, grup, diğerleri) için aşağıdaki formül kullanılarak hesaplanır:

final = base AND (NOT umask)

Her sekizli basamak bağımsız olarak işlenir. 2 umask basamağı (ikili 010) ve 6 temel basamağı (ikili 110) için sonuç 110 AND NOT 010 = 100 olup, bu 4'e (yalnızca okuma) eşittir. 4 basamaklı umask'ın başında gelen basamak özel bitleri (setuid, setgid, sticky) kontrol eder ve standart izin hesaplamasında yoksayılır.

İpuçları

  • Yeni dosyaların izinlerini görmek için 666 temel değerini, yeni dizinlerin izinlerini görmek için 777 değerini kullanın.
  • 000 umask değeri hiçbir izinin çıkarılmadığı anlamına gelir — yalnızca sıkı kontrol edilen, izole ortamlarda kullanışlıdır.
  • umask'ı kalıcı hale getirmek için oluşturulan komutu kapsamına bağlı olarak ~/.bashrc, ~/.profile veya /etc/profile dosyasına ekleyin.