ACL (Access Control Lists)
Konsep Dasar
Standard UNIX permission (rwx untuk owner/group/others)
memiliki keterbatasan: tidak bisa memberikan izin berbeda kepada
lebih dari satu user atau lebih dari satu
group pada file yang sama.
Access Control List (ACL) mengatasi keterbatasan ini dengan memungkinkan penetapan izin untuk user dan group tertentu secara individual.
Tools ACL
getfacl file.txt # Lihat ACL file
setfacl -m u:alice:rx file.txt # Tambah ACL: user alice mendapat r-x
setfacl -m g:devs:rw file.txt # Tambah ACL: group devs mendapat rw-
setfacl -x u:alice file.txt # Hapus ACL untuk user alice
Output getfacl:
# file: file.txt
# owner: root
# group: root
user::rw-
user:alice:r-x
group::r--
group:devs:rw-
mask::rwx
other::---
Mask
Mask adalah batas maksimum izin yang bisa diberikan
oleh ACL entries selain owner dan others. Jika mask adalah
rw-, maka user alice dengan entry r-x
secara efektif hanya mendapat r-- (karena x terpotong
mask).
setfacl -m m::rx file.txt # Set mask menjadi r-x
Mask otomatis disesuaikan saat ACL diubah. Jika mask terlalu restriktif, ACL entries kehilangan izin yang seharusnya dimiliki.
Default ACL
Default ACL berlaku untuk direktori - file dan subdirektori yang baru dibuat akan mewarisi ACL tersebut.
setfacl -d -m u:alice:rwx /shared/project # Default ACL untuk file baru
setfacl -d -m g:devs:rx /shared/project
Cek default ACL:
getfacl /shared/project
# output: default:user:alice:rwx
# default:group:devs:r-x
Tanpa default ACL, file baru hanya mendapat izin standar umask.
ACL vs Unix Permission
| Aspek | Unix Permission | ACL |
|---|---|---|
| Skalabilitas | 3 entitas (u,g,o) | Multi-user, multi-group |
| Izin spesifik | Tidak bisa | Bisa per user/group |
| Kompleksitas | Sederhana | Lebih kompleks |
| Performa | Sangat cepat | Overhead sedikit lebih besar |
| Tool | chmod, chown | setfacl, getfacl |
ACL tidak menggantikan Unix permission - ACL adalah lapisan tambahan di atasnya. Unix permission tetap berlaku sebagai basis.
Backup dan Restore ACL
Backup ACL dari seluruh direktori:
getfacl -R /shared/project > acl-backup.txt
Restore:
setfacl --restore=acl-backup.txt
Atau untuk satu file:
getfacl file.txt > file.acl
setfacl --set-file=file.acl file.txt
Backup ACL penting saat migrasi data atau recovery disaster - tanpa backup, izin ACL hilang dan harus dikonfigurasi ulang manual.
Kasus Penggunaan
Shared Directory Multi-User
Direktori proyek dengan tiga tim: developer, designer, dan auditor.
mkdir -p /shared/project
# Izin dasar: owner root, group proyek
chown root:project /shared/project
chmod 2770 /shared/project # SGID + owner/group full, others none
# ACL spesifik
setfacl -m u:alice:rwx /shared/project # Developer lead
setfacl -m u:bob:rx /shared/project # Auditor (read-only)
setfacl -m g:design:rwx /shared/project # Tim design full access
setfacl -d -m u:alice:rwx /shared/project # Default ACL
setfacl -d -m g:design:rwx /shared/project
Web Server Multi-Site
Memberi akses terbatas ke konten web tanpa menambahkan user ke group www-data:
setfacl -m u:deployer:rwx /var/www/site1
setfacl -d -m u:deployer:rwx /var/www/site1
Verifikasi dan Troubleshooting
getfacl /shared/project | grep -E "^user:|^group:|^mask:"
# Cek efektifitas izin
getfacl -e file.txt # Tampilkan effective rights (terapkan mask)
ACL adalah fitur powerful yang wajib dipahami administrator Linux yang mengelola lingkungan multi-user. Gunakan secara bijak - terlalu banyak ACL entries menurunkan performa dan menyulitkan audit.