Controlling Access to Files with ACLs
Tags: ramadhanbersamaredhat
Published: 2024-04-12 01:28:15

## **Menafsirkan file acl**

**Kosep daftar kontrol akses**

Daftar Kontrol Akses (ACL) adalah sebuah konsep di Linux yang memungkinkan pengaturan izin file yang lebih fleksibel daripada yang disediakan oleh izin standar. Dengan ACL, Anda dapat memberikan izin kepada banyak pengguna dan grup secara spesifik, yang tidak hanya terbatas pada pemilik file dan kelompok pemilik.

Dalam ACL, Anda dapat menentukan izin untuk pengguna dan grup dengan menggunakan nama pengguna, nama grup, UID, atau GID. Izin yang diberikan tetap sama dengan izin file standar: baca, tulis, dan jalankan.

Pengguna dapat mengatur ACL pada file dan direktori yang mereka miliki. Pengguna yang memiliki hak istimewa tertentu dapat mengatur ACL pada file atau direktori mana pun. Ketika membuat file atau direktori baru, pengaturan ACL dapat diwariskan dari ACL default direktori utama, jika telah ditetapkan. Secara keseluruhan, ACL memungkinkan pengaturan izin yang lebih rinci dan fleksibel untuk pengguna dan grup tertentu, yang dapat diatur oleh pengguna yang memiliki hak istimewa yang sesuai.

Untuk menggunakan ACL, pastikan sistem file Anda mendukungnya. XFS secara otomatis mendukungnya, sementara di sistem lain seperti ext3 atau ext4 di Red Hat Enterprise Linux 8, dukungan ACL sudah aktif. Pastikan dukungan ACL diaktifkan dengan menggunakan opsi ACL saat memasang sistem file atau dalam konfigurasi /etc/fstab. Ini memungkinkan Anda untuk mengatur izin file dengan lebih fleksibel.

**Melihat dan Menafsirkan Izin ACL**

Perintah "ls -l" menampilkan detail pengaturan ACL minimal. Jika Anda melihat tanda plus (+) di akhir string izin, itu menandakan bahwa ada struktur ACL yang diperluas untuk file tersebut.

- Bagian untuk pengguna menunjukkan pengaturan ACL yang sama dengan izin pengguna standar (rwx).
- Bagian untuk kelompok menunjukkan pengaturan ACL saat ini, bukan pengaturan kelompok pemilik file (rw).
- Bagian untuk "lainnya" menunjukkan pengaturan ACL yang sama dengan izin standar untuk "lainnya" (tidak ada akses).

Penting untuk dicatat bahwa mengubah izin grup pada file dengan ACL menggunakan "chmod" tidak akan mengubah izin grup pemilik, tetapi akan mengubah topeng ACL. Jika Anda ingin memperbarui izin grup pemilik file, gunakan perintah "setfacl -m g::perms file".

**Lihat File ACL**

Untuk melihat pengaturan ACL pada file, Anda dapat menggunakan perintah "getfacl". Contoh di bawah ini memberikan gambaran bagaimana hasilnya ditampilkan:
- Bagian komentar menyediakan informasi tentang nama file, pemilik, dan grup.
- Entri pengguna menunjukkan izin untuk pemilik file dan pengguna bernama lainnya. Misalnya, "pengguna::rwx" menunjukkan izin lengkap untuk pemilik file.
- Entri grup menunjukkan izin untuk pemilik grup dan grup bernama lainnya. Misalnya, "grup::rwx" menunjukkan izin lengkap untuk pemilik grup.
- Entri topeng menentukan izin maksimum yang diperbolehkan untuk semua pengguna dan grup yang terkait.
- Entri "lainnya" menunjukkan izin untuk pengguna dan grup yang tidak terkait.
Ini memberikan gambaran tentang siapa yang memiliki akses apa terhadap file, dengan detail tentang izin untuk pemilik, pengguna bernama, grup, dan lainnya.

**Melihat Direktori ACL**

Untuk melihat pengaturan ACL pada sebuah direktori, gunakan perintah "getfacl directory". Contoh di bawah ini menjelaskan hasilnya:
- Bagian komentar memberikan informasi tentang nama direktori, pemilik, pemilik grup, dan flag tambahan seperti setuid atau setgid.
- Entri ACL standar menunjukkan izin untuk pemilik, pengguna bernama lainnya, grup, dan lainnya.
- Entri default untuk pengguna dan grup menentukan izin default yang diberikan pada file atau direktori baru yang dibuat di dalamnya.
- Entri masker menunjukkan izin maksimum yang mungkin untuk file atau direktori baru yang dibuat di dalamnya.
- Entri default untuk "lainnya" menunjukkan izin default yang diberikan kepada pengguna dan grup yang tidak terkait.

Ini memberikan pemahaman yang jelas tentang siapa yang memiliki akses apa terhadap direktori, dengan detail tentang izin untuk pemilik, pengguna bernama, grup, dan lainnya, serta pengaturan default untuk file atau direktori baru yang dibuat di dalamnya.

**Masker ACL**

Masker ACL menentukan izin maksimum yang dapat diberikan kepada pengguna bernama, pemilik grup, dan grup bernama. Ini tidak membatasi izin dari pemilik file atau pengguna lainnya. Setiap file atau direktori yang menggunakan ACL akan memiliki masker ACL.

Masker ACL dapat dilihat menggunakan perintah "getfacl" dan dapat diatur secara eksplisit menggunakan perintah "setfacl". Biasanya, masker akan dihitung dan ditambahkan secara otomatis jika tidak diatur secara eksplisit, tetapi juga bisa diwarisi dari pengaturan masker default dari direktori induk. Masker akan dihitung ulang setiap kali ada perubahan pada ACL yang terkait.

**Prioritas izin ACL**
1. Izin pengguna file.
2. Izin pengguna bernama.
3. Izin grup.
4. Izin "lainnya".

**Contoh Penggunaan ACL oleh Sistem Operasi**

Contoh penggunaan ACL pada Red Hat Enterprise Linux dapat ditemukan dalam konfigurasi systemd-journald. ACL ini digunakan untuk memberikan akses baca kepada anggota grup ke file jurnal systemd, seperti system.journal, tanpa memberikan akses khusus ke konten dalamnya seperti /var/log/messages atau /var/log/secure.

Dengan konfigurasi ini, systemd-journald secara otomatis menerapkan ACL ke folder dan file baru saat dibuat. Administrator sistem perlu mengatur ACL pada folder /var/log/journal/ ketika menggunakan penyimpanan persisten untuk systemd-journald. Dengan perintah "getfacl", kita dapat melihat bahwa pemilik memiliki izin baca dan tulis, grup memiliki izin baca, dan anggota grup "adm" dan "wheel" juga memiliki izin baca.

Ini memberikan akses terbatas namun cukup bagi anggota grup untuk melihat isi file jurnal systemd tanpa perlu izin tambahan untuk konten khusus di dalamnya. Ini adalah contoh penggunaan ACL untuk memperluas izin dengan lebih fleksibel dan terperinci.

**Mengamankan File dengan ACL**

Anda dapat menggunakan perintah setfacl untuk mengatur izin file dan direktori dengan lebih fleksibel menggunakan Access Control List (ACL). Berikut adalah beberapa contoh cara menggunakannya:

- 
Menambah izin untuk pengguna
```
setfacl -m u:username:rX file
```
   Ini akan memberikan izin membaca (r) dan eksekusi (X) kepada pengguna dengan nama pengguna "username" pada file tersebut.

- 
Menambah izin untuk grup
```
setfacl -m g:groupname:rw file
```
   Ini memberikan izin membaca (r) dan menulis (w) kepada grup dengan nama "groupname" pada file tersebut.

- 
Menambah izin untuk pengguna lainnya
```
setfacl -m o::- file
```
   Ini menghapus semua izin untuk pengguna lainnya (other users) pada file tersebut. Anda juga dapat mengombinasikan entri izin dengan menggunakan koma sebagai pemisah. Contohnya:
```
setfacl -m u::rwx,g:consultants:rX,o::- file
```
Perintah ini mengatur izin agar pemilik file memiliki hak membaca, menulis, dan mengeksekusi (rwx), grup dengan nama "consultants" hanya memiliki hak membaca dan mengeksekusi (rX), sementara pengguna lainnya tidak memiliki izin apapun.

Dengan menggunakan setfacl, Anda dapat mengontrol secara lebih rinci siapa yang memiliki akses apa pada file dan direktori di sistem Anda.

**Menggunakan getfacl sebagai Masukan**

Anda dapat menggunakan keluaran dari getfacl sebagai masukan ke setfacl :

```
[user@host ~]$ getfacl file-A | setfacl --set-file=- file-B
```
Opsi --set-filemenerima masukan dari file atau daristdin. Karakter tanda hubung (-) menentukan penggunaanstdin. Pada kasus ini,file-Bakan memiliki pengaturan ACL yang sama sepertifile-A.

**Mengatur Masker ACL Eksplisit**

Anda bisa mengatur masker ACL pada file atau direktori untuk membatasi izin maksimum yang efektif bagi pengguna, pemilik grup, dan grup tertentu. Misalnya:
```
setfacl -m m::r file
```
Ini menetapkan masker agar izin maksimum yang efektif adalah hanya-baca untuk pengguna, pemilik grup, dan grup tertentu pada file tersebut. Ini memastikan bahwa izin tidak melebihi izin hanya-baca, tanpa memengaruhi izin yang lebih rendah.
```
Modifikasi ACL Rekursif
```
Saat mengatur ACL pada direktori, gunakan opsi -R untuk menerapkan ACL secara rekursif. Disarankan untuk menggunakan X (huruf besar) dalam izin agar file-file dengan izin eksekusi mempertahankan pengaturannya, sementara direktori mendapatkan izin eksekusi untuk memungkinkan pencarian. Contohnya:
```
setfacl -R -m u:name:rX directory
```
Perintah ini menambahkan izin membaca dan izin eksekusi bersyarat kepada pengguna "name" pada direktori dan semua file serta subdirektori di dalamnya.

**Menghapus ACL**

Anda bisa menghapus entri ACL tertentu menggunakan perintah setfacl dengan format dasar yang sama seperti operasi modifikasi. Contohnya:
```
setfacl -x u:name,g:name file
```
Perintah ini akan menghapus entri ACL untuk pengguna bernama dan grup bernama dari file tersebut, sementara entri ACL lainnya tetap tidak berubah. Anda juga bisa menggunakan operasi hapus (-x) dan ubah (-m) dalam satu perintah setfacl yang sama.

Penting untuk diingat bahwa mask hanya dapat dihapus jika tidak ada ACL lain yang diatur, termasuk basis ACL yang tidak dapat dihapus. Jadi, mask harus dihapus terakhir. Untuk menghapus semua entri ACL pada file atau direktori, termasuk basis ACL pada direktori, gunakan perintah:
```
setfacl -b file
```
Setelah dihapus, file tidak akan lagi memiliki ACL dan tidak akan menampilkan tanda plus (+) di sebelah string izin saat menggunakan ls -l.

```
Mengontrol Izin File ACL Default

```
Untuk memastikan bahwa file dan direktori yang dibuat dalam sebuah direktori mewarisi ACL tertentu, Anda dapat menggunakan bawaan ACL pada direktori tersebut. Anda bisa mengatur bawaan ACL dan pengaturan ACL standar, termasuk masker default. Direktori itu sendiri masih memerlukan ACL standar untuk mengontrol akses, karena bawaan ACL tidak memberlakukan kontrol akses untuk direktori; mereka hanya mewariskan izin ACL. Contohnya:

```
setfacl -m d:u:name:rx directory
```
Perintah ini menambahkan pengguna default (d:u:name) dengan izin baca-saja dan izin eksekusi pada subdirektori. Saat menetapkan bawaan ACL pada sebuah direktori, pastikan izin eksekusi termasuk dalam bawaan ACL agar pengguna dapat mengakses konten sub direktori yang baru dibuat. File dan subdirektori baru akan mewarisi UID pemilik dan GID grup utama dari pengguna pembuat, kecuali jika tanda setgid pada direktori induk diaktifkan. Dalam kasus tersebut, GID grup utama akan sama dengan GID direktori induk.

**Menghapus Entri ACL Default**

Hapus sebuah bawaan ACL dengan cara yang sama seperti Anda menghapus ACL standar, diawali dengan d:, atau menggunakan -dopsi.

```
[user@host ~]$ setfacl -x d:u:name directory
```
Ini menghapus defaultentri ACL yang ditambahkan pada contoh sebelumnya. Untuk menghapus semuabawaanEntri ACL pada direktori, gunakan setfacl -kdirectory.

## **Latihan Terpandu : Mengamankan File dengan ACL**

Untuk menyelesaikan latihan ini, langkah-langkahnya sebagai berikut:

- 
Masuk ke servera sebagai user student dan beralih ke root menggunakan sudo -i. Tambahkan ACL untuk grup consultants agar memiliki akses penuh ke /shares/content dengan perintah:
   
```
setfacl -Rm g:consultants:rwX /shares/content
```

- 
Selanjutnya, tambahkan perintah untuk menolak akses bagi pengguna consultant1 dari grup consultants:

```
setfacl -Rm u:consultant1:- /shares/content
```

- 
Kemudian, tambahkan bawaan ACL agar file dan direktori yang baru dibuat di /shares/content memiliki aturan akses yang sesuai:
   
```
setfacl -m d:g:consultants:rwx /shares/content
setfacl -m d:u:consultant1:- /shares/content

```

- 
Verifikasi perubahan dengan masuk sebagai consultant2 dan mencoba membaca file serta membuat direktori baru di /shares/content. Pastikan consultant1 tidak dapat membaca atau membuat perubahan apapun.

- 
Terakhir, masuk sebagai sysadmin1 untuk memeriksa entri ACL pada /shares/content dan /shares/content/reports dengan perintah getfacl.
Setelah itu, keluar dari servera dan jalankan skrip penyelesaian acl-secure lab pada workstation untuk menyelesaikan latihan.

Anda dapat mempraktikkan materi ini untuk menambah pengalaman serta wawasan anda.