Cara Mengatur Daftar Kontrol Akses (ACL) dan Kuota Disk untuk Pengguna dan Grup


Daftar Kontrol Akses (juga dikenal sebagai ACL) adalah fitur kernel Linux yang memungkinkan untuk menentukan hak akses yang lebih terperinci untuk file dan direktori dibandingkan yang ditentukan oleh izin ugo/rwx biasa.

Misalnya, izin standar ugo/rwx tidak mengizinkan pengaturan izin yang berbeda untuk pengguna individu atau grup yang berbeda. Dengan ACL hal ini relatif mudah dilakukan, seperti yang akan kita lihat di artikel ini.

Memeriksa Kompatibilitas Sistem File dengan ACL

Untuk memastikan bahwa sistem file Anda saat ini mendukung ACL, Anda harus memeriksa apakah sistem file tersebut telah dipasang menggunakan opsi acl. Untuk melakukannya, kita akan menggunakan tune2fs untuk sistem file ext2/3/4 seperti yang ditunjukkan di bawah ini. Ganti /dev/sda1 dengan perangkat atau sistem file yang ingin Anda periksa:

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

Catatan: Dengan XFS, Daftar Kontrol Akses langsung didukung.

Dalam sistem file ext4 berikut, kita dapat melihat bahwa ACL telah diaktifkan untuk /dev/xvda2:

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

Jika perintah di atas tidak menunjukkan bahwa sistem file telah dipasang dengan dukungan untuk ACL, kemungkinan besar hal ini disebabkan oleh opsi noacl yang ada di /etc/fstab.

Jika demikian, hapus, lepas sistem file, lalu pasang kembali, atau cukup reboot sistem Anda setelah menyimpan perubahan ke /etc/fstab.

Memperkenalkan ACL di Linux

Untuk mengilustrasikan cara kerja ACL, kami akan menggunakan grup bernama pengembang dan menambahkan pengguna walterwhite dan saulgoodman (ya, saya adalah penggemar Breaking Bad! ) untuk itu.:

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

Sebelum melanjutkan, mari verifikasi bahwa kedua pengguna telah ditambahkan ke grup pengembang:

id walterwhite
id saulgoodman

Sekarang mari kita buat direktori bernama test di /mnt, dan sebuah file bernama acl.txt di dalamnya (/mnt/test/acl .txt).

Kemudian kita akan menetapkan pemilik grup ke pengembang dan mengubah izin default ugo/rwx secara rekursif menjadi 770 (sehingga memberikan izin baca, tulis, dan eksekusi izin yang diberikan kepada pemilik dan pemilik grup file):

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

Seperti yang diharapkan, Anda dapat menulis ke /mnt/test/acl.txt sebagai walterwhite atau saulgoodman:

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

Sejauh ini bagus. Namun, kami akan segera melihat masalah ketika kami perlu memberikan akses tulis ke /mnt/test/acl.txt untuk pengguna lain yang tidak termasuk dalam grup pengembang.

Izin standar ugo/rwx akan mengharuskan pengguna baru ditambahkan ke grup pengembang, namun hal ini akan memberinya izin yang sama atas semua objek yang dimiliki oleh grup. Di sinilah tepatnya ACL berguna.

Setting ACL di Linux

Ada dua jenis ACL: ACL akses (yang diterapkan pada file atau direktori), dan ACL default (opsional), yang hanya dapat diterapkan pada direktori .

Jika file di dalam direktori yang ACL default telah disetel tidak memiliki ACL sendiri, maka file tersebut mewarisi ACL default dari direktori induknya.

Mari berikan akses baca dan tulis ke /mnt/test/acl.txt kepada pengguna gacanepa. Sebelum melakukan itu, mari kita lihat pengaturan ACL saat ini di direktori tersebut dengan:

getfacl /mnt/test/acl.txt

Kemudian ubah ACL pada file tersebut, gunakan u: diikuti dengan nama pengguna dan :rw untuk menunjukkan izin baca/tulis:

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

Dan jalankan getfacl pada file itu lagi untuk membandingkan. Gambar berikut menunjukkan "Sebelum" dan "Sesudah":

getfacl /mnt/test/acl.txt

Selanjutnya, kita perlu memberikan izin eksekusi kepada orang lain di direktori /mnt/test:


chmod +x /mnt/test

Perlu diingat bahwa untuk mengakses konten direktori, pengguna biasa perlu menjalankan izin pada direktori tersebut.

Pengguna gacanepa sekarang seharusnya dapat menulis ke file tersebut. Beralih ke akun pengguna itu dan jalankan perintah berikut untuk mengonfirmasi:

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

Untuk menyetel ACL default ke direktori (yang isinya akan diwarisi kecuali ditimpa sebaliknya), tambahkan d: sebelum aturan dan tentukan direktori, bukan nama file:

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

ACL di atas akan memungkinkan pengguna yang bukan anggota grup pemilik untuk memiliki akses baca ke konten direktori /mnt/test di masa mendatang. Perhatikan perbedaan keluaran getfacl /mnt/test sebelum dan sesudah perubahan:

Untuk menghapus ACL tertentu, ganti -m pada perintah di atas dengan -x. Misalnya,

setfacl -x d:o /mnt/test

Alternatifnya, Anda juga dapat menggunakan opsi -b untuk menghapus SEMUA ACL dalam satu langkah:

setfacl -b /mnt/test

Untuk informasi lebih lanjut dan contoh penggunaan ACL, lihat bab 10, bagian 2, Panduan Keamanan openSUSE (juga tersedia untuk diunduh tanpa biaya dalam format PDF ).

Tetapkan Kuota Disk Linux pada Pengguna dan Sistem File

Ruang penyimpanan adalah sumber daya lain yang harus digunakan dan dipantau secara hati-hati. Untuk melakukan itu, kuota dapat diatur berdasarkan sistem file, baik untuk pengguna individu atau grup.

Oleh karena itu, terdapat batasan pada penggunaan disk yang diperbolehkan untuk pengguna tertentu atau kelompok tertentu, dan Anda dapat yakin bahwa disk Anda tidak akan terisi penuh oleh pengguna yang ceroboh (atau tidak sengaja).

Hal pertama yang harus Anda lakukan untuk mengaktifkan kuota pada sistem file adalah memasangnya dengan opsi usrquota atau grpquota (masing-masing untuk kuota pengguna dan grup) di /etc/fstab.

Misalnya, aktifkan kuota berbasis pengguna di /dev/vg00/vol_backups dan kuota berbasis grup di /dev/vg00/vol_projects.

Perhatikan bahwa UUID digunakan untuk mengidentifikasi setiap sistem file.

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

Lepas dan pasang kembali kedua sistem file:

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

Kemudian periksa apakah opsi usrquota dan grpquota ada di output mount (lihat yang disorot di bawah):

mount | grep vg00

Terakhir, jalankan perintah berikut untuk menginisialisasi dan mengaktifkan kuota:

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

Oleh karena itu, sekarang mari kita tetapkan kuota ke nama pengguna dan grup yang kami sebutkan sebelumnya. Anda nanti dapat menonaktifkan kuota dengan quotaoff.

Mengatur Kuota Disk Linux

Mari kita mulai dengan menyetel ACL di /home/backups untuk pengguna gacanepa, yang akan memberinya izin membaca, menulis, dan mengeksekusi pada direktori tersebut:

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

Lalu dengan,

edquota -u gacanepa

Kita akan membuat blok lunak batas=900 dan batas=1000 keras (1024 byte/blok * 1000 blok=1024000 byte=1 MB ) penggunaan ruang disk.

Kami juga dapat menetapkan batas 20 dan 25 sebagai batas lunak dan batas keras pada jumlah file yang dapat dibuat oleh pengguna ini.

Perintah di atas akan meluncurkan editor teks ($EDITOR) dengan file sementara dimana kita dapat mengatur batasan yang disebutkan sebelumnya:

Setelan ini akan menyebabkan peringatan ditampilkan kepada pengguna gacanepa ketika ia telah mencapai batas 900 blok atau 20-inode untuk batas default masa tenggang 7 hari.

Jika situasi kelebihan kuota belum diatasi pada saat itu (misalnya, dengan menghapus file), batas lunak akan menjadi batas keras dan pengguna ini akan dilarang menggunakan lebih banyak ruang penyimpanan atau membuat lebih banyak file.

Untuk mengujinya, mari kita minta pengguna gacanepa mencoba membuat file 2 MB kosong bernama test1 di dalam /home/backups:

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

Seperti yang Anda lihat, operasi penulisan file gagal karena kuota disk telah terlampaui. Karena hanya 1000 KB pertama yang ditulis ke disk, kemungkinan besar hasilnya adalah file yang rusak.

Demikian pula, Anda dapat membuat ACL untuk grup pengembang untuk memberikan anggota grup tersebut akses rwx ke /home/projects:

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

Dan tetapkan batas kuota dengan:

edquota -g developers

Sama seperti yang kami lakukan dengan pengguna gacanepa sebelumnya.

Masa tenggang dapat ditentukan untuk sejumlah detik, menit, jam, hari, minggu, atau bulan dengan mengeksekusi.

edquota -t

dan memperbarui nilai pada Masa tenggang blok dan masa tenggang Inode.

Berbeda dengan penggunaan blok atau inode (yang ditetapkan berdasarkan pengguna atau grup), masa tenggang ditetapkan untuk seluruh sistem.

Untuk melaporkan kuota, Anda dapat menggunakan kuota -u [user] atau quota -g [group] untuk daftar cepat atau repquota -v [/path/to /filesystem] untuk laporan yang lebih detail (bertele-tele) dan berformat baik.

Tentu saja, Anda ingin mengganti [user], [group], dan [/path/to/filesystem] dengan pengguna tertentu/nama grup dan sistem file yang ingin Anda periksa.

Ringkasan

Pada artikel ini kami telah menjelaskan cara mengatur Daftar Kontrol Akses dan kuota disk untuk pengguna dan grup. Dengan menggunakan keduanya, Anda akan dapat mengelola izin dan penggunaan disk dengan lebih efektif.

Jika Anda ingin mempelajari lebih lanjut tentang kuota, Anda dapat merujuk pada Quota Mini-HowTo di Proyek Dokumentasi Linux.

Tentu saja, Anda juga dapat mengandalkan kami untuk menjawab pertanyaan. Kirimkan saja menggunakan formulir komentar di bawah dan kami akan dengan senang hati melihatnya.