全部产品
Search
文档中心

File Storage NAS:Gunakan NFSv4 ACL untuk mengontrol akses

更新时间:Jul 02, 2025

Tema ini menjelaskan cara mengonfigurasi Daftar Kontrol Akses (ACL) NFSv4 dan menggunakan ACL tersebut untuk mengontrol akses ke file dan direktori dalam sistem file NFSv4.

Prasyarat

Sistem file NFSv4 telah dipasang. Untuk informasi lebih lanjut, lihat Pasang Sistem File NFS pada Instance ECS Linux.

Informasi latar belakang

Anda dapat memasang sistem file NFSv4 pada Instance Elastic Compute Service (ECS) Linux dan menginstal alat khusus Linux nfs4-acl-tools pada instance tersebut. Setelah alat diinstal, Anda dapat menggunakan alat standar nfs4_getfacl dan nfs4_setfacl untuk mengonfigurasi NFSv4 ACL.

Deskripsi perintah

Sebelum mengonfigurasi NFSv4 ACL, kami sarankan Anda memahami perintah tertentu. Tabel berikut menjelaskan perintah-perintah tersebut.

Perintah

Deskripsi

nfs4_getfacl <filename>

Mengambil ACL yang berlaku untuk file tertentu.

nfs4_setfacl -a A::GROUP@:W <filename>

Menambahkan entri kontrol akses (ACE) yang memberikan izin tulis pada file tertentu kepada prinsipal GROUP@.

nfs4_setfacl -a A::1000:W <filename>

Menambahkan ACE yang memberikan izin tulis pada file tertentu kepada prinsipal pengguna bernama 1000.

nfs4_setfacl -a A:g:10001:W <filename>

Menambahkan ACE yang memberikan izin tulis pada file tertentu kepada prinsipal pengguna bernama 10001.

nfs4_setfacl -e <filename>

Memodifikasi ACL dalam mode interaktif.

nfs4_getfacl <filename> > saved_acl.txt

Menyimpan daftar izin pada file tertentu sebagai file TXT.

nfs4_setfacl -S saved_acl.txt <filename>

Mengonfigurasi izin pada file tertentu dengan menggunakan file TXT yang mencakup daftar izin.

nfs4_setfacl -m A::1001:rwaxTNcCy A::1001:rxtcy file1

Memodifikasi izin dari ACE yang berlaku untuk file file1.

nfs4_getfacl file1 | nfs4_setfacl -S - file2

Menyalin ACL untuk file file1 ke file file2.

nfs4_getfacl file1 | grep @ | nfs4_setfacl -S - file1

Menghapus semua ACE yang berlaku untuk file file1, kecuali ACE yang mencakup prinsipal berikut: OWNER@, GROUP@, dan EVERYONE@.

nfs4_setfacl -R -a A:g:10001:rW dir

Menambahkan ACE yang memberikan izin baca dan tulis pada file dan subdirektori dalam direktori dir kepada prinsipal grup bernama 10001.

find dir -type f -exec sh -c 'for ace in $(nfs4_getfacl \{} | grep "^A.*\:1005\:"); do nfs4_setfacl -x $ace \{}; done' \;

Menghapus ACE yang memberikan izin pada file dalam direktori dir kepada prinsipal pengguna bernama 1005.

nfs4_setfacl -a A:fdg:10001:rW dir1

Menambahkan ACE yang memberikan izin baca dan tulis pada file baru dan subdirektori dalam direktori dir1 kepada prinsipal grup bernama 10001.

nfs4_setfacl -a A:fg:10001:rx dir1

Menambahkan ACE yang memberikan izin baca, tulis, dan eksekusi pada semua file baru dalam direktori dir1 kepada prinsipal grup bernama 10001.

Prosedur

Untuk mengontrol akses ke file dan direktori dengan mengonfigurasi NFSv4 ACL, lakukan langkah-langkah berikut:

  1. Buat pengguna dan grup.

    Dalam contoh ini, pengguna berikut dibuat: player, admini, dan anonym. Grup berikut 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 anonym
  2. Instal alat yang diperlukan untuk mengonfigurasi NFSv4 ACL.

    Jika Anda telah menginstal alat-alat ini, lewati langkah ini.

    sudo yum -y install nfs4-acl-tools
  3. Dapatkan ID grup players dan adminis.

    Buka file /etc/group. ID grup players dan adminis akan ditampilkan.

    players:x:19064:player
    adminis:x:19065:admini
  4. Konfigurasikan NFSv4 ACL untuk mengontrol akses ke file dan direktori.

    Jalankan perintah berikut untuk menyelesaikan operasi: Buat direktori bernama dir0. Tambahkan ACE yang memberikan izin hanya-baca kepada grup players untuk semua file dalam direktori dir0, berikan izin baca, tulis, dan eksekusi kepada grup adminis, serta jangan berikan izin apa pun kepada pengguna lainnya.

    sudo umask 777
    sudo mkdir dir0
    sudo nfs4_setfacl -a A:fdg:19064:RX dir0
    sudo nfs4_setfacl -a A:fdg:19065:RWX dir0
    sudo nfs4_setfacl -a A:fdg:OWNER@: dir0
    sudo nfs4_setfacl -a A:fdg:GROUP@: dir0
    sudo nfs4_setfacl -a A:fdg:EVERYONE@: dir0

    Jalankan perintah sudo nfs4_getfacl dir0 untuk memverifikasi konfigurasi.

    A::OWNER@:tTnNcCy
    A::GROUP@:tncy
    A::EVERYONE@:tncy
    A:fdi:EVERYONE@:tncy
    A:fdi:OWNER@:tTnNcCy
    A:fdi:GROUP@:tncy
    A:g:19064:rxtncy
    A:g:19065:rwaDxtTnNcCy
    A:fdig:19064:rxtncy
    A:fdig:19065:rwaDxtTnNcCy
  5. Verifikasi konfigurasi ACL.

    1. Jalankan perintah berikut untuk memverifikasi bahwa pengguna admini memiliki izin baca dan tulis:

      sudo su admini -c 'touch dir0/file'
      sudo su admini -c 'echo 123 > dir0/file'
    2. Verifikasi bahwa pengguna player memiliki izin hanya-baca.

      1. Verifikasi bahwa pengguna player tidak memiliki izin untuk membuat file, misalnya file dir0/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:

          touch: cannot touch 'dir0/file': Permission denied
      2. Verifikasi bahwa pengguna player tidak memiliki izin tulis, misalnya izin tulis pada file dir0/file.

        • 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
      3. Verifikasi bahwa pengguna player memiliki izin baca.

        • Jalankan perintah berikut:

          sudo su player -c 'cat dir0/file'
        • Jika keluaran serupa dengan informasi berikut, pengguna player memiliki izin baca:

          123

        Anda juga dapat menjalankan perintah sudo su player -c 'nfs4_getfacl dir0/file' untuk melihat izin yang dimiliki pengguna player pada file dir0/file.

        A::OWNER@:tTnNcCy
        A::GROUP@:tncy
        A::EVERYONE@:tncy
        A:g:19064:rxtncy
        A:g:19065:rwaxtTnNcCy
    3. Verifikasi bahwa pengguna anonym tidak memiliki izin pada direktori dir0.

      1. Verifikasi bahwa pengguna anonym tidak memiliki izin untuk melihat file dalam direktori dir0.

        • Jalankan perintah berikut:

          sudo su anonym -c 'ls dir0'
        • Jika keluaran serupa dengan informasi berikut, pengguna anonym tidak memiliki izin pada direktori dir0:

          ls: cannot open directory dir0: Permission denied
      2. Verifikasi bahwa pengguna anonym tidak memiliki izin untuk melihat isi 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
      3. Verifikasi bahwa pengguna anonym tidak memiliki izin untuk mengakses file.

        • Jalankan perintah berikut:

          sudo su anonym -c 'nfs4_getfacl dir0/file'
        • Jika keluaran serupa dengan informasi berikut, pengguna anonym tidak memiliki izin untuk mengakses file.

          Invalid filename: dir0/file

Apa yang harus dilakukan selanjutnya

Anda dapat menggunakan metode berikut untuk mencabut izin dari pengguna.

Jika Anda ingin menggunakan NFSv4 ACL, kami sarankan Anda menambahkan setiap pengguna ke grup. Ini memungkinkan Anda mengonfigurasi izin untuk grup pengguna daripada pengguna individu. Untuk mencabut izin pada objek dari pengguna, Anda dapat menghapus pengguna dari grup yang diberi izin pada objek tersebut. Sebagai contoh, Anda dapat menjalankan perintah berikut untuk menghapus pengguna admini dari grup adminis dan menambahkan pengguna tersebut ke grup adminis2.

  1. Jalankan perintah berikut untuk membuat grup adminis2:

    sudo groupadd adminis2
  2. Jalankan perintah berikut untuk menghapus pengguna admini dari grup adminis dan menambahkan pengguna tersebut ke grup adminis2:

    sudo usermod -g adminis2 admini
  3. Kueri informasi ID tentang pengguna.

    • Jalankan perintah berikut:

      id admini
    • Informasi berikut dikembalikan:

      uid=1057(admini) gid=1057(admini) groups=1061(adminis2)
  4. Verifikasi izin pengguna admini.

    1. Verifikasi bahwa pengguna admini 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
    2. 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
    3. 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