Kullanıcılar ve Gruplar için Erişim Kontrol Listeleri (ACL'ler) ve Disk Kotaları Nasıl Ayarlanır?


Erişim Kontrol Listeleri (ACL'ler olarak da bilinir), dosyalar ve dizinler için normal ugo/rwx izinleriyle belirtilenlerden daha ayrıntılı erişim haklarının tanımlanmasına olanak tanıyan Linux çekirdeğinin bir özelliğidir.

Örneğin, standart ugo/rwx izinleri, farklı bireysel kullanıcılar veya gruplar için farklı izinlerin ayarlanmasına izin vermez. Bu makalede göreceğimiz gibi, ACL'lerle bunu yapmak nispeten kolaydır.

ACL'lerle Dosya Sistemi Uyumluluğunu Kontrol Etme

Dosya sistemlerinizin halihazırda ACL'leri desteklediğinden emin olmak için, bunların acl seçeneğini kullanarak bağlanıp bağlanmadığını kontrol etmelisiniz. Bunu yapmak için ext2/3/4 dosya sistemleri için aşağıda belirtildiği gibi tune2fs'yi kullanacağız. /dev/sda1'i kontrol etmek istediğiniz cihaz veya dosya sistemiyle değiştirin:

tune2fs -l /dev/sda1 | grep "Default mount options:"

Not: XFS ile Erişim Kontrol Listeleri kutudan çıktığı gibi desteklenir.

Aşağıdaki ext4 dosya sisteminde, /dev/xvda2 için ACL'lerin etkinleştirildiğini görebiliriz:

tune2fs -l /dev/xvda2 | grep "Default mount options:"

Yukarıdaki komut, dosya sisteminin ACL desteğiyle bağlandığını göstermiyorsa, bunun nedeni büyük olasılıkla /etc/fstab dosyasında noacl seçeneğinin bulunmasıdır.

Bu durumda, onu kaldırın, dosya sisteminin bağlantısını kesin ve yeniden bağlayın veya değişiklikleri /etc/fstab dosyasına kaydettikten sonra sisteminizi yeniden başlatın.

Linux'ta ACL'lere Giriş

ACL'lerin nasıl çalıştığını göstermek için geliştiriciler adlı bir grup kullanacağız ve walterwhite ve saulgoodman kullanıcılarını ekleyeceğiz (evet, Breaking Bad hayranıyım! ) ona.:

groupadd developers
useradd walterwhite
useradd saulgoodman
usermod -a -G developers walterwhite
usermod -a -G developers saulgoodman

Devam etmeden önce her iki kullanıcının da geliştirici grubuna eklendiğini doğrulayalım:

id walterwhite
id saulgoodman

Şimdi /mnt içinde test adında bir dizin ve içinde acl.txt adında bir dosya (/mnt/test/acl) oluşturalım .txt).

Daha sonra grup sahibini geliştiriciler olarak ayarlayacağız ve varsayılan ugo/rwx izinlerini yinelemeli olarak 770 olarak değiştireceğiz (böylece okuma, yazma ve yürütme izni verilecek) dosyanın hem sahibine hem de grup sahibine verilen izinler):

mkdir /mnt/test
touch /mnt/test/acl.txt
chgrp -R developers /mnt/test
chmod -R 770 /mnt/test

Beklendiği gibi /mnt/test/acl.txt dosyasına walterwhite veya saulgoodman olarak yazabilirsiniz:

su - walterwhite
echo "My name is Walter White" > /mnt/test/acl.txt
exit
su - saulgoodman
echo "My name is Saul Goodman" >> /mnt/test/acl.txt
exit

Şimdiye kadar, çok iyi. Ancak, geliştiriciler grubunda olmayan başka bir kullanıcıya /mnt/test/acl.txt dosyasına yazma erişimi vermemiz gerektiğinde yakında bir sorun göreceğiz.

Standart ugo/rwx izinleri, yeni kullanıcının geliştiriciler grubuna eklenmesini gerektirir ancak bu, ona grubun sahip olduğu tüm nesneler üzerinde aynı izinleri verir. ACL'lerin kullanışlı olduğu yer tam da burasıdır.

Linux'ta ACL'leri ayarlama

İki tür ACL vardır: erişim ACL'leri (bir dosyaya veya dizine uygulanır) ve yalnızca bir dizine uygulanabilen varsayılan (isteğe bağlı) ACL'ler'dir. .

Varsayılan ACL'nin ayarlandığı bir dizindeki dosyalar kendilerine ait bir ACL'ye sahip değilse, üst dizinlerinin varsayılan ACL'sini devralırlar.

gacanepa kullanıcısına /mnt/test/acl.txt dosyasına okuma ve yazma erişimi verelim. Bunu yapmadan önce o dizindeki mevcut ACL ayarlarına bir göz atalım:

getfacl /mnt/test/acl.txt

Ardından dosyadaki ACL'leri değiştirin, okuma/yazma izinlerini belirtmek için u: ve ardından kullanıcı adını ve :rw kullanın:

setfacl -m u:gacanepa:rw /mnt/test/acl.txt

Karşılaştırmak için dosya üzerinde tekrar getfacl komutunu çalıştırın. Aşağıdaki resimde “Önce ” ve “Sonra” gösterilmektedir:

getfacl /mnt/test/acl.txt

Daha sonra, /mnt/test dizininde başkalarına yürütme izinleri vermemiz gerekecek:


chmod +x /mnt/test

Bir dizinin içeriğine erişmek için normal bir kullanıcının o dizinde yürütme izinlerine ihtiyacı olduğunu unutmayın.

gacanepa kullanıcısı artık dosyaya yazabilmelidir. Bu kullanıcı hesabına geçin ve onaylamak için aşağıdaki komutu uygulayın:

echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt

Bir dizine varsayılan bir ACL ayarlamak için (aksi takdirde üzerine yazılmadıkça içeriği devralınır), kuralın önüne d: ekleyin ve dosya adı yerine bir dizin belirtin:

setfacl -m d:o:r /mnt/test
getfacl /mnt/test/

Yukarıdaki ACL, sahip grubunda olmayan kullanıcıların /mnt/test dizininin gelecekteki içeriklerine okuma erişimine sahip olmasına olanak tanıyacaktır. Değişiklikten önce ve sonra getfacl /mnt/test çıktısındaki farka dikkat edin:

Belirli bir ACL'yi kaldırmak için yukarıdaki komutlarda -m öğesini -x ile değiştirin. Örneğin,

setfacl -x d:o /mnt/test

Alternatif olarak, TÜM ACL'leri tek adımda kaldırmak için -b seçeneğini de kullanabilirsiniz:

setfacl -b /mnt/test

ACL'lerin kullanımına ilişkin daha fazla bilgi ve örnekler için lütfen openSUSE Güvenlik Kılavuzunun bölüm 10, bölüm 2'sine bakın (ayrıca PDF formatında ücretsiz olarak indirilebilir) ).

Kullanıcılar ve Dosya Sistemlerinde Linux Disk Kotalarını Ayarlama

Depolama alanı dikkatli kullanılması ve izlenmesi gereken bir diğer kaynaktır. Bunu yapmak için, bireysel kullanıcılar veya gruplar için dosya sistemi bazında kotalar belirlenebilir.

Böylece, belirli bir kullanıcı veya belirli bir grup için izin verilen disk kullanımına bir sınır getirilir ve disklerinizin dikkatsiz (veya kötü niyetli) bir kullanıcı tarafından tamamen doldurulmayacağından emin olabilirsiniz.

Bir dosya sisteminde kotaları etkinleştirmek için yapmanız gereken ilk şey, onu /etc/fstab dosyasındaki usrquota veya grpquota (sırasıyla kullanıcı ve grup kotaları için) seçenekleriyle bağlamaktır.

Örneğin, /dev/vg00/vol_backups'ta kullanıcı tabanlı kotaları ve /dev/vg00/vol_projects'de grup tabanlı kotaları etkinleştirelim.

Her dosya sistemini tanımlamak için UUID'nin kullanıldığını unutmayın.

UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0

Her iki dosya sisteminin bağlantısını kesin ve yeniden bağlayın:

umount /home/projects
umount /home/backups
mount -o remount /home/projects
mount -o remount /home/backups 

Ardından, mount çıktısında usrquota ve grpquota seçeneklerinin mevcut olup olmadığını kontrol edin (aşağıda vurgulananlara bakın):

mount | grep vg00

Son olarak kotaları başlatmak ve etkinleştirmek için aşağıdaki komutları çalıştırın:

quotacheck -avugc
quotaon -vu /home/backups
quotaon -vg /home/projects

Bununla birlikte, şimdi daha önce bahsettiğimiz kullanıcı adına ve gruba kota atayalım. Daha sonra kotaları kotaoff ile devre dışı bırakabilirsiniz.

Linux Disk Kotalarını Ayarlama

gacanepa kullanıcısı için /home/backups dizinine bir ACL ayarlayarak başlayalım; bu, ona o dizinde okuma, yazma ve yürütme izinleri verecektir:

setfacl -m u:gacanepa:rwx /home/backups/

Daha sonra,

edquota -u gacanepa

Yumuşak limit=900 ve zor limit=1000 blokları yapacağız (1024 bayt/blok * 1000 blok=1024000 bayt=1 MB ) disk alanı kullanımı.

Ayrıca bu kullanıcının oluşturabileceği dosya sayısına yumuşak ve sert sınırlar olarak 20 ve 25 gibi bir sınır koyabiliriz.

Yukarıdaki komut, daha önce bahsedilen sınırları ayarlayabileceğimiz geçici bir dosyayla ($EDITOR) metin düzenleyicisini başlatacaktır:

Bu ayarlar, gacanepa kullanıcısı varsayılan olarak 900 blok veya 20 düğüm sınırlarına ulaştığında kullanıcıya bir uyarı gösterilmesine neden olur 7 günlük ödemesiz süre.

Kota aşımı durumu o zamana kadar ortadan kaldırılmazsa (örneğin, dosyalar kaldırılarak), yumuşak sınır kesin sınır haline gelecek ve bu kullanıcının daha fazla depolama alanı kullanması veya daha fazla depolama alanı oluşturması engellenecektir. Dosyalar.

Test etmek için, gacanepa kullanıcısının /home/backups içinde test1 adında boş bir 2 MB dosya oluşturmayı denemesini sağlayalım:

dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
ls -lh /home/backups/test1

Gördüğünüz gibi disk kotası aşıldığından dolayı yazma işlemi dosyası başarısız oluyor. Yalnızca ilk 1000 KB diske yazıldığından, bu durumda sonuç büyük olasılıkla bozuk bir dosya olacaktır.

Benzer şekilde, geliştirici grupları için, söz konusu grubun üyelerine /home/projects dosyasına rwx erişimi vermek amacıyla bir ACL oluşturabilirsiniz:

setfacl -m g:developers:rwx /home/projects/

Ve kota sınırlarını şununla ayarlayın:

edquota -g developers

Tıpkı daha önce gacanepa kullanıcısıyla yaptığımız gibi.

Yetkisiz kullanım süresi, yürütülerek herhangi bir sayıda saniye, dakika, saat, gün, hafta veya ay için belirtilebilir.

edquota -t

ve Yetkisiz süreyi engelle ve Inode ek süreyi engelle altındaki değerleri güncelleme.

Blok veya inode kullanımının aksine (kullanıcı veya grup bazında ayarlanır), yetkisiz kullanım süresi sistem genelinde ayarlanır.

Kotaları raporlamak için, hızlı liste için quota -u [user] veya quota -g [group] veya repquota -v [/path/to] kullanabilirsiniz. Daha ayrıntılı (ayrıntılı) ve güzel biçimlendirilmiş bir rapor için /filesystem].

Elbette [user], [group] ve [/path/to/filesystem]'ı belirli bir kullanıcı/ile değiştirmek isteyeceksiniz. kontrol etmek istediğiniz grup adlarını ve dosya sistemini seçin.

Özet

Bu makalede, kullanıcılar ve gruplar için Erişim Kontrol Listelerinin ve disk kotalarının nasıl ayarlanacağını açıkladık. Her ikisini de kullanarak izinleri ve disk kullanımını daha etkili bir şekilde yönetebileceksiniz.

Kotalar hakkında daha fazla bilgi edinmek isterseniz Linux Belgelendirme Projesi'ndeki Kota Mini-Nasıl Yapılır'a başvurabilirsiniz.

Söylemeye gerek yok, soruları yanıtlamak için de bize güvenebilirsiniz. Aşağıdaki yorum formunu kullanarak bunları göndermeniz yeterlidir; bir göz atmaktan memnuniyet duyarız.