Mengapa kita membutuhkan ACL ?
Setiap file pada sistem file UNIX apa pun akan memiliki pemilik/grup dan serangkaian izin. Bayangkan sebuah kasus ketika banyak pengguna membutuhkan akses ke file yang sama dan pengguna berasal dari grup yang berbeda. Daftar kontrol akses file (FACL) atau hanya ACL adalah daftar pengguna/grup tambahan dan izin mereka ke file.
Cara mengetahui jika file memiliki ACL yang dilampirkan
Sangat mudah untuk mengetahui kapan file memiliki ACL terlampir. ls -l perintah akan menghasilkan output seperti yang ditunjukkan di bawah ini.
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
Perhatikan + tanda tangani di akhir izin. Ini mengonfirmasi bahwa file tersebut memiliki ACL yang dilampirkan.
Melihat ACL
Untuk menampilkan detail informasi ACL dari sebuah file, gunakan getfacl memerintah.
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
Perhatikan 3 pengguna: . yang berbeda garis. Baris pertama mencantumkan izin file standar dari pemilik file. 2 izin pengguna lainnya adalah izin individu untuk pengguna john dan sam. Bidang topeng di sini hanya berlaku untuk izin tambahan yang telah kami berikan kepada pengguna dan grup. Jika mask diatur ke rwx, izin baca, tulis, dan eksekusi akan diberikan kepada pengguna/grup tambahan. Jika mask disetel ke r-x, izin menulis tidak akan diberikan kepada pengguna/grup tambahan. Secara umum, JANGAN atur mask ke apa pun selain rwx. Nilai mask tidak memengaruhi izin pengguna/grup/lain-lain UNIX standar.
File tanpa ACL
Jika Anda menjalankan perintah getfacl pada file tanpa ACL, baris "user:" tambahan dan baris "mask" tidak akan ditampilkan dan izin file standar akan ditampilkan.
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
Membuat dan Mengelola FACL
setfacl perintah digunakan untuk mengatur ACL pada file yang diberikan. Untuk memberikan akses rw ke pengguna john pada file /tmp/test :
# setfacl -m u:john:rw /tmp/test
Opsi -m memberi tahu setfacl untuk memodifikasi ACL pada file yang disebutkan dalam baris perintah. Alih-alih pengguna john, kami dapat memiliki grup untuk memiliki izin khusus pada file:
# setfacl -m g:accounts:rw /tmp/test
FACL untuk beberapa pengguna dan grup juga dapat diatur dengan satu perintah :
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
FACL default pada direktori
ACL default hanya dibuat di direktori. Saat Anda menyetel ACL default pada direktori, file apa pun yang dibuat dalam direktori tersebut juga akan memiliki FACL default yang ditetapkan secara otomatis.
Untuk membuat FACL default pada direktori :
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
Sekarang buat file baru di direktori akun dan daftarkan FACL pada file tersebut :
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
Menghapus FACL
Untuk menghapus FACL, gunakan perintah setfacl dengan opsi -x :
# setfacl -x u:john /tmp/test
Perintah di atas menghapus ACL untuk pengguna john pada file /tmp/test. ACL untuk pengguna/grup lain jika ada tetap tidak terpengaruh.
Untuk menghapus semua ACL yang terkait dengan file, gunakan opsi -b dengan setfacl :
# setfacl -b /tmp/test
Mencadangkan FACL
Sering kali, perangkat lunak pencadangan mungkin tidak menyalin metadata yang terkait dengan FACL pada file. Dalam hal ini Anda mungkin ingin membuat cadangan informasi FACL pada file. Sekarang, FACL pada semua file dalam direktori (termasuk semua sub direktori) dapat disalin dalam satu file.
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
Memulihkan FACL
Saat Anda memulihkan file di direktori /accounts, Anda harus memulihkan FACL yang terkait dengan file di direktori itu. UNTUK melakukannya gunakan file cadangan FACL accounts_facl bersama dengan –memulihkan pilihan :
# setfacl --restore=accounts_facl