All Products
Search
Document Center

File Storage NAS:Gunakan NFSv4 ACL untuk mengontrol akses

Last Updated:Aug 19, 2026

Topik ini menjelaskan cara mengonfigurasi daftar kontrol akses (ACL) NFSv4 dan menggunakannya untuk mengontrol akses ke file dan direktori dalam sistem file NFSv4.

Prasyarat

  • Sistem file NFSv4 telah dimount. Untuk informasi selengkapnya, lihat Mount sistem file NFS pada instans ECS Linux.

  • NFS ACL diaktifkan untuk sistem file tersebut. Untuk mengaktifkannya, buka halaman detail sistem file di Konsol NAS, klik Access Control di panel navigasi kiri, lalu aktifkan toggle NFS ACL.

Informasi latar belakang

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

Deskripsi perintah

Sebelum mengonfigurasi NFSv4 ACL, kami menyarankan Anda memahami perintah-perintah berikut. Tabel berikut menjelaskan masing-masing perintah tersebut.

Perintah

Deskripsi

nfs4_getfacl <filename>

Menampilkan ACL yang berlaku untuk file tertentu.

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

Memberikan izin write kepada kelompok.

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

Memberikan izin write kepada pengguna dengan ID 1000.

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

Memberikan izin write kepada kelompok dengan ID 10001.

nfs4_setfacl -e <filename>

Memodifikasi ACL dalam mode interaktif.

nfs4_getfacl <filename> > saved_acl.txt

Menyimpan daftar izin file tertentu ke dalam file teks.

nfs4_setfacl -S saved_acl.txt <filename>

Memulihkan izin ACL dari file teks.

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

Memodifikasi izin ACE yang berlaku untuk file file1.

nfs4_getfacl file1 | nfs4_setfacl -S - file2

Menyalin ACL dari file file1 ke file file2.

nfs4_getfacl file1 | grep @ | nfs4_setfacl -S - file1

Menghapus ACE non-retained dari file file1.

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

Menambahkan ACE yang memberikan izin read dan write pada semua file dan subdirektori dalam direktori dir kepada kelompok dengan ID 10001.

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

Menghapus semua ACE yang mengandung ID 1005 dari seluruh file dalam struktur direktori dir.

nfs4_setfacl -a A:fdg:10001:rW dir1

Menambahkan ACE yang memberikan izin read dan write pada file dan subdirektori baru dalam direktori dir1 kepada kelompok dengan ID 10001.

nfs4_setfacl -a A:fg:10001:rx dir1

Memberikan izin read dan execute kepada kelompok dengan ID 10001 pada file baru yang dibuat dalam direktori dir1.

Prosedur

Untuk mengontrol akses ke file dan direktori dengan mengonfigurasi NFSv4 ACL, ikuti langkah-langkah berikut.

  1. Buat pengguna dan kelompok.

    Pada contoh ini, pengguna berikut dibuat: player, admini, dan anonym. Kelompok berikut dibuat: players dan adminis. Pengguna player ditambahkan ke kelompok players, sedangkan pengguna admini ditambahkan ke kelompok 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 tool yang diperlukan untuk mengonfigurasi NFSv4 ACL.

    Jika tool ini sudah terinstal, lewati langkah ini.

    # CentOS/RHEL/Alibaba Cloud Linux
    sudo yum -y install nfs4-acl-tools
    
    # Ubuntu/Debian
    sudo apt-get -y install nfs4-acl-tools
  3. Dapatkan ID kelompok players dan adminis.

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

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

    Jalankan perintah berikut untuk menyelesaikan operasi: Buat direktori bernama dir0. Tambahkan ACE yang memberikan izin read-only pada semua file dalam direktori dir0 kepada kelompok players, memberikan izin read, write, dan execute kepada kelompok adminis, serta tidak memberikan izin kepada pengguna lain.

    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

    Setelah konfigurasi selesai, jalankan sudo nfs4_getfacl dir0 untuk melihat hasilnya.

    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. Verifikasi bahwa pengguna admin memiliki izin read dan write.

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

      1. Verifikasi apakah Anda memiliki izin untuk membuat file (misalnya, dengan membuat dir0/file).

        • Jalankan perintah berikut:

          sudo su player -c 'touch dir0/file'
        • Jika outputnya mirip dengan informasi berikut, pengguna player tidak memiliki izin untuk membuat file:

          touch: cannot touch ‘dir0/file’: Permission denied
      2. Verifikasi apakah Anda memiliki izin write (misalnya, dengan menulis ke dir0/file).

        • Jalankan perintah berikut:

          sudo su player -c 'echo 456 >> dir0/file'
        • Jika outputnya mirip dengan informasi berikut, pengguna player tidak memiliki izin write:

          bash: dir0/file: Permission denied
      3. Pastikan Anda memiliki izin read.

        • Jalankan perintah berikut:

          sudo su player -c 'cat dir0/file'
        • Jika outputnya mirip dengan informasi berikut, pengguna player memiliki izin read:

          123

        Anda juga dapat menjalankan perintah sudo su player -c 'nfs4_getfacl dir0/file' untuk melihat izin 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 apa pun.

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

        • Jalankan perintah berikut:

          sudo su anonym -c 'ls dir0'
        • Jika pesan berikut dikembalikan, artinya pengguna anonym tidak memiliki izin akses.

          ls: cannot open directory dir0: Permission denied
      2. Verifikasi bahwa Anda tidak dapat melihat konten file tersebut.

        • Jalankan perintah berikut:

          sudo su anonym -c 'cat dir0/file'
        • Jika outputnya mirip dengan informasi berikut, pengguna anonym tidak memiliki izin untuk mengakses file dalam direktori dir0. NFSv4 mengembalikan error ini ketika izin pencarian direktori (execute) ditolak:

          cat: dir0/file: No such file or directory
      3. Verifikasi bahwa Anda tidak memiliki izin untuk mengakses file 'file'.

        • Jalankan perintah berikut:

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

          Invalid filename: dir0/file

Operasi terkait

Anda dapat menggunakan metode berikut untuk mencabut izin dari pengguna.

Jika Anda ingin menggunakan NFSv4 ACL, kami menyarankan agar setiap pengguna dimasukkan ke dalam kelompok. Hal ini memungkinkan Anda mengonfigurasi izin untuk kelompok pengguna, bukan untuk pengguna individu. Untuk mencabut izin pada objek dari pengguna, Anda dapat menghapus pengguna tersebut dari kelompok yang diberikan izin pada objek tersebut. Misalnya, Anda dapat menjalankan perintah berikut untuk menghapus pengguna admini dari kelompok adminis dan menambahkannya ke kelompok adminis2.

  1. Buat kelompok adminis2.

    sudo groupadd adminis2
  2. Pindahkan pengguna admin dari kelompok admins ke kelompok admins2.

    sudo usermod -g adminis2 admini
  3. Tanyakan izin untuk ID 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 Anda tidak dapat mengakses direktori dir0.

      • Jalankan perintah berikut:

        sudo su admini -c 'ls dir0'
      • Jika outputnya mirip 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 konten file dir0/file.

      • Jalankan perintah berikut:

        sudo su admini -c 'cat dir0/file'
      • Jika outputnya mirip dengan informasi berikut, pengguna admini tidak memiliki izin untuk mengakses file dalam direktori dir0. NFSv4 mengembalikan error ini ketika izin pencarian direktori (execute) ditolak:

        cat: dir0/file: No such file or directory
    3. Verifikasi bahwa pengguna admini tidak memiliki izin untuk mengakses file dir0/file.

      • Jalankan perintah berikut:

        sudo su admini -c 'nfs4_getfacl dir0/file'
      • Jika outputnya mirip dengan informasi berikut, pengguna admini tidak memiliki izin untuk mengakses file dalam direktori dir0. NFSv4 mengembalikan error ini ketika izin pencarian direktori (execute) ditolak:

        Invalid filename: dir0/file