Bagikan melalui


Memahami bit mode di Azure NetApp Files

Izin akses file di NFS membatasi apa yang dapat dilakukan pengguna dan grup setelah volume NAS dipasang. Mode bits adalah fitur penting dari izin file NFS di Azure NetApp Files.

Mode bit NFS

Izin bit mode dalam NFS menyediakan izin dasar untuk file dan folder, menggunakan representasi numerik standar kontrol akses. Bit mode dapat digunakan dengan NFSv3 atau NFSv4.1, tetapi bit mode adalah opsi standar untuk mengamankan NFSv3 seperti yang didefinisikan dalam RFC-1813. Tabel berikut ini memperlihatkan bagaimana nilai numerik tersebut sesuai dengan kontrol akses.

Mode bit numerik
1 – eksekusi (x)
2 – tulis (w)
3 – tulis/jalankan (wx)
4 – baca (r)
5 – baca/jalankan (rx)
6 – Baca/Tulis (rw)
7 – baca/tulis/jalankan (rwx)

Nilai numerik diterapkan ke berbagai segmen kontrol akses: pemilik, grup, dan orang lain, yang berarti bahwa tidak ada kontrol akses pengguna terperinci untuk NFSv3 dasar. Gambar berikut menunjukkan contoh bagaimana kontrol akses bit mode dapat dibangun untuk digunakan dengan objek NFSv3.

.

Azure NetApp Files tidak mendukung ACL POSIX. Dengan demikian ACL granular hanya dimungkinkan dengan NFSv3 saat menggunakan volume gaya keamanan NTFS dengan pemetaan nama UNIX ke Windows yang valid melalui layanan nama seperti Active Directory LDAP. Secara bergantian, Anda dapat menggunakan NFSv4.1 dengan Azure NetApp Files dan ACL NFSv4.1.

Tabel berikut membandingkan granularitas izin antara bit mode NFSv3 dan ACL NFSv4.x.

Mode bit NFSv3 Daftar Kontrol Akses NFSv4.x (ACL)
  • Atur ID pengguna pada eksekusi (setuid)
  • Atur ID grup pada eksekusi (setgid)
  • Simpan teks yang ditukar (bit lengket)
  • Izin membaca untuk pemilik
  • Izin tulis untuk pemilik
  • Jalankan izin untuk pemilik pada file; atau cari izin (pencarian) untuk pemilik di direktori
  • Izin baca untuk grup
  • Izin tulis untuk grup
  • Jalankan izin untuk grup pada file; atau cari izin (cari) untuk grup di direktori
  • Izin baca untuk orang lain
  • Izin menulis untuk orang lain
  • Jalankan izin untuk orang lain pada file; atau cari izin (cari) untuk orang lain di direktori
  • Jenis Tipe ACE (Izinkan/Tolak/Audit)
  • Bendera warisan:
  • pewarisan direktori
  • pewarisan file
  • no-propagate-inherit
  • warisan saja
  • Izin:
  • read-data (berkas) / list-directory (direktori)
  • tulis-data (berkas) / buat-berkas (direktori)
  • append-data (file) / create-subdirectory (direktori)
  • menjalankan (berkas) / ganti-direktori (direktori)
  • menghapus
  • hapus-anak
  • baca atribut
  • write-attributes
  • baca-atribut-bernama
  • menulis-atribut-bernama
  • read-ACL
  • write-ACL
  • tulis pemilik
  • Mensinkronisasi

Untuk informasi selengkapnya, lihat Memahami daftar kontrol akses (ACL) NFSv4.x.

Bit lengket, setuid, dan setgid

Saat menggunakan bit mode dengan pemasangan NFS, kepemilikan file dan folder didasarkan pada atribut uid dan gid dari pengguna yang membuat file dan folder. Selain itu, ketika sebuah proses dijalankan, proses tersebut dijalankan oleh pengguna yang memulainya, dan dengan demikian, akan memiliki izin yang sesuai. Dengan izin khusus (seperti setuid, setgid, sticky bit), perilaku ini dapat diatur.

Setuid

Bit setuid ditunjuk oleh "s" dalam bagian eksekusi dari sedikit izin pemilik. Bit setuid memungkinkan file yang dapat dieksekusi dijalankan sebagai pemilik file daripada sebagai pengguna yang mencoba menjalankan file. Misalnya, /bin/passwd aplikasi mengaktifkan setuid bit secara default, oleh karena itu aplikasi berjalan sebagai root ketika pengguna mencoba mengubah kata sandi mereka.

# ls -la /bin/passwd 
-rwsr-xr-x 1 root root 68208 Nov 29  2022 /bin/passwd

setuid Jika bit dihapus, fungsionalitas perubahan kata sandi tidak akan berfungsi dengan baik.

# ls -la /bin/passwd
-rwxr-xr-x 1 root root 68208 Nov 29  2022 /bin/passwd
user2@parisi-ubuntu:/mnt$ passwd
Changing password for user2.
Current password: 
New password: 
Retype new password: 
passwd: Authentication token manipulation error
passwd: password unchanged

Ketika bit setuid dipulihkan, aplikasi passwd berjalan sebagai pemilik (root) dan berfungsi dengan baik, tetapi hanya untuk pengguna yang menjalankan perintah passwd.

# chmod u+s /bin/passwd
# ls -la /bin/passwd
-rwsr-xr-x 1 root root 68208 Nov 29  2022 /bin/passwd
# su user2
user2@parisi-ubuntu:/mnt$ passwd user1
passwd: You may not view or modify password information for user1.
user2@parisi-ubuntu:/mnt$ passwd
Changing password for user2.
Current password: 
New password: 
Retype new password: 
passwd: password updated successfully

Setuid tidak berpengaruh pada direktori.

Setgid

Bit setgid dapat digunakan pada file dan direktori.

Dengan direktori, setgid dapat digunakan sebagai cara untuk meneruskan grup pemilik untuk file dan folder yang dibuat di bawah direktori induk dengan bit set. Seperti setuid, bit yang dapat dieksekusi diubah menjadi "s" atau "S."

Nota

Huruf besar "S" berarti bahwa bit yang dapat dieksekusi belum ditetapkan, seperti jika izin pada direktori adalah "6" atau "rw."

Contohnya:

# chmod g+s testdir
# ls -la | grep testdir
drwxrwSrw-  2 user1 group1     4096 Oct 11 16:34 testdir
# who
root     ttyS0        2023-10-11 16:28
# touch testdir/file
# ls -la testdir
total 8
drwxrwSrw- 2 user1 group1 4096 Oct 11 17:09 .
drwxrwxrwx 5 root  root   4096 Oct 11 16:37 ..
-rw-r--r-- 1 root  group1    0 Oct 11 17:09 file

Untuk file, setgid berperilaku mirip dengan setuid—file executable dijalankan dengan menggunakan izin grup dari pemilik grup. Jika pengguna berada di grup pemilik, pengguna tersebut memiliki akses untuk menjalankan executable ketika setgid diaktifkan. Jika mereka tidak berada dalam grup, mereka tidak mendapatkan akses. Misalnya, jika administrator ingin membatasi pengguna mana yang dapat menjalankan mkdir perintah pada klien, mereka dapat menggunakan setgid.

Biasanya, /bin/mkdir memiliki izin 755 dengan kepemilikan root. Ini berarti siapa pun dapat menjalankan mkdir pada klien.

# ls -la /bin/mkdir 
-rwxr-xr-x 1 root root 88408 Sep  5  2019 /bin/mkdir

Untuk mengubah perilaku untuk membatasi pengguna mana yang dapat menjalankan mkdir perintah, ubah grup yang memiliki mkdir aplikasi, ubah izin untuk /bin/mkdir menjadi 750, lalu tambahkan bit setgid ke mkdir.

# chgrp group1 /bin/mkdir
# chmod g+s /bin/mkdir
# chmod 750 /bin/mkdir
# ls -la /bin/mkdir
-rwxr-s--- 1 root group1 88408 Sep  5  2019 /bin/mkdir

Akibatnya, aplikasi berjalan dengan izin untuk group1. Jika pengguna bukan anggota group1, pengguna tidak mendapatkan akses untuk menjalankan mkdir.

User1 adalah anggota dari group1, tetapi user2 tidak:

# id user1
uid=1001(user1) gid=1001(group1) groups=1001(group1)
# id user2
uid=1002(user2) gid=2002(group2) groups=2002(group2)

Setelah perubahan ini, user1 dapat menjalankan mkdir, tetapi user2 tidak dapat karena user2 tidak ada di group1.

# su user1
$ mkdir test
$ ls -la | grep test
drwxr-xr-x  2 user1 group1     4096 Oct 11 18:48 test

# su user2
$ mkdir user2-test
bash: /usr/bin/mkdir: Permission denied

Bit lengket

Bit lengket hanya digunakan untuk direktori dan, ketika digunakan, mengontrol file mana yang dapat dimodifikasi dalam direktori tersebut terlepas dari izin bit mode mereka. Ketika bit lengket diatur, hanya pemilik file (dan root) yang dapat memodifikasi file, bahkan jika izin file ditampilkan sebagai "777."

Dalam contoh berikut, direktori "sticky" berada dalam volume Azure NetApp Files dan memiliki izin terbuka lebar, tetapi bit lengket ditetapkan.

# mkdir sticky
# chmod 777 sticky
# chmod o+t sticky
# ls -la | grep sticky
drwxrwxrwt  2 root  root       4096 Oct 11 19:24 sticky

Di dalam folder ada file yang dimiliki oleh pengguna yang berbeda. Semua memiliki izin akses 777.

# ls -la
total 8
drwxrwxrwt 2 root     root   4096 Oct 11 19:29 .
drwxrwxrwx 8 root     root   4096 Oct 11 19:24 ..
-rwxr-xr-x 1 user2    group1    0 Oct 11 19:29 4913
-rwxrwxrwx 1 UNIXuser group1   40 Oct 11 19:28 UNIX-file
-rwxrwxrwx 1 user1    group1   33 Oct 11 19:27 user1-file
-rwxrwxrwx 1 user2    group1   34 Oct 11 19:27 user2-file

Biasanya, siapa pun akan dapat memodifikasi atau menghapus file-file ini. Tetapi karena folder induk memiliki set bit lengket, hanya pemilik file yang dapat membuat perubahan pada file.

Misalnya, user1 tidak dapat mengubah atau menghapus user2-file:

# su user1
$ vi user2-file
Only user2 can modify this file.
Hi
~
"user2-file"
"user2-file" E212: Can't open file for writing
$ rm user2-file 
rm: can't remove 'user2-file': Operation not permitted

Sebaliknya, user2 tidak dapat memodifikasi atau menghapus user1-file karena mereka tidak memiliki file dan bit lengket diatur pada direktori induk.

# su user2
$ vi user1-file
Only user1 can modify this file.
Hi
~
"user1-file"
"user1-file" E212: Can't open file for writing
$ rm user1-file 
rm: can't remove 'user1-file': Operation not permitted

Namun, Root masih dapat menghapus file.

# rm UNIX-file 

Untuk mengubah kemampuan root dalam memodifikasi file, Anda harus mengonversi root ke pengguna lain melalui aturan kebijakan ekspor Azure NetApp Files. Untuk informasi selengkapnya, lihat pengurangan hak akses root.

Umask

Dalam operasi NFS, izin dapat dikontrol melalui bit mode, yang memanfaatkan atribut numerik untuk menentukan akses file dan folder. Bit mode ini menentukan atribut baca, tulis, jalankan, dan khusus. Secara numerik, izin diwakili sebagai:

  • Jalankan = 1
  • Baca = 2
  • Tulis = 4

Total izin ditentukan dengan menambahkan atau mengurangi kombinasi izin sebelumnya. Contohnya:

  • 4 + 2 + 1 = 7 (dapat melakukan semuanya)
  • 4 + 2 = 6 (baca/tulis)

Untuk informasi selengkapnya, lihat Bantuan Izin UNIX.

Umask adalah fungsionalitas yang memungkinkan administrator membatasi tingkat izin yang diizinkan untuk klien. Secara default, umask untuk sebagian besar klien diatur ke 0022. 0022 berarti bahwa file yang dibuat dari klien tersebut diberi umask yang ditentukan itu. Umask dikurangkan dari hak akses dasar objek. Jika volume memiliki izin 0777 dan dipasang menggunakan NFS ke klien dengan umask 0022, objek yang ditulis dari klien ke volume tersebut memiliki akses 0755 (0777 – 0022).

# umask
0022
# umask -S
u=rwx,g=rx,o=rx 

Namun, banyak sistem operasi tidak mengizinkan file dibuat dengan izin eksekusi, tetapi memungkinkan folder untuk memiliki izin yang benar. Dengan demikian, file yang dibuat dengan umask 0022 mungkin berakhir dengan hak akses 0644. Contoh berikut menggunakan RHEL 6.5:

# umask
0022
# cd /cdot
# mkdir umask_dir
# ls -la | grep umask_dir
drwxr-xr-x.  2 root     root         4096 Apr 23 14:39 umask_dir

# touch umask_file
# ls -la | grep umask_file
-rw-r--r--.  1 root     root            0 Apr 23 14:39 umask_file

Langkah berikutnya