Linux'ta umask Nedir ve Nasıl Kullanırsınız?

Yayınlanan: 2022-07-29
Bir bash istemi gösteren Linux dizüstü bilgisayar
fatmawati achmad zaenuri/Shutterstock.com

Linux'ta tüm dizinler ve dosyalar erişim izinlerine sahiptir. Farklı kullanıcılar için tercih ettiğiniz erişim haklarını ayarlamak için chmod kullanabilirsiniz. Ancak, varsayılan izinlerine ne karar verir? Biraz da umask bahsedelim.

Erişim İzinleri

Tüm dizinler ve dosyalar, okunup yazılamayacağına, yazılabileceğine veya yürütülüp yürütülemeyeceğine karar veren mod bitleri adı verilen bayraklara sahiptir. Bir dosyayı yürütmek, onu bir program veya komut dosyası gibi çalıştırmak anlamına gelir. Bir dizin için, içine bir dizini cd “yürütebilmeniz” gerekir. Toplu olarak bit modu ayarlarına dizinin veya dosyanın izinleri denir.

Üç grup izin vardır. Bir küme, dizinin veya dosyanın sahibi içindir. Sahiplik chown ile değiştirilmediyse, sahip dizini veya dosyayı oluşturan kişidir.

Linux Dosya İzinleri Nasıl Çalışır?
İLGİLİ Linux Dosya İzinleri Nasıl Çalışır?

İkinci izin grubu, dizinin veya dosyanın atandığı kullanıcı grubunun üyeleri içindir. Genellikle bu, sahibinin kullanıcı grubudur.

"Diğerleri" için üçüncü ve son bir izin grubu vardır. İlk iki sette yer almayan herkes için her şeyi kapsar.

İzinleri bu şekilde ayırarak üç kategoriye farklı yetenekler kazandırılabilir. Linux'ta dizin ve dosya erişimi bu şekilde kontrol edilir. Basit bir şema olmasına rağmen, herhangi bir dizin veya dosya ile kimin ne yapabileceğini belirlemek için esnek ve sağlam bir yol sağlar.

Mod Bitleri

ls komutunu ve -l (uzun biçim) seçeneğini kullanarak dosyaların izinlerini görebilirsiniz.

 ls -l herhangi*

Ayrıca -d (dizin) seçeneğini ekleyerek bir dizine bakacağız. Bu seçenek olmadan, ls dizinin kendisine değil, dizinin içindeki dosyalara bakar.

 ls -ld 

Dizinler ve dosyalar üzerindeki izinleri görmek için ls kullanma

ls listesindeki her girişin başında 10 karakterlik bir koleksiyon bulunur. İşte bir dosya ve bir dizin için bu karakterlerin yakından görünümü.

Bir dosya ve dizinin izinleri, yakın çekim

Dosya en üst satırdır, dizin alt satırdır. İlk karakter bize bir dizine mi yoksa bir dosyaya mı baktığımızı söyler. “d” bir dizini, “ - ” ise bir dosyayı belirtir.

Üç izin grubu, her üç karakterlik grupla belirtilir. Soldan sağa, bunlar sahip, grup ve diğerleri için izinlerdir. Her bir izin grubunda, soldan sağa doğru üç karakter, okuma izni "r", yazma izni "w" ve yürütme "x" izni ayarını gösterir. Bir harf, iznin ayarlandığı anlamına gelir. Kısa çizgi “ - ”, iznin ayarlanmadığı anlamına gelir.

Örnek dosyamız için 10 karakter şu anlama gelir:

  • : Bu bir dosyadır, dizin değil.
  • rwx : Sahibi bu dosyayı okuyabilir, yazabilir ve çalıştırabilir.
  • rw- : Bu dosyanın atandığı aynı grubun diğer üyeleri dosyayı okuyabilir ve dosyaya yazabilir, ancak dosyayı çalıştıramazlar.
  • r– : Diğer herkes dosyayı sadece okuyabilir.

Örnek dizinimiz için 10 karakter şu anlama gelir:

  • d : Bu bir dizindir.
  • rwx : Sahibi bu dizini okuyabilir, yazabilir ve çalıştırabilir ( cd içine).
  • rwx : Aynı grubun diğer üyeleri bu dizine okuyabilir, yazabilir ve cd yapabilir.
  • rx : Diğer herkes bu dizine cd girebilir, ancak sadece dosyaları okuyabilirler. Dosyaları silemez, dosyaları düzenleyemez veya yeni dosyalar oluşturamazlar.

İzinler, dizinin veya dosyanın meta verilerindeki mod bitlerinde depolanır. Her mod bitinin sayısal bir değeri vardır. Ayarlanmadıkları takdirde hepsinin değeri sıfırdır.

  • r : Ayarlanmışsa, okuma bitinin değeri 4'tür.
  • w : Yazma biti, ayarlanmışsa 2 değerine sahiptir.
  • x : Yürütme biti, ayarlanmışsa 1 değerine sahiptir.

Üç izinden oluşan bir set, bit değerlerinin toplamı ile temsil edilebilir. Maksimum değer 4+2+1=7'dir; bu, bir kümedeki üç iznin tümünü "açık" olarak ayarlar. Bu, üç kümenin tüm permütasyonlarının üç basamaklı bir Sekizlik (taban 8) değerinde yakalanabileceği anlamına gelir.

Örnek dosyamızı yukarıdan aldığımızda, sahibi 4+2+1=7 olan okuma, yazma ve yürütme izinlerine sahiptir. Dosyanın bulunduğu grubun diğer üyeleri 4+2=6 olan okuma ve yazma izinlerine sahiptir. Diğerleri kategorisi yalnızca 4 olan okuma iznine sahiptir.

Yani o dosyanın izinleri 764 olarak ifade edilebilir.

Aynı şemayı kullanarak, dizinin izinleri 775 olacaktır. stat komutunu kullanarak izinlerin Sekizli gösterimini görebilirsiniz.

Linux'ta chmod Komutu Nasıl Kullanılır
İLGİLİ Linux'ta chmod Komutu Nasıl Kullanılır

chmod ( mod bitlerini değiştir ) komutu, dizinler ve dosyalar üzerindeki izinleri ayarlamak için kullanılan araçtır. Ancak, bir dizini veya dosyayı oluşturduğunuzda hangi izinlerin ayarlandığını belirtmez. Bunun için varsayılan bir izin seti kullanılır.

Varsayılan İzinler ve umask

Bir dizin için varsayılan izinler 777 ve bir dosya için varsayılan izinler 666'dır. Bu, her kullanıcıya tüm dizinlere tam erişim ve herhangi bir dosyayı okuma ve yazma yeteneği verir. Yürütme biti dosyalarda ayarlanmaz. Yürütme biti zaten ayarlanmış bir dosya oluşturamazsınız. Bu, güvenlik risklerine yol açabilir.

Linux'ta stat Komutu Nasıl Kullanılır
İLGİLİ Linux'ta stat Komutu Nasıl Kullanılır

Ancak, yeni bir dizin ve yeni bir dosya oluşturur ve izinlerine bakarsanız, bunlar 777 ve 666'ya ayarlanmaz. Bir dosya ve bir dizin oluşturacağız, ardından satırı çıkarmak için grep aracılığıyla stat piped kullanacağız. izinlerinin Sekizli temsili.

 umask-article.txt'ye dokunun
 mkdir nasıl yapılır
 istatistik umask-article.txt | grep "Erişim: ("
 stat nasıl yapılır | grep "Erişim: (" 

bir dizin ve dosya için varsayılan izinler ve bunların her biri için stat çıktısı

Dizin için 775 ve dosya için 664 olarak ayarlanmıştır. Umask değeri olarak adlandırılan başka bir değer onları değiştirdiği için genel varsayılan izinlere ayarlanmazlar.

umask Değeri

Umask değeri, kök için bir değer ve diğer tüm kullanıcılar için farklı bir değerle global olarak ayarlanır. Ancak herkes için yeni bir değere ayarlanabilir. Geçerli umask ayarının ne olduğunu görmek için umask komutunu kullanın.

 umask 

Normal bir kullanıcı için umask değeri

Ve kök için:

 umask 

Kök kullanıcı için umask değeri

Yeni oluşturulan bir dizindeki veya dosyadaki izinler, genel varsayılan izinleri değiştiren umask değerinin sonucudur.

Mod bitleri gibi, umask değeri de aynı üç izin grubunu (sahip, grup ve diğerleri) temsil eder ve bunları üç Sekizlik basamak olarak temsil eder. Bazen bunların dört basamaklı olarak yazıldığını ve ilk basamak sıfır olduğunu göreceksiniz. Bu, "bu sekizlik bir sayıdır" demenin kısa yoludur. Önemli olan en sağdaki üç basamaktır.

umask değeri izin ekleyemez . Yalnızca izinleri kaldırabilir veya maskeleyebilir . Bu yüzden varsayılan izinler çok liberal. Umask değerinin uygulanmasıyla makul seviyelere indirilecek şekilde tasarlanmıştır.

Bir dizi varsayılan izin ne tüm kullanıcılara ne de tüm senaryolara uyacaktır. Örneğin, root tarafından oluşturulan dizinler ve dosyalar, ortalama bir kullanıcıdan daha kısıtlayıcı izinlere ihtiyaç duyacaktır. Ve ortalama bir kullanıcı bile diğerleri kategorisindeki herkesin dosyalarını görmesini ve değiştirmesini istemez.

umask İzinleri Nasıl Maskeler?

Maske değerini varsayılan izinlerden çıkarmak size gerçek izinleri verir. Başka bir deyişle, umask değerinde bir izin ayarlanmışsa , dizine veya dosyaya uygulanan izinlerde ayarlanmayacaktır.

Umask değerleri, olağan izin değerlerinin tersi olarak çalışır.

  • 0 : Hiçbir izin kaldırılmadı.
  • 1 : Yürütme biti izinlerde ayarlanmamış.
  • 2 : Yazma biti izinlerde ayarlanmamış.
  • 4 : İzinlerde okuma biti ayarlanmamış.

Dizinler için 777 ve dosyalar için 666 varsayılan izinleri, test dizinimizde ve dosyamızda nihai izinleri 775 ve 664 verecek şekilde 002 umask değeriyle değiştirildi.

 istatistik umask-article.txt | grep "Erişim: ("
 stat nasıl yapılır | grep "Erişim: (" 

Bir dizindeki ve dosyadaki nihai izinler

Bu, hem dizindeki hem de dosyadaki diğerleri kategorisinden yazma iznini kaldırır.

root bir dizin oluşturursa, 022 umask değeri uygulanır. Diğerleri kategorisi ve grup kategorisi için de yazma izni kaldırıldı.

 sudo mkdir kök dizini
 stat nasıl yapılır | grep "Erişim: (" 

Kök bir dizin oluşturduğunda izin

777'nin varsayılan izinlerinin 755'e düşürüldüğünü görebiliriz.

İLGİLİ: Lynis ile Linux Sisteminizin Güvenliğini Denetleme

Varsayılan umask Değerini Değiştirme

Oturum açma kabukları ve oturum açma dışı kabuklar için farklı umask değerleri vardır. Oturum açma kabukları, yerel olarak veya uzaktan SSH üzerinden oturum açmanıza izin veren kabuklardır. Oturum açmayan bir kabuk, zaten oturum açmış durumdayken bir terminal penceresinin içindeki bir kabuktur.

Oturum açma kabuğu umaskını değiştirirseniz çok dikkatli olun. İzinleri artırmayın ve güvenliğinizi düşürmeyin. Herhangi bir şey varsa, onları azaltmaya ve daha kısıtlayıcı hale getirmeye meyilli olmalısınız.

Ubuntu ve Manjaro'da umask ayarları şu dosyalarda bulunabilir:

  • Login Shell umask : Login Shell varsayılan umask değeri için: /etc/profile
  • Oturum Açma Dışı Kabuk : Oturum açma dışı kabuk varsayılan umask değeri için: /etc/bash.bashrc

Fedora'da umask ayarları şu dosyalarda bulunabilir:

  • Login Shell umask : Log in Shell varsayılan umask değeri için: /etc/profile
  • Oturum Açma Dışı Kabuk : Oturum açma dışı kabuk varsayılan umask değeri için: /etc/bashrc

Bunları değiştirmek için acil bir ihtiyacınız yoksa, onları kendi haline bırakmak en iyisidir.

Tercih edilen yol, varsayılandan farklı olması gereken tüm bireysel kullanıcı hesapları için yeni bir umask değeri ayarlamaktır. Bir kullanıcının ana dizinindeki “.bashrc” dosyasına yeni bir umask ayarı konabilir.

 gedit .bashrc 

.bashrc dosyasını bir düzenleyicide açma

Umask ayarınızı dosyanın üst kısmına yakın bir yere ekleyin.

.bashrc dosyasına umask değerini ekleme

Dosyayı kaydedin ve düzenleyiciyi kapatın. yeni bir terminal penceresi açın ve umask komutu ile umask değerini kontrol edin.

 umask 

Yeni umask değerini kontrol etme

Yeni değer etkin.

İLGİLİ: Windows, macOS veya Linux'tan bir SSH Sunucusuna Nasıl Bağlanılır

umask'ta Kısa Vadeli Değişiklikler

Farklı bir umask değeri için kısa vadeli bir gereksiniminiz varsa, umask komutunu kullanarak mevcut oturumunuz için bunu değiştirebilirsiniz. Belki bir dizin ağacı ve bazı dosyalar oluşturacaksınız ve bunlar üzerinde daha fazla güvenlik olmasını istiyorsunuz.

Umask değerini 077 olarak ayarlayabilir, ardından yeni değerin aktif olup olmadığını kontrol edebilirsiniz.

 umask 077
 umask 

Geçici bir umask değeri ayarlama

Grup ve diğer kategorilerde maskenin 7 değerine ayarlanması, tüm izinlerin bu kategorilerden çıkarıldığı anlamına gelir. Sizden (ve kökten) başka hiç kimse yeni dizinlere giremez ve dosyalarınızı okuyup düzenleyemez.

 mkdir güvenli dizin
 ls -ld güvenli-dir 

Geçici bir umask değerine sahip bir oturumda yeni bir dizin oluşturma

Yalnızca dizin sahibine yönelik izinler vardır.

 mkdir güvenli dosya.txt
 ls -ld güvenli dosya.txt 

Geçici bir umask değerine sahip bir oturumda yeni bir dosya oluşturma

Dosya, diğer kullanıcılar tarafından gözetlenmeye karşı güvenlidir. Terminal pencerenizi kapatmak, geçici umask ayarını atar.

Umask'ın Kullanıldığı Diğer Yollar

Linux, bazı süreçlerin sistem umask değerlerini devralmasına veya kendi umask ayarlarının verilmesine izin verir. Örneğin useradd , yeni kullanıcıların ana dizinlerini oluşturmak için bir umask ayarı kullanır.

Bir dosya sistemine de bir umask değeri uygulanabilir.

 daha az /etc/fstab 

/etc/fstab dosyasına daha azıyla bakmak

Bu bilgisayarda, “/boot/efi” dosya sistemi, kendisine uygulanan 077 umask ayarına sahiptir.

/etc/fstab dosyasındaki umask ayarı

ls ile dosya sistemi bağlama noktasına bakarak, umask değerinin sahip, kök dışındaki herkesten tüm izinleri kaldırdığını doğrulayabiliriz.

 ls /boot/efi -ld 

"/boot./efi" dosya sistemi bağlama noktasındaki izinleri görmek için ls kullanma

umask ve İzinler Birbirine İhtiyaç Duyar

Varsayılan izinler, umask değeri tarafından dönüştürüldükten sonra bir dizine veya dosyaya uygulanır. Bir kullanıcı için umask değerini kalıcı olarak değiştirmeniz çok nadir olacaktır, ancak hassas dizinler veya belgeler koleksiyonu oluştururken umask değerinizi geçici olarak daha sıkı izinler verecek şekilde ayarlamak, onları güçlendirmenin hızlı ve kolay bir yoludur. güvenlik.

İLGİLİ: Linux Sunucunuzu UFW Güvenlik Duvarı ile Nasıl Güvende Tutabilirsiniz?