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

Yayınlanan: 2022-01-29

Bir süredir Linux (ve hatta OS X) kullanıyorsanız, muhtemelen bir "izinler" hatasıyla karşılaşmışsınızdır. Fakat bunlar tam olarak nedir ve neden gerekli veya faydalıdır? İçeriden bir göz atalım.

Kullanıcı İzinleri

O zamanlar bilgisayarlar inanılmaz derecede pahalı olan devasa makinelerdi. Bunlardan en iyi şekilde yararlanmak için, birçok kullanıcının aynı anda işlerine devam etmesine izin veren birden fazla bilgisayar terminali bağlandı. Veri işleme ve depolama makinede yapılırken, terminallerin kendileri veri görüntüleme ve girme aracından biraz daha fazlasıydı. Düşünürseniz, “bulut” üzerindeki verilere hemen hemen bu şekilde erişiyoruz; Amazon'un Bulut MP3 sistemine, Gmail'e ve Dropbox'a bakın ve yerel olarak değişiklikler yapılabilse de her şeyin uzaktan depolandığını fark edeceksiniz.

(Resim: Zenith Z-19 “aptal” terminal; kredi: ajmexico)

Bunun çalışması için bireysel kullanıcıların hesapları olması gerekir. Kendilerine ayrılmış bir depolama alanına sahip olmaları ve komutları ve programları çalıştırmalarına izin verilmesi gerekir. Herkes, neyi yapıp neyi yapamayacağını, sistemde nereye erişip erişemeyeceğini ve kimin dosyalarını değiştirip değiştiremeyeceğini belirleyen belirli "kullanıcı izinleri" alır. Her kullanıcı ayrıca daha fazla erişim sağlayan veya kısıtlayan çeşitli gruplara yerleştirilir.

Dosya Erişimi

error reading

Bu tuhaf, çok kullanıcılı dünyada, kullanıcıların yapabileceklerine ilişkin sınırları zaten belirledik. Peki ya eriştikleri şey? Her dosyanın bir dizi izni ve bir sahibi vardır. Dosya oluşturulduğunda genellikle bağlanan sahip ataması, hangi kullanıcıya ait olduğunu bildirir ve yalnızca bu kullanıcı erişim izinlerini değiştirebilir.

Linux dünyasında izinler üç kategoriye ayrılır: okuma, yazma ve yürütme. “Okuma” erişimi, bir dosyanın içeriğini görüntülemeye izin verir, “yazma” erişimi, bir dosyanın içeriğini değiştirmeye izin verir ve “yürütme”, bir komut dosyası veya program gibi bir dizi talimatı çalıştırmaya izin verir. Bu kategorilerin her biri farklı sınıflara uygulanır: kullanıcı, grup ve dünya. "Kullanıcı" sahip anlamına gelir, "grup" sahiple aynı grupta olan herhangi bir kullanıcı anlamına gelir ve "dünya" herkes ve herkes anlamına gelir.

no write perm

Reklamcılık

Klasörler de bu izinlerle kısıtlanabilir. Örneğin, grubunuzdaki diğer kişilerin ana klasörünüzdeki dizinleri ve dosyaları görüntülemesine izin verebilirsiniz, ancak grubunuz dışındaki hiç kimseye izin verebilirsiniz. Bir tür paylaşılan proje üzerinde çalışmıyorsanız, muhtemelen “yazma” erişimini yalnızca kendinizle sınırlamak isteyeceksiniz. Ayrıca herkesin bu klasördeki dosyaları görüntülemesine ve değiştirmesine izin veren bir paylaşılan dizin oluşturabilirsiniz.

Ubuntu'da İzinleri Değiştirme

GUI

Ubuntu'da sahip olduğunuz bir dosyanın izinlerini değiştirmek için dosyaya sağ tıklayın ve "Özellikler"e gidin.

ubuntu permissions

Sahibin, Grubun veya Diğerlerinin okuyup yazabileceğini, salt okuyabileceğini veya hiçbir şey yapamayacağını değiştirebilirsiniz. Dosyanın yürütülmesine izin vermek için bir kutuyu da işaretleyebilirsiniz; bu, aynı anda Sahip, Grup ve Diğerleri için etkinleştirecektir.

Komut satırı

Bunu komut satırı üzerinden de yapabilirsiniz. İçinde dosyaları olan bir dizine gidin ve bir listedeki tüm dosyaları görüntülemek için aşağıdaki komutu yazın:

ls -al

Her dosya ve dizinin yanında, sahip olduğu izinleri özetleyen özel bir bölüm göreceksiniz. Şuna benziyor:

-rwxrw-r–

r "oku", w "yaz" ve x "yürüt" anlamına gelir. Dizinler "-" yerine "d" ile başlayacak. Ayrıca değeri tutan 10 boşluk olduğunu fark edeceksiniz. İlkini yok sayabilirsiniz ve sonra 3 set 3 olur. İlk set sahibine, ikinci set grup için ve son set dünya içindir.

Reklamcılık

Bir dosya veya dizinin izinlerini değiştirmek için chmod komutunun temel formuna bakalım.

chmod [sınıf][operatör][izin] dosyası

chmod [ugoa][+ veya –] [rwx] dosyası

Bu ilk başta karmaşık görünebilir, ancak inanın bana, oldukça kolay. Önce sınıflara bakalım:

  • u: Bu sahibi için.
  • g: Bu grup içindir.
  • o: Bu diğerleri için.
  • a: Bu, yukarıdakilerin tümü için izinleri değiştirecektir.

Ardından, operatörler:

  • +: Artı işareti, takip eden izinleri ekleyecektir.
  • -: Eksi işareti, takip eden izinleri kaldıracaktır.

Hala benimle? Ve son bölüm, bir dosyanın izinlerini kontrol ettiğimiz zamankiyle aynı:

  • r: Okuma erişimine izin verir.
  • w: Yazma erişimine izin verir.
  • x: Yürütmeye izin verir.

Şimdi, bir araya getirelim. Diyelim ki aşağıdaki izinlere sahip “todo.txt” adında bir dosyamız var:

-rw-rw-r–

Yani, sahibi ve grubu okuyabilir ve yazabilir ve dünya sadece okuyabilir. Bunlara ilişkin izinleri değiştirmek istiyoruz:

-rwxr—–

Yani, sahibin tüm izinleri vardır ve grup okuyabilir. Bunu 3 adımda yapabiliriz. İlk olarak, kullanıcı için yürütme izni ekleyeceğiz.

chmod u+x todo.txt

Ardından, grup için yazma iznini kaldıracağız.

chmod gw todo.txt

Reklamcılık

Son olarak, diğer tüm kullanıcılar için okuma izinlerini kaldıracağız.

chmod veya todo.txt

Bunları ayrıca şu şekilde tek bir komutta birleştirebiliriz:

chmod u+x,gw veya todo.txt

Her bölümün virgülle ayrıldığını ve boşluk olmadığını görebilirsiniz.

İşte bazı yararlı izinler:

  • -rwxr-xr-x : Sahip tam izinlere sahiptir, grup ve diğer kullanıcılar dosya içeriğini okuyabilir ve çalıştırabilir.
  • -rwxr–r– : Sahibin tüm izinleri vardır, grup ve diğer kullanıcılar yalnızca dosyayı okuyabilir (başkalarının dosyalarınızı görüntülemesine aldırmazsanız kullanışlıdır.
  • -rwx—— : Sahibin tüm izinleri vardır, diğerlerinin hiçbir izni yoktur (kişisel komut dosyaları için kullanışlıdır).
  • -rw-rw—-: Sahip ve grup okuyabilir ve yazabilir (grup üyeleriyle işbirliği için kullanışlıdır).
  • -rw-r–r– : Sahip okuyabilir ve yazabilir, gruplayabilir ve diğer kullanıcılar yalnızca dosyayı okuyabilir (kişisel dosyaları paylaşılan bir ağda depolamak için kullanışlıdır).
  • -rw——- : Sahip okuyabilir ve yazabilir, diğerlerinde hiçbiri yoktur (kişisel dosyaları depolamak için kullanışlıdır).

chmod ile yapabileceğiniz birkaç şey daha var - setuid ve setgid gibi - ama bunlar biraz derinlemesine ve çoğu kullanıcının zaten bunları kullanması gerekmeyecek.

Kök veya Süper Kullanıcı ve Sistem Dosyaları

Günümüzde, her zaman birden fazla kullanıcısı olan sistemleri çalıştırmıyoruz. Neden hala izinler konusunda endişelenmeliyiz?

Eh, Unix ve türevleri - diğerleri arasında Linux, OS X - ayrıca kullanıcı tarafından yürütülen şeyler, bir yönetici tarafından veya yönetici ayrıcalıklarıyla çalıştırılan şeyler ve sistemin kendisi tarafından yürütülen şeyler arasında ayrım yapar. Bu nedenle, sistem için ayrılmaz olan şeylerin değiştirilmesi veya erişilmesi için yönetici ayrıcalıklarına ihtiyacı vardır. Bu şekilde, yanlışlıkla hiçbir şeyi mahvetmezsiniz.

Reklamcılık

Ubuntu'da sistem dosyalarında değişiklik yapmak için "sudo" veya "gksudo" kullanarak Yönetici ayrıcalıklarının eşdeğerini elde edersiniz. Diğer dağıtımlarda, siz çıkış yapana kadar aynı şeyi etkin bir şekilde yapan “kök” veya “süper kullanıcı” a geçersiniz.

Bu iki durumda da dosya izinlerini değiştirmenin programların çalışmamasına, dosya sahipliğini istemeden (sahip yerine) kök kullanıcıya değiştirmesine ve sistemi daha az güvenli hale getirmesine (daha fazla izin vererek) yol açabileceğini unutmayın. Bu nedenle, gerekli olmadıkça veya ne yaptığınızı bilmiyorsanız, dosyaların - özellikle sistem dosyalarının - izinlerini değiştirmemeniz önerilir.


Kullanıcılar arasında temel bir güvenlik sistemi sağlamak için dosya izinleri mevcuttur. Nasıl çalıştıklarını öğrenmek, çok kullanıcılı bir ortamda temel paylaşımı ayarlamanıza, "genel" dosyaları korumanıza ve sistem dosyası sahipliğiyle ilgili bir sorun olduğunda size bir ipucu vermenize yardımcı olabilir.

İşleri daha kolay açıklayabileceğini mi düşünüyorsun? Düzeltme var mı? Eski günleri hatırlamak ister misiniz? Bir ara verin ve düşüncelerinizi yorumlara yazın.