Dosya sistemi izinleri - File-system permissions

Çoğu dosya sistemi , kullanıcıların dosya sisteminin içeriğini okuma, değiştirme, gezinme ve yürütme yeteneklerini kontrol eden dosya ve dizin özniteliklerini içerir . Bazı durumlarda, kullanıcının izin düzeyine bağlı olarak menü seçenekleri veya işlevleri görünür veya gizlenebilir; bu tür bir kullanıcı arabirimi , izin odaklı olarak adlandırılır .

İki tür izin çok yaygın olarak bulunur: geleneksel Unix izinleri ve daha spesifik kontrol yeteneğine sahip Erişim Kontrol Listeleri (ACL'ler) .

Dosya sistemi varyasyonları

Tek kullanıcılı sistemler için tasarlanmış orijinal File_Allocation_Table dosya sistemi, aslında bir izin olmayan salt okunur bir özniteliğe sahiptir.

Microsoft Windows NT ve türevlerinde uygulanan NTFS , karmaşık bir dizi izin sağlamak için ACL'leri kullanır.

OpenVMS , Unix'inkine benzer bir izin şeması kullanır. Dört kategori (Sistem, Sahip, Grup ve Dünya) ve dört tür erişim izni (Okuma, Yazma, Yürütme ve Silme) vardır. Kategoriler birbirinden ayrık değildir: Dünya, sırasıyla Sahip'i içeren Grubu içerir. Sistem kategorisi bağımsız olarak sistem kullanıcılarını içerir.

Klasik Mac OS işletim sistemlerinde uygulanan HFS , izinleri desteklemez.

Mac OS X sürüm 10.3 ("Panther") ve önceki kullanım POSIX uyumlu izinler. 10.4 sürümü ("Tiger") ile başlayan Mac OS X, NFSv4 ACL'lerin kullanımını da destekler. Mac OS X'in önceki sürümlerinde kullanılan "geleneksel Unix izinlerini" desteklerler ve Apple Mac OS X Server sürüm 10.4+ Dosya Hizmetleri Yönetim Kılavuzu , mümkünse yalnızca geleneksel Unix izinlerinin kullanılmasını önerir. Ayrıca Mac OS Classic'in "Korumalı" özelliğini de destekler.

Solaris ACL desteği, kullanılan dosya sistemine bağlıdır; eski UFS dosya sistemi POSIX.1e ACL'leri desteklerken, ZFS yalnızca NFSv4 ACL'leri destekler.

Linux , ext2 , ext3 , ext4 , Btrfs ve çoğu POSIX.1e ACL'leri içeren diğer dosya sistemlerini destekler. ext3 ve ext4 dosya sistemleri için NFSv4 ACL'leri için deneysel destek vardır.

FreeBSD , UFS'de POSIX.1e ACL'lerini ve UFS ve ZFS'de NFSv4 ACL'lerini destekler.

IBM z/OS , RACF (Resource Access Control Facility) kullanarak dosya güvenliğini uygular

AmigaOS Dosya Sistemi, AmigaDOS , tek kullanıcılı bir işletim sistemi için nispeten gelişmiş bir izin sistemini destekler. AmigaOS 1.x'te dosyalar, Arşivleme, Okuma, Yazma, Yürütme ve Silme (topluca ARWED olarak bilinir) izinlerine/işaretlerine sahipti. AmigaOS 2.x ve sonraki sürümlerde, ek Hold, Script ve Pure izinleri/bayrakları eklendi.

Geleneksel Unix izinleri

Unix benzeri dosya sistemlerindeki izinler, user , group ve diğerleri olarak bilinen üç kapsam veya sınıfta yönetilir . Bir dosya oluşturulduğunda, izinleri onu oluşturan işlemin umask'ı tarafından kısıtlanır .

sınıflar

Dosyalar ve dizinler bir kullanıcıya aittir. Dosyanın kullanıcı sınıfını sahibi belirler . Sahibi için farklı izinler geçerlidir.

Dosyalara ve dizinlere , dosyanın grup sınıfını tanımlayan bir grup atanır . Dosya grubunun üyeleri için farklı izinler geçerlidir. Sahibi, dosya grubunun bir üyesi olabilir.

Grubun sahibi veya üyesi olmayan kullanıcılar bir dosyanın other sınıfını oluşturur . Farklı izinler diğerleri için geçerlidir.

Etkili izinler Kullanıcı, daha sonra bir grup diğerlerinden sırasına denk düşen birinci sınıf göre belirlenir. Örneğin, dosyanın sahibi olan kullanıcı, grup sınıfına veya diğer sınıflara atanan izinlerden bağımsız olarak kullanıcı sınıfına verilen izinlere sahip olacaktır.

izinler

Unix benzeri sistemler, her sınıf için geçerli olan üç özel izin uygular:

  • Okuma izni bir dosyayı okuma yeteneği verir. Bir dizin için ayarlandığında, bu izin , dizindeki dosyaların adlarını okuma yeteneği verir , ancak bunlar hakkında içerik, dosya türü, boyutu, sahiplik, izinler gibi daha fazla bilgi bulma yeteneği vermez.
  • Yazma izni bir dosya değiştirme yeteneğini verir. Bir dizin için ayarlandığında, bu izin, dosya oluşturma, dosyaları silme ve dosyaları yeniden adlandırma dahil dizindeki girişleri değiştirme yeteneği verir. Bunun, yürütmenin de ayarlanmış olmasını gerektirdiğini unutmayın ; onsuz, yazma izni dizinler için anlamsızdır.
  • Yürütmek izni bir dosya yürütme yeteneğine verir. Bu izin, işletim sisteminin bunları çalıştırmasına izin vermek için yürütülebilir programlar için ayarlanmalıdır. Bir dizin için ayarlandığında, yürütme izni arama izni olarak yorumlanır : adı biliniyorsa dosya içeriğine ve meta bilgilere erişim yeteneği verir, ancak read ayrıca ayarlanmadıkça dizin içindeki dosyaları listelemez .

İzinleri bir dosya yerine bir dizine ayarlamanın etkisi, "en sık yanlış anlaşılan dosya izni sorunlarından biridir".

Bir izin ayarlanmadığında, ilgili haklar reddedilir. ACL tabanlı sistemlerin aksine, Unix benzeri sistemlerdeki izinler miras alınmaz. Bir dizin içinde oluşturulan dosyalar, o dizinle aynı izinlere sahip olmak zorunda değildir.

setuid, setgid ve yapışkan bitlerle izin davranışını değiştirme

Unix benzeri sistemler tipik olarak üç ek mod kullanır. Bunlar aslında niteliklerdir ancak izinler veya modlar olarak adlandırılırlar. Bu özel modlar, bir sınıfa göre değil, bir dosya veya dizin geneli içindir, ancak sembolik gösterimde (aşağıya bakınız) setuid biti kullanıcı için triadda, setgid biti grup için triadda ve setgid bitinde ayarlanır. yapışkan bit, diğerleri için üçlüde ayarlanır.

  • Grubu, kullanıcı kimliği , setuid veya SUID modu. Setuid içeren bir dosya yürütüldüğünde, elde edilen süreç , sahip sınıfına verilen etkin kullanıcı kimliğini varsayacaktır . Bu, kullanıcıların geçici olarak kök (veya başka bir kullanıcı) olarak ele alınmasını sağlar.
  • Set grup kimliği , setgid veya SGID izni. setgid içeren bir dosya yürütüldüğünde, ortaya çıkan süreç , grup sınıfına verilen grup kimliğini varsayacaktır . Bir dizine setgid uygulandığında, bu dizin altında oluşturulan yeni dosyalar ve dizinler gruplarını bu dizinden devralır. (Varsayılan davranış, setgid biti her zaman tüm dizinlerde ayarlanmış gibi davranan BSD'den türetilen sistemler dışında, yeni dosya ve dizin grubunu ayarlarken etkin kullanıcının birincil grubunu kullanmaktır (bkz. Setuid ).
  • Yapışkan (aynı zamanda mod metin modu). Yürütülebilir dosyalardaki yapışkan bitin klasik davranışı, çekirdeği , sonuçtaki işlem görüntüsünü sonlandırmanın ötesinde bellekte tutmaya teşvik etmek olmuştur ; bununla birlikte, yapışkan bitin bu şekilde kullanımı artık unix benzeri işletim sistemlerinin ( HP-UX ve UnixWare ) yalnızca bir azınlığı ile sınırlıdır . Bir dizinde, yapışkan izin, kullanıcıların, dizine yazma izinleri olsa bile, kendileri dışındaki kullanıcılara ait dosyaları yeniden adlandırmalarını, taşımalarını veya silmelerini engeller. Yalnızca dizin sahibi ve süper kullanıcı bundan muaftır.

Bu ek kiplere setuid bit , setgid bit ve yapışkan bit de denir, çünkü bunların her biri yalnızca bir bit kaplar.

Geleneksel Unix izinlerinin gösterimi

sembolik gösterim

Unix izinleri ya sembolik gösterimde ya da sekizli gösterimde gösterilir.

En yaygın şekilde, komut tarafından kullanıldığı gibi ls -l, bir sembolik gösterim .

Üç izin üçlüsü
ilk üçlü sahibi ne yapabilir
ikinci üçlü grup üyeleri neler yapabilir
üçüncü üçlü diğer kullanıcılar ne yapabilir
Her üçlü
ilk karakter r: okunabilir
ikinci karakter w: yazılabilir
üçüncü karakter x: yürütülebilir
sveya t: setuid / setgid veya sticky (ayrıca yürütülebilir)
Sveya T: setuid/setgid veya sticky (yürütülebilir değil)

Ekranın ilk karakteri dosya türünüls belirtir ve izinlerle ilgili değildir. Kalan dokuz karakter, her biri üç karakter olarak bir izin sınıfını temsil eden üç küme halindedir. İlk küme, kullanıcı sınıfını temsil eder . İkinci küme, grup sınıfını temsil eder . Üçüncü küme, diğerleri sınıfını temsil eder .

Üç karakterin her biri okuma, yazma ve yürütme izinlerini temsil eder:

  • rOkumaya izin verilirse, verilmezse -.
  • wyazmaya izin veriliyorsa, izin verilmiyorsa -.
  • xyürütmeye izin verilirse, izin verilmezse -.

Aşağıda bazı sembolik gösterim örnekleri verilmiştir:

  • -rwxr-xr-x: kullanıcı sınıfının tam izinlere sahip olduğu ve grup ve diğer sınıfların yalnızca okuma ve yürütme izinlerine sahip olduğu normal bir dosya.
  • crw-rw-r--: kullanıcı ve grup sınıfları okuma ve yazma izinlerine sahip olan ve diğer sınıfları sadece okuma iznine sahip olan bir karakter özel dosyası.
  • dr-x------: kullanıcı sınıfının okuma ve yürütme izinlerine sahip olduğu ve grup ve diğer sınıfların izinlerinin olmadığı bir dizin.

Bazı izin sistemlerinde, ls -lekrandaki ek semboller, ek izin özelliklerini temsil eder:

  • + (artı) soneki, ek izinleri kontrol edebilen bir erişim kontrol listesini belirtir.
  • . (nokta) soneki, bir SELinux bağlamının mevcut olduğunu gösterir. Detaylar komutu ile listelenebilir ls -Z.
  • @ soneki, genişletilmiş dosya özniteliklerinin mevcut olduğunu gösterir.

setuid , setgid ve sticky veya text niteliklerini temsil etmek için yürütülebilir karakter ( xveya -) değiştirilir. Bu öznitelikler yalnızca bir sınıftaki kullanıcıları değil, tüm dosyayı etkilese de, setuid özniteliği kullanıcı için triaddaki yürütülebilir karakteri değiştirir, setgid özniteliği triaddaki yürütülebilir karakteri grup için değiştirir ve sticky veya text özniteliği dosyayı değiştirir. diğerleri için üçlüde yürütülebilir karakter. setuid veya setgid öznitelikleri için, birinci veya ikinci üçlüde, xolur sve -olur S. Yapışkan veya metin niteliği için, üçüncü üçlüde, xolur tve -olur T. İşte bir örnek:

  • -rwsr-Sr-t: kullanıcı sınıfının okuma, yazma ve yürütme izinlerine sahip bir dosya; grup sınıfı okuma iznine sahip olan; diğerlerinin sınıfı okuma ve yürütme izinlerine sahip; ve setuid , setgid ve sticky özniteliklerine sahip olan.

sayısal gösterim

Unix izinlerini temsil etmenin başka bir yöntemi, tarafından gösterildiği gibi sekizlik (temel-8) bir gösterimdir stat -c %a. Bu gösterim en az üç rakamdan oluşur. En sağdaki üç basamaktan her biri izinlerin farklı bir bileşenini temsil eder: sahip, grup ve diğerleri. (Dördüncü basamak varsa, en soldaki (yüksek sıralı) basamak, setuid bit , setgid bit ve yapışkan bit olmak üzere üç ek özniteliği adresler .)

Bu rakamların her biri, ikili sayı sistemindeki bileşen bitlerinin toplamıdır . Sonuç olarak, bir sayı ile temsil edildiği için belirli bitler toplama eklenir:

  • Okuma biti toplamına 4 ekler (ikili 100 olarak),
  • Yazma biti toplamına 2 ekler (ikili 010'da) ve
  • Yürütme biti toplamına 1 ekler (ikili 001'de).

Bu değerler asla belirsiz kombinasyonlar üretmez; her toplam belirli bir izin kümesini temsil eder. Daha teknik olarak, bu bir bit alanının sekizli bir temsilidir - her bit ayrı bir izne atıfta bulunur ve bir seferde 3 bitin sekizlik olarak gruplandırılması bu izinlerin kullanıcı, grup ve diğerlerine göre gruplandırılmasına karşılık gelir.

Sekizli gösterimde verilen sembolik gösterim bölümünden örnekler şunlardır :

sembolik
gösterim
sayısal
gösterim
ingilizce
---------- 0000 izin yokmu
-rwx------ 0700 sadece sahibi için oku, yaz ve çalıştır
-rwxrwx--- 0770 sahip ve grup için okuma, yazma ve yürütme
-rwxrwxrwx 0777 sahip, grup ve diğerleri için okuma, yazma ve yürütme
---x--x--x 0111 uygulamak
--w--w--w- 0222 yazmak
--wx-wx-wx 0333 yaz ve yürüt
-r--r--r-- 0444 okuman
-r-xr-xr-x 0555 oku ve çalıştır
-rw-rw-rw- 0666 okuma yazma
-rwxr----- 0740 sahibi okuyabilir, yazabilir ve çalıştırabilir; grup sadece okuyabilir; diğerlerinin izni yok

Kullanıcı özel grubu

Bazı sistemler, her kullanıcı için yeni bir grup - "kullanıcı özel grubu" - oluşturarak geleneksel POSIX kullanıcı ve grup modelinden ayrılır. Her kullanıcının kendi kullanıcı özel grubunun tek üyesi olduğunu varsayarsak, bu şema, diğer kullanıcıların normal dizinlerde yeni oluşturulan dosyalara yazmasına izin vermeden 002'lik bir umask kullanılmasına izin verir, çünkü bu tür dosyalar, oluşturan kullanıcının özel grubuna atanır. Ancak, dosyaların paylaşılması istendiğinde, yönetici istenen kullanıcıları içeren bir grup oluşturabilir, yeni gruba atanmış bir grup tarafından yazılabilir dizin oluşturabilir ve en önemlisi, dizini setgid yapabilir. Bunu setgid yapmak, içinde oluşturulan dosyaların dizinle aynı gruba atanmasına neden olur ve 002 umask (kullanıcı özel grupları kullanılarak etkinleştirilir) grubun diğer üyelerinin bu dosyalara yazabilmesini sağlar.

Ayrıca bakınız

Referanslar

Dış bağlantılar