Unix / Linux - Dosya İzni / Erişim Modları
Bu bölümde, Unix'teki dosya izni ve erişim modları hakkında ayrıntılı olarak tartışacağız. Dosya sahipliği, dosyaları depolamak için güvenli bir yöntem sağlayan önemli bir Unix bileşenidir. Unix'teki her dosya aşağıdaki özniteliklere sahiptir -
Owner permissions - Sahibin izinleri, dosyanın sahibinin dosya üzerinde hangi eylemleri gerçekleştirebileceğini belirler.
Group permissions - Grubun izinleri, bir dosyanın ait olduğu grubun üyesi olan bir kullanıcının dosya üzerinde hangi eylemleri gerçekleştirebileceğini belirler.
Other (world) permissions - Başkalarının izinleri, diğer tüm kullanıcıların dosya üzerinde hangi eylemi gerçekleştirebileceğini gösterir.
İzin Göstergeleri
Kullanırken ls -l komutu, dosya izni ile ilgili çeşitli bilgileri aşağıdaki gibi görüntüler -
$ls -l /home/amrood
-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile
drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir
Buradaki ilk sütun, farklı erişim modlarını, yani bir dosya veya dizinle ilişkili izni temsil eder.
İzinler, üçlü gruplara ayrılır ve gruptaki her konum, şu sırayla belirli bir izni belirtir: okuma (r), yazma (w), yürütme (x) -
İlk üç karakter (2-4) dosyanın sahibinin izinlerini temsil eder. Örneğin,-rwxr-xr-- sahibin okuma (r), yazma (w) ve yürütme (x) iznine sahip olduğunu gösterir.
Üç karakterden oluşan ikinci grup (5-7), dosyanın ait olduğu grubun izinlerinden oluşur. Örneğin,-rwxr-xr-- grubun okuma (r) ve yürütme (x) iznine sahip olduğunu, ancak yazma izni olmadığını gösterir.
Üç karakterden oluşan son grup (8-10), diğer herkes için izinleri temsil eder. Örneğin,-rwxr-xr-- var olduğunu temsil eder read (r) sadece izin.
Dosya Erişim Modları
Bir dosyanın izinleri, bir Unix sisteminin güvenliğindeki ilk savunma hattıdır. Unix izinlerinin temel yapı taşları şunlardır:read, write, ve execute aşağıda açıklanan izinler -
Okuyun
Dosyanın içeriğini okuma, yani görüntüleme yeteneği verir.
Yazmak
Dosyanın içeriğini değiştirme veya kaldırma yeteneği verir.
Yürüt
Yürütme izinlerine sahip kullanıcı bir dosyayı program olarak çalıştırabilir.
Dizin Erişim Modları
Dizin erişim modları, diğer herhangi bir dosyayla aynı şekilde listelenir ve düzenlenir. Bahsedilmesi gereken birkaç farklılık var -
Okuyun
Bir dizine erişim, kullanıcının içeriği okuyabileceği anlamına gelir. Kullanıcı şuna bakabilir:filenames dizinin içinde.
Yazmak
Erişim, kullanıcının dizine dosya ekleyebileceği veya dizinden dosya silebileceği anlamına gelir.
Yürüt
Bir dizini yürütmek gerçekten bir anlam ifade etmiyor, bu yüzden bunu bir geçiş izni olarak düşünün.
Bir kullanıcının sahip olması gerekir execute erişim bin dizini çalıştırmak için ls ya da cd komut.
İzinleri Değiştirme
Dosyayı veya dizin izinlerini değiştirmek için, chmod(modu değiştir) komutu. Chmod'u kullanmanın iki yolu vardır - sembolik mod ve mutlak mod.
Chmod'u Sembolik Modda kullanma
Yeni başlayanlar için dosya veya dizin izinlerini değiştirmenin en kolay yolu sembolik modu kullanmaktır. Sembolik izinlerle, aşağıdaki tablodaki operatörleri kullanarak istediğiniz izin setini ekleyebilir, silebilir veya belirtebilirsiniz.
Sr.No. | Chmod operatörü ve Açıklama |
---|---|
1 | + Belirtilen izinleri bir dosyaya veya dizine ekler. |
2 | - Belirtilen izinleri bir dosya veya dizinden kaldırır. |
3 | = Belirlenen izinleri ayarlar. |
İşte bir örnek testfile. Koşuls -1 test dosyasında dosyanın izinlerinin aşağıdaki gibi olduğunu gösterir -
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Sonra her örnek chmod önceki tablodaki komut test dosyasında çalıştırılır, ardından ls –l, böylece izin değişikliklerini görebilirsiniz -
$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
İşte bu komutları tek bir satırda nasıl birleştirebileceğiniz -
$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile
Chmod'u Mutlak İzinlerle Kullanma
İzinleri chmod komutuyla değiştirmenin ikinci yolu, dosya için her izin kümesini belirtmek için bir sayı kullanmaktır.
Aşağıdaki tabloda gösterildiği gibi her izne bir değer atanır ve her izin kümesinin toplamı, o küme için bir sayı sağlar.
Numara | Sekizli İzin Temsilciliği | Referans |
---|---|---|
0 | İzin yok | --- |
1 | İzni uygula | --x |
2 | Yazma izni | -w- |
3 | Yürütme ve yazma izni: 1 (yürüt) + 2 (yazma) = 3 | -wx |
4 | Okuma izni | r-- |
5 | Okuma ve yürütme izni: 4 (okuma) + 1 (yürütme) = 5 | rx |
6 | Okuma ve yazma izni: 4 (okuma) + 2 (yazma) = 6 | rw- |
7 | Tüm izinler: 4 (okuma) + 2 (yazma) + 1 (yürütme) = 7 | rwx |
İşte test dosyasını kullanan bir örnek. Koşuls -1 test dosyasında dosyanın izinlerinin aşağıdaki gibi olduğunu gösterir -
$ls -l testfile
-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile
Sonra her örnek chmod önceki tablodaki komut test dosyasında çalıştırılır, ardından ls –l, böylece izin değişikliklerini görebilirsiniz -
$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile
$chmod 043 testfile
$ls -l testfile
----r---wx 1 amrood users 1024 Nov 2 00:10 testfile
Sahipleri ve Grupları Değiştirme
Unix'te bir hesap oluştururken, bir owner ID ve bir group IDher kullanıcıya. Yukarıda belirtilen tüm izinler, Sahip ve Gruplara göre de atanır.
Dosyaların sahibini ve grubunu değiştirmek için iki komut mevcuttur -
chown - chown komutun açılımı "change owner" ve bir dosyanın sahibini değiştirmek için kullanılır.
chgrp - chgrp komutun açılımı "change group" ve bir dosyanın grubunu değiştirmek için kullanılır.
Sahipliği Değiştirme
chownkomutu bir dosyanın sahipliğini değiştirir. Temel sözdizimi aşağıdaki gibidir -
$ chown user filelist
Kullanıcının değeri şu olabilir: name of a user sistemde veya user id (uid) sistemdeki bir kullanıcının.
Aşağıdaki örnek, kavramı anlamanıza yardımcı olacaktır -
$ chown amrood testfile
$
Verilen dosyanın sahibini kullanıcıya değiştirir amrood.
NOTE - Süper kullanıcı, kök, herhangi bir dosyanın sahipliğini değiştirme konusunda sınırsız yeteneğe sahiptir, ancak normal kullanıcılar yalnızca sahip oldukları dosyaların sahipliğini değiştirebilir.
Grup Sahipliğini Değiştirme
chgrpcommand bir dosyanın grup sahipliğini değiştirir. Temel sözdizimi aşağıdaki gibidir -
$ chgrp group filelist
Grubun değeri, name of a group sistemde veya the group ID (GID) sistemdeki bir grubun.
Aşağıdaki örnek, kavramı anlamanıza yardımcı olur -
$ chgrp special testfile
$
Verilen dosyanın grubunu şu şekilde değiştirir: special grubu.
SUID ve SGID Dosya İzni
Genellikle bir komut yürütüldüğünde, görevini yerine getirmesi için özel ayrıcalıklarla yürütülmesi gerekecektir.
Örnek olarak, şifrenizi değiştirdiğinizde passwd komut, yeni şifreniz dosyada saklanır /etc/shadow.
Normal bir kullanıcı olarak, sahip değilsiniz read veya writegüvenlik nedeniyle bu dosyaya erişim, ancak şifrenizi değiştirdiğinizde, bu dosyaya yazma izninizin olması gerekir. Bu şu demektirpasswd programın dosyaya yazabilmeniz için size ek izinler vermesi gerekir /etc/shadow.
Ek izinler, programlara şu adıyla bilinen bir mekanizma aracılığıyla verilir: Set User ID (SUID) ve Set Group ID (SGID) bitler.
SUID biti etkin olan bir programı çalıştırdığınızda, o programın sahibinin izinlerini devralırsınız. SUID bit setine sahip olmayan programlar, programı başlatan kullanıcının izinleriyle çalıştırılır.
SGID için de durum böyledir. Normalde programlar grup izinlerinizle çalışır, ancak bunun yerine grubunuz sadece bu program için programın grup sahibine değiştirilir.
SUID ve SGID bitleri harf olarak görünecektir. "s"izin varsa. SUID"s" bit, sahiplerin izin bitlerinde yer alacaktır. execute izin normalde bulunur.
Örneğin, - komutu -
$ ls -l /usr/bin/passwd
-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*
$
SUID bitinin ayarlandığını ve komutun köke ait olduğunu gösterir. Büyük harfS küçük harf yerine yürütme konumunda s yürütme bitinin ayarlanmadığını gösterir.
Dizinde yapışkan bit etkinleştirilmişse, dosyalar yalnızca aşağıdaki kullanıcılardan biriyseniz kaldırılabilir -
- Yapışkan dizinin sahibi
- Kaldırılan dosyanın sahibi
- Süper kullanıcı, kök
Herhangi bir dizin için SUID ve SGID bitlerini ayarlamak için aşağıdaki komutu deneyin -
$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname
$