Linux'ta Access Control List (ACL) Kullanımı ve Örnekleri
ACL Nedir?
ACL, dosya veya dizin için spesifik kullanıcı veya grupların dosya veya dizine erişim seviyelerini belirlemelerine olanak tanıyan bir ek izin sistemi olarak tanımlanabilir. Bu, dosya veya dizine herhangi bir standart kullanıcı, grup veya diğer kullanıcı izni yerine, spesifik kullanıcılar veya gruplar için özelleştirilmiş izinler sağlar.
ACL Nasıl Çalışır?
ACL, normal dosya izinlerinden ayrı olarak, dosyaların veya dizinlerin bir kullanıcı veya grup tarafından nasıl erişilebileceğini kontrol eder. Standart Unix dosya izinleri için, dosya sahibi, grup ve diğerleri için sırasıyla "rwx" şeklinde belirtilen üç izin düzeyi vardır. Ancak ACL kullanarak, spesifik kullanıcılar veya gruplar için ayrı ayrı izinler belirleyebilirsiniz.
Bir örnek vermek gerekirse, /home/kullanici/dosya adlı bir dosyaya sahibiz ve normalde bu dosyayı yalnızca sahibi okuyabilir. Ancak, başka bir kullanıcının bu dosyaya erişmesini sağlamak isteyebilirsiniz. Bu durumda, ACL kullanarak diğer kullanıcılara erişim izni verebilirsiniz.
ACL Nasıl Kullanılır?
ACL'leri kullanmak için, öncelikle dosya sisteminin ACL'leri desteklemesi gereklidir. Genellikle modern Linux dağıtımlarında, dosya sistemleri (ext4, XFS vb.) ACL'leri destekler. Dosya sisteminizin ACL'leri desteklediğinden emin olmak için, terminalde "mount" komutunu kullanarak dosya sisteminizi kontrol edebilirsiniz.
ACL'leri eklemek için "setfacl" komutunu kullanırız. Bu komut, dosya veya dizin için bir kullanıcının veya grubun izinlerini ayarlamamıza olanak tanır.
setfacl -m u:kullanici:rwx dosya
Bu komut, /home/kullanici/dosya dosyasına "kullanici" adlı bir kullanıcının rwx izinlerini verir. Bu kullanıcının dosyayı okuyabilmesi, yazabilmesi ve değiştirebilmesi için bu izinler gereklidir.
Örneğin, bir dosyaya bir grup ve bir kullanıcı farklı izinlere sahip olabilir. Bunun için öncelikle dosya veya klasörün ACL özellikleri etkinleştirilmelidir. Bunun için tune2fs komutu kullanılabilir.
sudo tune2fs -o acl /dev/sda1
Yukarıdaki komut, /dev/sda1 bölümünde ACL özelliklerini etkinleştirir. Ardından, getfacl komutu kullanarak mevcut ACL'leri görüntüleyebilirsiniz.
getfacl filename
Örneğin, bir dosyanın ACL'lerini ayarlamak için setfacl komutunu kullanabilirsiniz. Aşağıdaki komut, "user1" ve "group1" için farklı izinler atanmış bir dosya oluşturur.
touch file
setfacl -m u:user1:rwx,g:group1:rw-, file
Yukarıdaki komut, "user1" için okuma, yazma ve yürütme izni (-rwx) ve "group1" için okuma ve yazma izni (rw-) belirler. Daha sonra, ACL'lerini kontrol etmek için getfacl komutunu kullanabilirsiniz.
getfacl file
Bu komut, dosyanın ACL'lerini görüntüler.
# file: file
# owner: user
# group: group
user::rw-
user:user1:rwx
group::rw-
group:group1:rw-
mask::rwx
other::r--
Yukarıdaki çıktıda, "user1" ve "group1" için ACL'ler açıkça belirtilirken, diğer kullanıcılara varsayılan izinler atanır. "mask" öğesi, ACL'lerin tümünü kapsayan bir maske olarak işlev görür. Maskenin özellikleri, dosyanın diğer kullanıcılara atanmış olan izinlerine dayanır.
ACL'ler, dosya sahibi veya root kullanıcısı tarafından ayarlanabilir. ACL'leri ayarlamak için "setfacl" komutu kullanılabilir ve "getfacl" komutuyla kontrol edilebilir.
HASAN KAYAPINAR
HAKKIMDA