Merhabalar,

Bugün anlatacağım konu, ACL yani “Access Control List”. Linux öğrenirken açıkcası benim anlamakta zorlandığım konulardan birisiydi. Bu nedenle bu konuyu en anlaşılır şekilde anlatmaya çalışacağım.

Örneğin, bir dosyada sadece belirli bir kullanıcıya okuma izni vermek istiyorsunuz ama grubu değiştirmek istemiyorsunuz. Bu durumda ACL devreye girer ve standart izinlerin ötesine geçerek daha esnek bir kontrol sağlar.

Bu yazıda, ACL’nin temellerini öğrenip pratik örneklerle nasıl uygulanacağını göreceğiz.

Bu amaç ile üç yeni kullanıcı oluşturdum.

[rocky@instance-20241019-1038 ~]$ tail -3 /etc/passwd

ayse:x:1004:1005::/home/ayse:/bin/bash

fatma:x:1005:1006::/home/fatma:/bin/bash

veli:x:1006:1007::/home/veli:/bin/bash

[rocky@instance-20241019-1038 ~]$

 

 

Bu komut, sistemde tanımlı olan kullanıcıların bilgilerinin son üç satırını görüntülemek için kullanılmıştır. Çıktıya göre:

ayse kullanıcısı: UID 1004, GID 1005 ile tanımlanmış ve /home/ayse dizinini ev dizini olarak kullanıyor. Komut kabuğu olarak /bin/bash atanmış.

fatma kullanıcısı: UID 1005, GID 1006 ile tanımlanmış ve /home/fatma dizinini ev dizini olarak kullanıyor. Komut kabuğu /bin/bash.

veli kullanıcısı: UID 1006, GID 1007 ile tanımlanmış ve /home/veli dizinini ev dizini olarak kullanıyor. Komut kabuğu /bin/bash.

 

Çalışmaları, ayse kullanıcısı ile yapacağım.

ACL, Linux dosya sisteminde, standart izinlerin ötesine geçerek dosyalar ve dizinler üzerinde daha detaylı erişim kontrolü sağlar. Örneğin, normal izinlerde bir dosyaya sadece sahip olan kullanıcı, grup ve diğer kullanıcılar için izin verebiliriz. Ancak ACL ile belirli bir kullanıcıya veya gruba özel izinler tanımlayabiliriz. Mesela, başka bir örnek, bir dosyaya hem bir gruptaki kullanıcıların hem de o grubun dışında bir bireyin okuma hakkına sahip olmasını isteyebiliriz.

[ayse@instance-20241019-1038 ~]$ whoami

ayse

[ayse@instance-20241019-1038 ~]$ pwd

/home/ayse

[ayse@instance-20241019-1038 ~]$ ls -ld /home/ayse/

drwx——. 2 ayse ayse 62 Nov 17 16:51 /home/ayse/

[ayse@instance-20241019-1038 ~]$

 

Bu adımlarda, ayse kullanıcısının oturum açtığı ve kendi ev dizininde (/home/ayse/) çalıştığı görülmektedir:

whoami Komutu: Ayse kullanıcısının oturum açmış kullanıcı olduğunu doğrulamıştır.

pwd Komutu: Ayse kullanıcısının şu anda /home/ayse dizininde çalıştığını göstermiştir.

ls -ld /home/ayse/ Komutu: /home/ayse dizininin izinlerini ve sahiplik bilgilerini listelemiştir:

drwx——: Bu, dizine sadece Ayse kullanıcısının tam erişimi (okuma, yazma ve çalıştırma) olduğunu gösterir. Diğer kullanıcıların hiçbir erişim hakkı yoktur.

Sahip: ayse

Grup: ayse

 

Farz edelim ki fatma kullanıcısının bu dosyayı okuma iznine sahip olmasını istiyoruz, ancak grubu değiştirmek istemiyoruz. Elbette, other’a da Normal izinlerle bunu yapamayız, çünkü grupları değiştirmek karmaşıklaşabilir. İşte bu noktada ACL devreye giriyor.

[ayse@instance-20241019-1038 ~]$ mkdir /home/ayse/acl_ornegi

[ayse@instance-20241019-1038 ~]$ ls -ld /home/ayse/acl_ornegi

drwxr-xr-x. 2 ayse ayse 6 Nov 17 16:58 /home/ayse/acl_ornegi

[ayse@instance-20241019-1038 ~]$

 

Bu adımlarda, Ayse kullanıcısı /home/ayse/acl_ornegi adında yeni bir dizin oluşturmuş ve dizinin izinleri kontrol edilmiştir:

mkdir /home/ayse/acl_ornegi Komutu: /home/ayse dizini içinde acl_ornegi adında bir alt dizin oluşturmuştur.

ls -ld /home/ayse/acl_ornegi Komutu: Oluşturulan dizinin izinlerini ve sahiplik bilgilerini listelemiştir:

drwxr-xr-x:

ayse: Dizin sahibi tam erişime (okuma, yazma, çalıştırma) sahiptir.

Grup üyeleri ve diğer kullanıcılar: Sadece okuma ve çalıştırma iznine sahiptir.

Sahip: ayse

Grup: ayse

Bu ayarlar, dizine diğer kullanıcıların erişmesine (listeleme ve giriş yapma) izin verir, ancak yazma işlemi sadece dizin sahibi olan Ayse tarafından yapılabilir.

 

ACL’de iki önemli komutumuz var: setfacl ve getfacl

setfacl [opsiyonlar] [izin] [dosya/dizin]

Opsiyonlar:

-m: ACL ekler veya mevcut ACL’yi değiştirir.

-x: Belirtilen kullanıcı, grup veya diğer bir ACL kaydını kaldırır.

-b: Tüm ACL girişlerini temizler (ACL’yi devre dışı bırakır ve sadece temel izinleri bırakır).

-d: Varsayılan ACL ayarlarını belirler (sadece dizinler için geçerlidir, yeni oluşturulan dosyalar için otomatik izin ayarlanır).

[izin] kısmını biraz daha açalım.

[tip]:[kullanıcı veya grup]:[izin türü]

[Tip]: İzni Kime Uyguluyoruz?

Tip                          Açıklama

u veya user         Belirli bir kullanıcı için izin ekler.

g veya group      Belirli bir grup için izin ekler.

o veya other       Diğer kullanıcılar (ne sahibi ne de gruptan olanlar) için izin ekler.

d veya default   Varsayılan izinler. (Dizinler için geçerlidir; yeni eklenen dosyalar bu izinlerle oluşturulur.)

[Kullanıcı veya Grup]: Kime Uygulanacak?

Bu alana belirli bir kullanıcı veya grup adı yazılır:

Belirli bir kullanıcı: Kullanıcı adı (ayse, fatma gibi) veya UID yazılır.

Belirli bir grup: Grup adı (developers, staff gibi) veya GID yazılır.

Eğer boş bırakılırsa:

Kullanıcı için: Dosyanın sahibi anlamına gelir.

Grup için: Dosyanın grubu anlamına gelir.

Örnekler:

u:fatma: fatma kullanıcısına izin ekler.

g:developers: developers grubuna izin ekler.

u::rw-: Dosyanın sahibine read-write izni ekler (kullanıcı adı belirtilmemiş).

[İzin Türü]: Verilen Yetkiler

Bu kısım, dosya veya dizin üzerinde hangi izinlerin verildiğini tanımlar. İzinler şunlar olabilir:

r: Okuma izni (read)

w: Yazma izni (write)

x: Çalıştırma izni (execute)

İzinler birden fazla olabilir ve birlikte kullanılabilir. Örneğin, rw-, rwx, veya sadece r–.

Örnekler:

r–: Sadece okuma izni.

rw-: Okuma ve yazma izni.

rwx: Okuma, yazma ve çalıştırma izni.

[ayse@instance-20241019-1038 ~]$ whoami

ayse

[ayse@instance-20241019-1038 ~]$ ls -ld /home/ayse

drwx——. 3 ayse ayse 80 Nov 17 16:58 /home/ayse

[ayse@instance-20241019-1038 ~]$

[ayse@instance-20241019-1038 ~]$

 

Bu, sadece ayse kullanıcısının dizine erişim sağlayabildiğini gösteriyor. Eğer başka bir kullanıcı (fatma veya veli) dizindeki dosyalara erişmek isterse, önce dizine giriş izni verilmesi gerekir.

 

[ayse@instance-20241019-1038 ~]$ setfacl -m u:fatma:x /home/ayse

[ayse@instance-20241019-1038 ~]$ setfacl -m u:veli:x /home/ayse

[ayse@instance-20241019-1038 ~]$ getfacl /home/ayse

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse

# owner: ayse

# group: ayse

user::rwx

user:fatma:–x

user:veli:–x

group::—

mask::–x

other::—

 

[ayse@instance-20241019-1038 ~]$

 

Bu adımlarda, /home/ayse dizinine Fatma ve Veli kullanıcılarının erişebilmesi için çalıştırma izni (execute – x) verilmiştir. setfacl komutuyla yapılan bu işlem, Fatma ve Veli kullanıcılarının /home/ayse dizinine girmelerine izin verir, ancak dizindeki dosyaları listelemelerine veya görmelerine izin vermez.

getfacl komutuyla yapılan kontrol sonucu, Fatma ve Veli kullanıcıları için yalnızca çalıştırma izni (x) tanımlandığı, diğer kullanıcılar ve grupların ise herhangi bir erişim iznine sahip olmadığı doğrulanmıştır. Bu ayar, dizine kontrollü erişim sağlamak için yapılmıştır.

Bu ayarlar artık fatma ve veli kullanıcılarının /home/ayse dizinine girebilmesini sağlar.

[ayse@instance-20241019-1038 ~]$ ls -ld /home/ayse/acl_ornegi

drwxr-xr-x. 2 ayse ayse 6 Nov 17 16:58 /home/ayse/acl_ornegi

[ayse@instance-20241019-1038 ~]$

 

Bu durumda /home/ayse/acl_ornegi için,

ayse: Tam erişim hakkına sahip.

grup ve diğer kullanıcılar: Sadece dizini listeleyebilir ve içeriği okuyabilir.

[ayse@instance-20241019-1038 ~]$ touch /home/ayse/acl_ornegi/dosya1.txt

[ayse@instance-20241019-1038 ~]$ ls -l /home/ayse/acl_ornegi/dosya1.txt

-rw-r–r–. 1 ayse ayse 0 Nov 17 17:26 /home/ayse/acl_ornegi/dosya1.txt

[ayse@instance-20241019-1038 ~]$

 

Bu adımlarda, /home/ayse/acl_ornegi/ dizini içinde dosya1.txt adında yeni bir dosya oluşturulmuştur. touch komutu kullanılarak oluşturulan bu dosya, varsayılan Linux izinleriyle (-rw-r–r–) ayarlanmıştır. Bu izinler, dosyanın sahibine (ayse) okuma ve yazma izni, gruba ve diğer kullanıcılara ise yalnızca okuma izni verir. Ancak, bu varsayılan izinler ACL tarafından daha detaylı bir şekilde düzenlenebilir.

fatma kullanıcısının dosya1.txt dosyasını okuyabilmesini istiyoruz.

[ayse@instance-20241019-1038 ~]$ setfacl -m u:fatma:r /home/ayse/acl_ornegi/dosya1.txt

[ayse@instance-20241019-1038 ~]$ getfacl /home/ayse/acl_ornegi/dosya1.txt

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse/acl_ornegi/dosya1.txt

# owner: ayse

# group: ayse

user::rw-

user:fatma:r–

group::r–

mask::r–

other::r–

[ayse@instance-20241019-1038 ~]$

[ayse@instance-20241019-1038 ~]$ su – fatma

Password:

Last login: Sun Nov 17 16:47:59 UTC 2024 on pts/0

[fatma@instance-20241019-1038 ~]$

[fatma@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya1.txt

[fatma@instance-20241019-1038 ~]$ exit

logout

[ayse@instance-20241019-1038 ~]$ echo “ayse, fatma’ya okuma hakkı verdi.” >> /home/ayse/acl_ornegi/dosya1.txt

[ayse@instance-20241019-1038 ~]$

[ayse@instance-20241019-1038 ~]$

[ayse@instance-20241019-1038 ~]$ su – fatma

Password:

Last login: Sun Nov 17 17:28:35 UTC 2024 on pts/0

[fatma@instance-20241019-1038 ~]$

[fatma@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya1.txt

ayse, fatma’ya okuma hakkı verdi.

[fatma@instance-20241019-1038 ~]$

Bu adımlarda, /home/ayse/acl_ornegi/dosya1.txt dosyasına Fatma kullanıcısına yalnızca okuma izni (r–) verilmiştir. setfacl komutuyla yapılan bu işlem, Fatma’nın dosyayı okuyabilmesini sağlar ancak yazma veya düzenleme izni vermez.

Fatma kullanıcısı dosyanın içeriğini başarıyla görüntüleyebilmiştir, ancak yazma izni olmadığı için dosyaya herhangi bir değişiklik yapamaz. Ayse kullanıcısı dosyaya bir satır ekledikten sonra, Fatma dosyanın güncellenmiş içeriğini tekrar görüntülemiştir. Bu test, Fatma’ya atanan ACL okuma izninin doğru şekilde çalıştığını kanıtlamıştır.

veli kullanıcısının dosyayı okuyabilmesini ve dosyaya yazabilmesini istiyoruz.

[ayse@instance-20241019-1038 ~]$ whoami

ayse

[ayse@instance-20241019-1038 ~]$ pwd

/home/ayse

[ayse@instance-20241019-1038 ~]$ ls -la

total 12

drwx–x—+ 3 ayse ayse  80 Nov 17 16:58 .

drwxr-xr-x. 9 root root  95 Nov 17 16:33 ..

-rw-r–r–. 1 ayse ayse  18 Jan 23  2023 .bash_logout

-rw-r–r–. 1 ayse ayse 141 Jan 23  2023 .bash_profile

-rw-r–r–. 1 ayse ayse 492 Jan 23  2023 .bashrc

drwxr-xr-x. 2 ayse ayse  24 Nov 17 17:26 acl_ornegi

[ayse@instance-20241019-1038 ~]$ setfacl -m u:veli:rw /home/ayse/acl_ornegi/dosya1.txt

[ayse@instance-20241019-1038 ~]$

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse/acl_ornegi/dosya1.txt

# owner: ayse

# group: ayse

user::rw-

user:fatma:r–

user:veli:rw-

group::r–

mask::rw-

other::r–

[ayse@instance-20241019-1038 ~]$

[ayse@instance-20241019-1038 ~]$ su – veli

Password:

[veli@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya1.txt

ayse, fatma’ya okuma hakkı verdi.

[veli@instance-20241019-1038 ~]$ echo “veli olarak dosyaya ekleme yaptım.” >> /home/ayse/acl_ornegi/dosya1.txt

[veli@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya1.txt

ayse, fatma’ya okuma hakkı verdi.

veli olarak dosyaya ekleme yaptım.

[veli@instance-20241019-1038 ~]$

Bu adımlarda, /home/ayse/acl_ornegi/dosya1.txt dosyası için Veli kullanıcısına okuma ve yazma izni (rw-) tanımlandı. setfacl komutu kullanılarak yapılan bu işlem, Veli’nin dosya üzerinde hem okuma hem de yazma işlemleri yapabilmesini sağladı. getfacl komutuyla yapılan kontrol sonucu, izinlerin başarıyla uygulandığı görüldü.

Sonrasında, Veli kullanıcısı dosyayı açıp içeriğini okuyarak doğruladı ve yeni bir satır ekleyerek yazma işlemini gerçekleştirdi. Bu işlemde herhangi bir izin sorunu yaşanmadı, çünkü ACL ile Veli’ye yazma izni atanmıştı. Sonuç olarak, Veli kullanıcısına verilen okuma ve yazma yetkisinin doğru şekilde çalıştığı test edilip onaylandı.

Buraya kadar, ayse kullanıcısı, fatma ve veli kullanıcılarına /home/ayse/acl_ornegi/dosya1.txt dosyasına erişim hakkı verdi. Fatma, yalnızca okuma iznine sahip, ancak veli hem okuyabiliyor hem de yazabiliyor. Şimdi bu süreçte varsayılan izinlerle yeni dosya oluşturma örneklerine geçeceğiz.

Varsayılan ACL, bir dizine eklenen tüm yeni dosyaların belirli izinlerle oluşturulmasını sağlar. Varsayılan ACL, bir dizine eklenen her yeni dosyanın belirtilen izinlerle otomatik olarak oluşturulmasını sağlar. Bu, sürekli manuel izin belirleme ihtiyacını ortadan kaldırır.

[ayse@instance-20241019-1038 ~]$ setfacl -m d:u:fatma:r /home/ayse/acl_ornegi

[ayse@instance-20241019-1038 ~]$ setfacl -m d:u:veli:rw /home/ayse/acl_ornegi

[ayse@instance-20241019-1038 ~]$ getfacl /home/ayse/acl_ornegi

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse/acl_ornegi

# owner: ayse

# group: ayse

user::rwx

group::r-x

other::r-x

default:user::rwx

default:user:fatma:r–

default:user:veli:rw-

default:group::r-x

default:mask::rwx

default:other::r-x

[ayse@instance-20241019-1038 ~]$

 

Bu komutlarla /home/ayse/acl_ornegi dizini için varsayılan ACL (Access Control List) ayarları yapılandırıldı. İlk komut ile Fatma kullanıcısına bu dizinde oluşturulacak tüm yeni dosyalar için okuma izni (r–), ikinci komut ile Veli kullanıcısına okuma ve yazma izni (rw-) tanımlandı. getfacl komutu ile bu ayarların doğruluğu kontrol edildi. Çıktıya göre, Fatma’nın yalnızca okuma iznine sahip olduğu, Veli’nin ise hem okuma hem yazma iznine sahip olduğu görülüyor. Ayrıca, dizindeki diğer kullanıcıların ve grupların varsayılan olarak sadece okuma izni bulunmakta. Bu yapılandırma, dizine eklenen tüm yeni dosyaların bu varsayılan izinlerle otomatik olarak oluşturulmasını sağlar ve her yeni dosya için tekrar izin belirlemeye gerek kalmaz.

Varsayılan ACL’nin etkisini görmek için dizine yeni bir dosya ekleyelim.

[ayse@instance-20241019-1038 ~]$ touch /home/ayse/acl_ornegi/dosya2.txt

[ayse@instance-20241019-1038 ~]$ getfacl /home/ayse/acl_ornegi/dosya2.txt

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse/acl_ornegi/dosya2.txt

# owner: ayse

# group: ayse

user::rw-

user:fatma:r–

user:veli:rw-

group::r-x                      #effective:r–

mask::rw-

other::r–

[ayse@instance-20241019-1038 ~]$

 

Yaptığımız değişikliği kontrol edelim.

 

[ayse@instance-20241019-1038 ~]$ su – fatma

Password:

Last login: Sun Nov 17 17:29:33 UTC 2024 on pts/0

[fatma@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya2.txt

[fatma@instance-20241019-1038 ~]$ echo “Fatma yazmaya çalışıyor.” >> /home/ayse/acl_ornegi/dosya2.txt

-bash: /home/ayse/acl_ornegi/dosya2.txt: Permission denied

[fatma@instance-20241019-1038 ~]$

[fatma@instance-20241019-1038 ~]$ exit

logout

[ayse@instance-20241019-1038 ~]$ su – veli

Password:

Last login: Sun Nov 17 17:31:51 UTC 2024 on pts/0

[veli@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya2.txt

[veli@instance-20241019-1038 ~]$ echo “Veli yazabiliyor.” >> /home/ayse/acl_ornegi/dosya2.txt

[veli@instance-20241019-1038 ~]$

[veli@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya2.txt

Veli yazabiliyor.

[veli@instance-20241019-1038 ~]$

 

Yukardaki komut çıktılarında, Fatma ve Veli kullanıcılarının, /home/ayse/acl_ornegi/dosya2.txt dosyasına erişimlerini test ettik. Fatma, dosyayı başarıyla okuyabildi ancak yazma iznine sahip olmadığı için dosyaya içerik eklemeye çalıştığında “Permission denied” hatası aldı. Bu, daha önce Fatma’ya yalnızca okuma izni verilmiş olmasından kaynaklanıyor. Veli ise dosyayı hem okuyabildi hem de başarıyla yazabildi. Bu test, Fatma ve Veli için tanımlanan ACL izinlerinin doğru şekilde çalıştığını, yani Fatma’nın sadece okuma izni, Veli’nin ise hem okuma hem de yazma izni olduğunu gösterdi.

 

Getfacl komutunu çok kullandık. getfacl komutu, bir dosya veya dizin üzerindeki mevcut ACL (Access Control List) izinlerini detaylı bir şekilde görüntülemek için kullanılır. Temel dosya izinlerinin ötesine geçerek, dosya veya dizine atanmış tüm özel izinleri gösterir.

 

[ayse@instance-20241019-1038 ~]$ whoami

ayse

[ayse@instance-20241019-1038 ~]$ ls -la

total 12

drwx–x—+ 3 ayse ayse  80 Nov 17 16:58 .

drwxr-xr-x. 9 root root  95 Nov 17 16:33 ..

-rw-r–r–. 1 ayse ayse  18 Jan 23  2023 .bash_logout

-rw-r–r–. 1 ayse ayse 141 Jan 23  2023 .bash_profile

-rw-r–r–. 1 ayse ayse 492 Jan 23  2023 .bashrc

drwxr-xr-x+ 2 ayse ayse  42 Nov 17 17:42 acl_ornegi

[ayse@instance-20241019-1038 ~]$

 

ls -la komut çıktısında, “+” işaretine dikkat edin. Bu dizinde ACL’in olduğunu gösterir.

 

setfacl -b komutu, bir dosya veya dizine atanmış tüm ACL girişlerini temizler ve dosya veya dizin yalnızca temel Linux dosya izinleriyle yönetilir hale gelir. Bu komut, ACL’yi tamamen devre dışı bırakmak istediğinizde kullanışlıdır.

 

[ayse@instance-20241019-1038 ~]$ ls -la

total 12

drwx–x—+ 3 ayse ayse  80 Nov 17 16:58 .

drwxr-xr-x. 9 root root  95 Nov 17 16:33 ..

-rw-r–r–. 1 ayse ayse  18 Jan 23  2023 .bash_logout

-rw-r–r–. 1 ayse ayse 141 Jan 23  2023 .bash_profile

-rw-r–r–. 1 ayse ayse 492 Jan 23  2023 .bashrc

drwxr-xr-x+ 2 ayse ayse  42 Nov 17 17:42 acl_ornegi

[ayse@instance-20241019-1038 ~]$ cd acl_ornegi/

[ayse@instance-20241019-1038 acl_ornegi]$ ls -la

total 8

drwxr-xr-x+ 2 ayse ayse 42 Nov 17 17:42 .

drwx–x—+ 3 ayse ayse 80 Nov 17 16:58 ..

-rw-rw-r–+ 1 ayse ayse 71 Nov 17 17:32 dosya1.txt

-rw-rw-r–+ 1 ayse ayse 18 Nov 17 17:45 dosya2.txt

[ayse@instance-20241019-1038 acl_ornegi]$ getfacl /home/ayse/acl_ornegi/dosya1.txt

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse/acl_ornegi/dosya1.txt

# owner: ayse

# group: ayse

user::rw-

user:fatma:r–

user:veli:rw-

group::r–

mask::rw-

other::r–

 

[ayse@instance-20241019-1038 acl_ornegi]$

 

[ayse@instance-20241019-1038 acl_ornegi]$ setfacl -b /home/ayse/acl_ornegi/dosya1.txt

[ayse@instance-20241019-1038 acl_ornegi]$ ls -la

total 8

drwxr-xr-x+ 2 ayse ayse 42 Nov 17 17:42 .

drwx–x—+ 3 ayse ayse 80 Nov 17 16:58 ..

-rw-r–r–. 1 ayse ayse 71 Nov 17 17:32 dosya1.txt

-rw-rw-r–+ 1 ayse ayse 18 Nov 17 17:45 dosya2.txt

[ayse@instance-20241019-1038 acl_ornegi]$ getfacl /home/ayse/acl_ornegi/dosya1.txt

getfacl: Removing leading ‘/’ from absolute path names

# file: home/ayse/acl_ornegi/dosya1.txt

# owner: ayse

# group: ayse

user::rw-

group::r–

other::r–

 

[ayse@instance-20241019-1038 acl_ornegi]$

 

Yukardaki adımlarda, /home/ayse/acl_ornegi/dosya1.txt dosyasına atanmış ACL izinleri önce getfacl komutuyla kontrol edilmiş ve Fatma’nın yalnızca okuma, Veli’nin ise okuma ve yazma iznine sahip olduğu görülmüştür. Daha sonra setfacl -b komutuyla dosyaya atanmış tüm ACL girişleri temizlenmiştir. ACL’nin temizlenmesinin ardından ls -la komutu kullanılarak dosyanın izinlerinde artık ACL’ye işaret eden + sembolünün kaldırıldığı fark edilmiştir. getfacl komutu tekrar çalıştırıldığında ise dosyanın yalnızca temel Linux izinleriyle yönetildiği ve Fatma ile Veli’ye atanan özel izinlerin artık geçerli olmadığı görülmüştür. Bu işlem, ACL’nin temizlenmesinin dosya erişim izinlerini yalnızca varsayılan Linux izinleriyle sınırlı hale getirdiğini göstermiştir.

 

[ayse@instance-20241019-1038 acl_ornegi]$ su – fatma

Password:

Last login: Sun Nov 17 17:44:09 UTC 2024 on pts/0

[fatma@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya1.txt

ayse, fatma’ya okuma hakkı verdi.

veli olarak dosyaya ekleme yaptım.

[fatma@instance-20241019-1038 ~]$

 

Fatma dosyayı okuyabilir, çünkü grup izni veya “diğer” izni okuma yetkisi vermektedir.

 

[ayse@instance-20241019-1038 acl_ornegi]$ su – veli

Password:

Last login: Sun Nov 17 17:44:59 UTC 2024 on pts/0

[veli@instance-20241019-1038 ~]$ cat /home/ayse/acl_ornegi/dosya1.txt

ayse, fatma’ya okuma hakkı verdi.

veli olarak dosyaya ekleme yaptım.

[veli@instance-20241019-1038 ~]$ echo “Veli yazmaya çalışıyor.” >> /home/ayse/acl_ornegi/dosya1.txt

-bash: /home/ayse/acl_ornegi/dosya1.txt: Permission denied

[veli@instance-20241019-1038 ~]$

[veli@instance-20241019-1038 ~]$

 

Veli de dosyayı okuyabilir, çünkü diğer kullanıcılar için okuma izni vardır.

Veli de yazmaya çalıştığında “Permission denied” hatası alacaktır, çünkü ACL kaldırılmış ve temel izinler yazmaya izin vermemektedir

 

Bu yazıda ACL’nin nasıl çalıştığını adım adım öğrendik. ACL, Linux’ta standart izinlerin sınırlarını aşmamızı sağlar ve belirli kullanıcılar veya gruplar için detaylı erişim kontrolü sunar. Özellikle çok kullanıcılı sistemlerde, hassas dosya ve dizinlerde erişim kontrolü sağlamak için etkili bir yöntemdir.

ACL, günlük hayatta, paylaşılan dosyalarda veya proje yönetiminde kullanıcı ve grup bazlı detaylı izin kontrolü için vazgeçilmez bir araçtır.

 

Sarav Asiye Yiğit – 17 Kasım 2024