DEV Community

Khoerunnisa
Khoerunnisa

Posted on

Securing Files with ACLs Objectives

Setelah menyelesaikan bagian ini, kita seharusnya dapat:

  • Mengubah izin file ACL biasa menggunakan setfacl.
  • Mengontrol izin file ACL default untuk file dan direktori baru.

Mengubah Izin File ACL
Gunakan setfacl untuk menambah, memodifikasi, atau menghapus ACL standar pada file dan direktori.
ACL menggunakan representasi izin sistem file normal, "r" untuk izin baca, "w" untuk izin tulis, dan "x" untuk izin eksekusi. Tanda "-" (tanda pisah) menunjukkan bahwa izin yang bersangkutan tidak ada. Ketika (secara rekursif) mengatur ACL, huruf besar "X" dapat digunakan untuk mengindikasikan bahwa izin eksekusi hanya boleh diatur pada direktori dan bukan berkas biasa, kecuali berkas tersebut sudah memiliki izin eksekusi yang relevan. Ini adalah perilaku yang sama dengan chmod.

Menambah atau Memodifikasi ACL
ACL dapat diatur melalui baris perintah dengan menggunakan opsi -m, atau dimasukkan melalui berkas dengan menggunakan opsi -M (gunakan "-" (tanda pisah) sebagai pengganti nama berkas untuk stdin). Kedua opsi ini adalah opsi "modify"; opsi ini menambahkan entri ACL baru atau mengganti entri ACL tertentu yang sudah ada pada file atau direktori. Entri ACL lain yang sudah ada pada berkas atau direktori tetap tidak tersentuh.
Catatan
Gunakan opsi --set atau --set-file untuk mengganti sepenuhnya pengaturan ACL pada file.

Saat pertama kali mendefinisikan ACL pada file, jika operasi tambah tidak menyertakan pengaturan untuk pemilik file, pemilik grup, atau izin lainnya, maka ini akan ditetapkan berdasarkan izin file standar saat ini (ini juga dikenal sebagai entri ACL dasar dan tidak dapat dihapus), dan nilai mask baru akan dihitung dan ditambahkan juga.
Untuk menambah atau memodifikasi pengguna atau ACL pengguna bernama:

[user@host ~]$ setfacl -m u:name:rX file
Enter fullscreen mode Exit fullscreen mode

Jika nama dibiarkan kosong, maka itu berlaku untuk pemilik berkas, jika tidak, nama dapat berupa nama pengguna atau nilai UID. Pada contoh ini, izin yang diberikan adalah hanya-baca, dan jika sudah ditetapkan, eksekusi (kecuali berkas adalah direktori, dalam hal ini direktori akan mendapatkan izin eksekusi yang ditetapkan untuk mengizinkan pencarian direktori).
Izin pemilik berkas ACL dan izin pemilik berkas standar adalah sama; oleh karena itu, menggunakan chmod pada izin pemilik berkas sama dengan menggunakan setfacl pada izin pemilik berkas. chmod tidak berpengaruh pada pengguna bernama.
Untuk menambahkan atau memodifikasi grup atau nama grub ACL:

[user@host ~]$ setfacl -m g:name:rw file
Enter fullscreen mode Exit fullscreen mode

Ini mengikuti pola yang sama untuk menambahkan atau memodifikasi entri ACL pengguna. Jika nama dibiarkan kosong, maka nama tersebut berlaku untuk pemilik grup. Jika tidak, tentukan nama grup atau nilai GID untuk grup bernama. Perizinan akan dibaca dan ditulis dalam contoh ini.
chmod tidak berpengaruh pada perizinan grup untuk berkas dengan pengaturan ACL, namun akan memperbarui mask ACL.
Untuk menambah atau memodifikasi ACL lainnya:

[user@host ~]$ setfacl -m o::- file
Enter fullscreen mode Exit fullscreen mode

lainnya hanya menerima pengaturan izin. Pengaturan izin yang umum untuk other adalah: tidak ada izin sama sekali, diatur dengan tanda pisah(-); dan izin hanya-baca yang diatur seperti biasa dengan r. Tentu saja, Anda dapat mengatur salah satu izin standar.
ACL other dan izin standar lainnya adalah setara, sehingga menggunakan chmod pada izin lainnya setara dengan menggunakan setfacl pada izin lainnya.
Anda dapat menambahkan beberapa entri dengan perintah yang sama; gunakan daftar entri yang dipisahkan dengan koma:

[user@host ~]$ setfacl -m u::rwx,g:consultants:rX,o::- file
Enter fullscreen mode Exit fullscreen mode

Ini mengatur pemilik file untuk membaca, menulis, dan menjalankan, mengatur konsultan grup bernama menjadi hanya-baca dan menjalankan bersyarat, dan membatasi semua pengguna lain untuk tidak memiliki izin. Pemilik grup mempertahankan izin file atau ACL yang ada dan entri "bernama" lainnya tetap tidak berubah.

Menggunakan getfacl sebagai Input
Anda dapat menggunakan keluaran dari getfacl sebagai masukan ke setfacl:

[user@host ~]$ getfacl file-A | setfacl --set-file=- file-B
Enter fullscreen mode Exit fullscreen mode

Opsi --set-file menerima input dari sebuah file atau dari stdin. Karakter tanda pisah (-) menentukan penggunaan stdin. Dalam kasus ini, _file-B_ akan memiliki pengaturan ACL yang sama dengan _file-A_.

Setting an Explicit ACL Mask
Anda dapat mengatur ACL mask secara eksplisit pada file atau direktori untuk membatasi izin efektif maksimum untuk pengguna bernama, pemilik grup, dan grup bernama. Ini akan membatasi semua izin yang ada yang melebihi topeng, tetapi tidak memengaruhi izin yang kurang permisif dari mask.

[user@host ~]$ setfacl -m m::r file
Enter fullscreen mode Exit fullscreen mode

Ini menambahkan nilai mask yang membatasi setiap pengguna bernama, pemilik grup, dan grup bernama ke izin hanya-baca, terlepas dari pengaturan yang ada. Pemilik file dan pengguna lain tidak terpengaruh oleh pengaturan mask.

getfacl menampilkan komentar efektif di samping entri yang dibatasi oleh pengaturan mask.

Penting
Secara default, setiap kali salah satu pengaturan ACL yang terpengaruh (pengguna bernama, pemilik grup, atau grup bernama) dimodifikasi atau dihapus, mask ACL dihitung ulang, sehingga berpotensi mengatur ulang pengaturan mask eksplisit sebelumnya.
Untuk menghindari penghitungan ulang topeng, gunakan opsi -n atau sertakan pengaturan mask (-m m::perms) dengan operasi setfacl apa pun yang memodifikasi mask akan berpengaruh pada pengaturan ACL.

Modifikasi ACL Rekursif
Saat menetapkan ACL pada direktori, gunakan opsi -R untuk menerapkan ACL secara rekursif. Ingatlah bahwa Anda mungkin ingin menggunakan izin "X" (huruf besar X) dengan rekursi sehingga file dengan set izin eksekusi mempertahankan pengaturan dan direktori mendapatkan set izin eksekusi untuk mengizinkan pencarian direktori. Praktik yang baik adalah menggunakan huruf besar "X" saat menetapkan ACL secara non-rekursif karena hal ini mencegah administrator secara tidak sengaja menambahkan izin eksekusi ke file biasa.

[user@host ~]$ setfacl -R -m u:name:rX directory
Enter fullscreen mode Exit fullscreen mode

Ini menambahkan nama pengguna ke direktori direktori dan semua file dan subdirektori yang ada, mengatur izin hanya-baca dan eksekusi bersyarat.
Menghapus ACL
Menghapus entri ACL tertentu mengikuti format dasar yang sama dengan operasi memodifikasi, kecuali_":perms"_ tidak ditentukan.

[user@host ~]$ setfacl -x u:name,g:name file
Enter fullscreen mode Exit fullscreen mode

Ini hanya menghapus pengguna bernama dan grup bernama dari file atau direktori ACL. Entri ACL lain yang ada tetap aktif.
Anda dapat menyertakan operasi hapus(-x) dan modifikasi(-m) dalam operasi setfacl yang sama.
Topeng hanya dapat dihapus jika tidak ada ACL lain yang ditetapkan (tidak termasuk ACL dasar yang tidak dapat dihapus), sehingga harus dihapus terakhir. File tidak akan lagi memiliki ACL dan ls -l tidak akan menampilkan tanda plus (+) di samping string izin. Atau, untuk menghapus semua entri ACL pada berkas atau direktori (termasuk ACL default pada direktori), gunakan perintah berikut:

[user@host ~]$ setfacl -b file
Enter fullscreen mode Exit fullscreen mode

Mengontrol Izin File ACL Default
Untuk memastikan bahwa file dan direktori yang dibuat di dalam direktori mewarisi ACL tertentu, gunakan ACL default pada direktori. Anda dapat mengatur ACL default dan pengaturan ACL standar mana pun, termasuk mask default.
Direktori itu sendiri masih memerlukan ACL standar untuk kontrol akses karena ACL default tidak mengimplementasikan kontrol akses untuk direktori tersebut; mereka hanya menyediakan dukungan pewarisan izin ACL. Sebagai contoh:

[user@host ~]$ setfacl -m d:u:name:rx directory
Enter fullscreen mode Exit fullscreen mode

Perintah ini menambahkan pengguna bernama default(d:u:name) dengan izin hanya-baca dan izin eksekusi pada subdirektori.

Perintah setfacl untuk menambahkan ACL default untuk setiap jenis ACL sama persis dengan ACL standar, tetapi diawali dengan d:. Atau, gunakan opsi -d pada baris perintah.

Penting
Saat menetapkan ACL default pada direktori, pastikan bahwa pengguna dapat mengakses konten subdirektori baru yang dibuat di dalamnya dengan menyertakan izin execute pada ACL default.

Pengguna tidak akan secara otomatis mendapatkan izin eksekusi yang ditetapkan pada file biasa yang baru dibuat karena tidak seperti direktori baru, mask ACL dari file biasa yang baru adalah rw-.

Catatan
File baru dan subdirektori baru akan terus mendapatkan nilai UID pemiliknya dan nilai GID grup utama yang ditetapkan dari pengguna yang membuat, kecuali bila flag setgid direktori induk diaktifkan, dalam hal ini GID grup utama sama dengan GID direktori induk.

Menghapus Entri ACL Default
Hapus ACL default dengan cara yang sama seperti Anda menghapus ACL standar, awali dengan d:, atau gunakan opsi -d.

[user@host ~]$ setfacl -x d:u:name directory
Enter fullscreen mode Exit fullscreen mode

Ini akan menghapus entri ACL default yang telah ditambahkan pada contoh sebelumnya.
Untuk menghapus semua entri ACL default pada direktori, gunakan setfacl-k direktori.

Top comments (0)