Topik ini menjelaskan cara mengonfigurasi Daftar Kontrol Akses (ACL) Antarmuka Sistem Operasi Portabel (POSIX) untuk mengontrol akses ke file dan direktori dalam sistem file NFSv3.
Prasyarat
Sistem file NFSv3 telah dipasang. Untuk informasi lebih lanjut, lihat Pasang sistem file NFS pada Instance ECS Linux.
Deskripsi Perintah
Sebelum mengonfigurasi ACL POSIX, Anda harus memahami perintah tertentu terlebih dahulu. Tabel berikut menjelaskan perintah tersebut.
Perintah | Deskripsi |
getfacl <filename> | Mengambil ACL yang berlaku untuk file yang ditentukan. |
setfacl -m g::w <filename> | Anda dapat memberikan izin write kepada GROUP. |
setfacl -m u:player:w <filename> | Memberikan izin tulis kepada pengguna player. |
setfacl -m g:players:rwx <filename> | Memberikan izin baca, tulis, dan eksekusi kepada grup players. |
setfacl -x g:players <filename> | Mencabut izin dari grup players. |
getfacl file1 | setfacl --set-file=- file2 | Menyalin ACL untuk file file1 ke file file2. |
setfacl -b file1 | Menghapus semua ACE non-mode untuk file file1. |
setfacl -k file1 | Menghapus semua ACE default dari file file1. |
setfacl -R -m g:players:rw dir | Memberikan izin baca dan tulis pada file dan subdirektori di direktori dir kepada grup players. |
setfacl -d -m g:players:rw dir1 | Memberikan izin baca dan tulis pada file dan subdirektori baru di direktori dir1 kepada grup players. |
Prosedur
Untuk mengontrol akses ke file dan direktori dengan mengonfigurasi NFS ACL, ikuti langkah-langkah berikut:
Buat pengguna dan grup.
Dalam contoh ini, pengguna berikut dibuat: player, admini, dan anonym. Grup berikut juga dibuat: players dan adminis. Pengguna player ditambahkan ke grup players, dan pengguna admini ditambahkan ke grup adminis.
sudo useradd player sudo groupadd players sudo usermod -g players player sudo useradd admini sudo groupadd adminis sudo usermod -g adminis admini sudo useradd anonymKonfigurasikan ACL POSIX untuk mengontrol akses ke file dan direktori.
Jalankan perintah berikut untuk menyelesaikan operasi: Buat direktori bernama dir0. Berikan izin hanya-baca kepada grup players, izin baca, tulis, dan eksekusi kepada grup adminis, serta tidak ada izin sama sekali untuk kelas others pada semua file di direktori dir0.
sudo umask 777 sudo mkdir dir0 sudo setfacl -m g:players:r-x dir0 sudo setfacl -m g:adminis:rwx dir0 sudo setfacl -m u::--- dir0 sudo setfacl -m g::--x dir0 sudo setfacl -m o::--- dir0 sudo setfacl -d -m g:players:r-x dir0 sudo setfacl -d -m g:adminis:rwx dir0 sudo setfacl -d -m u::--- dir0 sudo setfacl -d -m g::--x dir0 sudo setfacl -d -m o::--- dir0Setelah konfigurasi selesai, jalankan
sudo getfacl dir0untuk melihat hasilnya.# file: dir0 # owner: root # group: root user::--- group::--x group:players:r-x group:adminis:rwx mask::rwx other::--- default:user::--- default:group::--x default:group:players:r-x default:group:adminis:rwx default:mask::rwx default:other::---Verifikasi konfigurasi ACL.
Verifikasi bahwa pengguna admini memiliki izin baca dan tulis.
sudo su admini -c 'touch dir0/file'sudo su admini -c 'echo 123 > dir0/file'Verifikasi bahwa pengguna player memiliki izin hanya-baca.
Verifikasi bahwa Anda tidak memiliki izin untuk membuat file.
Misalnya, di dalam direktori dir0, coba buat file bernama file.
Jalankan perintah berikut:
sudo su player -c 'touch dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna player tidak memiliki izin untuk membuat file file:
touch: cannot touch ‘dir0/file’: Permission denied
Verifikasi isi file dir0/file.
Jalankan perintah berikut:
sudo su player -c 'cat dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna player memiliki izin untuk melihat isi file dir0/file:
123
Verifikasi izin tulis.
Jalankan perintah berikut:
sudo su player -c 'echo 456 >> dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna player tidak memiliki izin tulis:
bash: dir0/file: Permission denied
Anda juga dapat menjalankan perintah
sudo su player -c 'getfacl dir0/file'untuk melihat izin pengguna player terhadap file dir0/file.# file: dir0/file # owner: admini # group: adminis user::--- group::--- group:players:r-x group:adminis:rwx mask::rwx other::---
Verifikasi bahwa pengguna anonim tidak memiliki izin apa pun.
Verifikasi bahwa Anda tidak memiliki izin untuk melihat file di dalam direktori dir0.
Jalankan perintah berikut:
sudo su anonym -c 'ls dir0'Jika pesan berikut dikembalikan, pengguna anonym tidak memiliki izin akses yang diperlukan.
ls: cannot open directory dir0: Permission denied
Verifikasi bahwa Anda tidak memiliki izin untuk membaca file.
Jalankan perintah berikut:
sudo su anonym -c 'cat dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna anonym tidak memiliki izin untuk melihat isi file:
cat: dir0/file: Permission denied
Verifikasi bahwa Anda tidak memiliki izin untuk mengakses file.
Jalankan perintah berikut:
sudo su anonym -c 'getfacl dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna anonym tidak memiliki izin untuk mengakses file:
getfacl: dir0/file: Permission denied
Operasi Terkait
Anda dapat menggunakan metode berikut untuk mencabut izin dari pengguna.
Jika Anda ingin menggunakan NFSv4 ACLs, disarankan agar setiap pengguna ditambahkan ke kelompok. Dengan demikian, Anda dapat mengonfigurasi izin untuk kelompok, bukan untuk pengguna secara individual. Untuk mencabut izin pada suatu objek dari pengguna, cukup hapus pengguna tersebut dari kelompok yang diberi izin pada objek tersebut. Misalnya, perintah berikut menghapus pengguna admini dari kelompok adminis dan menambahkannya ke kelompok adminis2.
Buat kelompok adminis2.
sudo groupadd adminis2Jalankan perintah berikut untuk menghapus pengguna admini dari grup adminis dan menambahkan pengguna tersebut ke grup adminis2:
sudo usermod -g adminis2 adminiPeriksa izin berdasarkan ID pengguna.
Jalankan perintah berikut:
id adminiInformasi berikut dikembalikan:
uid=1057(admini) gid=1057(admini) groups=1061(adminis2)
Verifikasi izin pengguna admini.
Verifikasi bahwa Anda tidak memiliki izin untuk mengakses direktori dir0.
Jalankan perintah berikut:
sudo su admini -c 'ls dir0'Jika keluaran serupa dengan informasi berikut, pengguna admini tidak memiliki izin untuk mengakses direktori dir0:
ls: cannot open directory dir0: Permission denied
Verifikasi bahwa pengguna admini tidak memiliki izin untuk melihat isi file dir0/file.
Jalankan perintah berikut:
sudo su admini -c 'cat dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna admini tidak memiliki izin untuk melihat isi file dir0/file:
cat: dir0/file: Permission denied
Verifikasi bahwa pengguna admini tidak memiliki izin untuk mengakses file dir0/file.
Jalankan perintah berikut:
sudo su admini -c 'getfacl dir0/file'Jika keluaran serupa dengan informasi berikut, pengguna admini tidak memiliki izin untuk mengakses file dir0/file:
getfacl: dir0/file: Permission denied