DEV Community

Cover image for Cara Mudah Mengatur Access Control List (ACL) di Linux
Aditya Chamim Pratama
Aditya Chamim Pratama

Posted on

Cara Mudah Mengatur Access Control List (ACL) di Linux

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Memasang ACL

Syntax untuk menyetel ACL terlihat seperti ini:

setfacl [option] [action/specification] file
Enter fullscreen mode Exit fullscreen mode

Mengatur ACL untuk user dan direktori tertentu:

# setfacl -R -m u:johndoe:rwx /var/www
Enter fullscreen mode Exit fullscreen mode

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 permissions rwx
  • /var/www : Memberikan permissions ke direktori /var/www

Mengatur ACL untuk group pada direktori tertentu:

# setfacl -R -m g:www-data:rwx /var/www
Enter fullscreen mode Exit fullscreen mode

Keterangan syntax diatas:

  • g:www-data:rwx : Anggota group www-data mendapatkan permissions rwx

Mengahapus ACL

# setfacl -x g:www-data /var/www
Enter fullscreen mode Exit fullscreen mode

Keterangan syntax diatas:

  • -x : Hapus ACL’s untuk g: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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Cek perintah diatas telah berhasil ditambahkan

# getfacl /var/www
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Atau menggunakan default (-d) untuk kedepannya

# setfacl -Rd -m g:www-data:rwx /var/www
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

That’s it! Kita bisa juga membaca artikel dari website Redhat mengenai ACL disini.


Credits:

Top comments (0)