Linux'ta umask Nedir ve Nasıl Kullanırsınız?
Yayınlanan: 2022-07-29 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.
İ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
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ü.
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.
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.
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: ("
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
Ve kök için:
umask
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: ("
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: ("
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
Umask ayarınızı dosyanın üst kısmına yakın bir yere ekleyin.
Dosyayı kaydedin ve düzenleyiciyi kapatın. yeni bir terminal penceresi açın ve umask
komutu ile umask değerini kontrol edin.
umask
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
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
Yalnızca dizin sahibine yönelik izinler vardır.
mkdir güvenli dosya.txt
ls -ld güvenli dosya.txt
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
Bu bilgisayarda, “/boot/efi” dosya sistemi, kendisine uygulanan 077 umask ayarına sahiptir.
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
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?