Ada banyak tantangan dalam mengelola Linux di lingkungan bisnis modern, diantaranya bahwa kita harus bisa mengelola siapa yang memiliki akses ke suatu informasi atau biasa yang disebut Access Control List. Untuk melakukan hal itu, dapat menggunakan basic linux filesystem permissions.
Review Basic Linux Permissions
Ada 3 jenis permissions di Linux filesystem, berikut penjelasan sederhananya:
- User atau user owner
- Group atau owner group
- Other atau orang lain selain diatas
Dari ketiga jenis permissions diatas, masing-masing dapat diberikan 3 jenis akses yaitu:
- Read
- Write
- e X ecute
Sebagai contoh terdapat direktori berisi file dari departemen development dengan permissions sebagai berikut:
drwxrwxr-x 2 development development 6 Jan 8 15:13
Dari contoh diatas, user development (user pemilik) dapat membaca dan menulis ke direktori. Anggota dari group development (atau owner group) juga dapat membaca dan menulis direktori, sedangkan orang lain atau other tidak bisa menulis. Sebagai catatan, contoh diatas mengizinkan other dapat membaca atau melihat isi direktori.
Linux Access Control List (ACL)
Pada situasi tertentu, basic permissions dapat menjadi rumit karena tiap file dan direktori hanya dapat memiliki satu user dan satu group owner pada satu waktu. Jenis situasi ini dapat diatasi oleh Linux Access Control List (ACLs).
ACL memungkinkan untuk menerapkan sekumpulan izin yang lebih spesifik ke file atau direktori tanpa mengubah ownership dan permissions.
Mengatur ACL
Bagian ini membahas penggunaan Access Control List atau ACL di Linux. Hal ini memungkinkan waktu yang lebih mudah untuk menyiapkan izin untuk tugas-tugas otomatis seperti menerapkan aplikasi web.
Pastikan ACL telah terinstal, jika belum jalankan perintah sudo apt install acl
.
Dalam kasus ini akan menunjukkan pengaturan ACL pada direktori. permissions ACL ini dapat diwarisi oleh direktori induk (parent directories). Mengatur ACL default untuk suatu lokasi sangat efektif, karena mengabaikan kebutuhan untuk selalu mengatur ulang permissions user/group setelah operasi file apa pun (misalnya membuat file baru).
Melihat ACL
Untuk dapat melihat ACL saat ini di direktori tertentu dapat menggunakan perintah getfacl
:
# getfacl /var/www
Memasang ACL
Syntax untuk menyetel ACL terlihat seperti ini:
setfacl [option] [action/specification] file
Mengatur ACL untuk user dan direktori tertentu:
# setfacl -R -m u:johndoe:rwx /var/www
Keterangan syntax diatas:
-
setfacl
: Set ACL -
-R
: Rekursif ke dalam file dan direktori -
-m
: Modifying ACL’s (-x untuk removing) -
u:johndoe:rwx
: User johndoe akan mendapatkan permissionsrwx
-
/var/www
: Memberikan permissions ke direktori/var/www
Mengatur ACL untuk group pada direktori tertentu:
# setfacl -R -m g:www-data:rwx /var/www
Keterangan syntax diatas:
-
g:www-data:rwx
: Anggota groupwww-data
mendapatkan permissionsrwx
Mengahapus ACL
# setfacl -x g:www-data /var/www
Keterangan syntax diatas:
-
-x
: Hapus ACL’s untukg:www-data
di/var/www
Contoh Kasus
Untuk lebih memahami, dibawah ini merupakan contoh kasus dalam menerapkan aplikasi web. Terdapat 2 user dengan beda permissions. Baca juga bagaimana konfigurasi awal server untuk deploy aplikasi web disini.
Buat User
Buat user pertama dengan nama jane dan tambahkan ke group sudo agar dapat melakukan perintah sudo
.
# adduser jane
# usermod -a -G sudo jane
User kedua beri nama bob
, bob
merupakan user yang dapat melakukan deploy website dan merupakan anggota dari group www-data
.
# adduser bob
# usermod -a -G www-data bob
Untuk memastikan file di root web merupakan grup dari www-data
, jalankan perintah dibawah. Ini tidak diperlukan untuk ACL permissions, namun tetap dilakukan untuk menjaga konsistensi.
# chown -R www-data:www-data /var/www
Penggunaan ACL
User akan diberikan permission untuk read/write/execute
file dan direktori menggunakan ACL sebagai pengganti dari basic Linux permissions.
Lihat set ACL secara default, ini terpisah dari basic permission user/group.
# getfacl /var/www
Selanjutnya berikan permission user jane untuk mengubah file web di direktori /var/www
. Secara teknis jane tidak membutuhkan ini, karena dia bisa menggunakan perintah sudo
.
# setfacl -R -m u:jane:rwx /var/www
Di atas menetapkan ACL untuk file atau direktori yang ada, di sini akan secara rekursif (-R) menetapkan default (-d flag) untuk file atau direktori mendatang.
# setfacl -Rd -m u:jane:rwx /var/www
Cek perintah diatas telah berhasil ditambahkan
# getfacl /var/www
Dua perintah sebelumnya dapat digabungkan untuk mengatur default dan izin:
setfacl -R -m u:jane:rwx,d:u:jane:rwx /var/www
Selanjutnya memberikan permission berbasis grup melalui ACL ke file web. Cara ini lebih efisien untuk user memungkinkan mengedit file web, terlepas dari siapa pemilik file tersebut selama menjadi anggota group.
# setfacl -R -m g:www-data:rwx /var/www
Atau menggunakan default (-d) untuk kedepannya
# setfacl -Rd -m g:www-data:rwx /var/www
Jika sudah, sekarang TIAP USER yang menjadi anggota dari grup www-data
dapat mengedit file di direktori /var/www
. Untuk memastikan cek ACL dengan menjalankan perintah berikut:
# getfacl /var/www
That’s it! Kita bisa juga membaca artikel dari website Redhat mengenai ACL disini.
Credits:
- icon: designed by Smashicons from Flaticon
Top comments (0)