Saya telah membaca akses hanya ke share NFS yang dipasang.
Dengan 'no squash mapping' yang diatur pada NAS, pengguna reguler Ubuntu dapat Permission denied
ketika mencoba untuk cd
berbagi dan hanya bisa mendapatkan akses baca dengan menggunakan sudo
.
Menggunakan squash 'peta semua pengguna ke pengaturan admin', pengguna biasa klien dapat cd
masuk dan hanya memiliki akses baca untuk berbagi. Menggunakan sudo
tidak memungkinkan menulis.
Synology NAS:
DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)
tidak ada squash (tidak ada pemetaan)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
semua squash (memetakan semua pengguna ke admin)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)
Klien Ubuntu:
$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0
$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>
$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files
$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data
(Saya semula memposting karena kesalahan yang menggunakan sudo
akses tulis yang diaktifkan) Saya dapat membuka file dengan NFS yang dipasang bersama sudo vi /mnt/nfs/Files/Data/test.file
tetapi tidak dapat menulis perubahan pada file tersebut sudo
. Pesan kesalahan vi atas :w!
perintah adalah:
"test.file" E212: Can't open file for writing
id username
) mana yang menjadi miliknya dan izin apa yang ditetapkan?cd
menjadi mount sebagai pengguna biasa? Jika ya, saya sarankan yang berikut ini. Untuk mengkonfirmasi atau menangkis kecurigaan saya, lakukan hal berikut: Pada kliencd
ke mount dan lakukanls -n
. Itu akan mencantumkan pemilik dan grup file dengan ID masing-masing. Anda harus melakukan itu dengansudo
saya kira. Tambahkan satu atau dua baris output ke pertanyaan Anda, bersama dengan output dariid
(tidaksudo
!) Jika Anda bahkan tidak dapatcd
me-mount sebagai pengguna biasa, Anda harus memeriksa izin dari dir yang Anda ekspor. server.cd
menggunakan mount sebagai pengguna biasa. Menggunakan Squash di server untuk memaksa izin berfungsi sebagai perbaikan sementara untuk memberikan izin. Investigasi izin server danid username
./mnt/nfs/Files
. MeskipunFiles
milikroot
, izin memungkinkan siapa pun untuk melakukan apa pun. Tidak masuk akal bagi saya mengapa Anda akan kesulitan memasukkan dir itu sebagai pengguna mana pun. Mungkin memposting baris yang relevan dari/etc/exports
?Jawaban:
NFSv2 / 3 menangani izin hanya berdasarkan UID dan GID. Izin file di server dicocokkan dengan id pengguna dan id grup pada klien. Itu sebabnya NFSv <4 adalah dengan desain tidak aman di lingkungan di mana pengguna memiliki akses root ke mesin klien; Spoofing UID sepele dalam hal ini.
Perhatikan bahwa NFSv4 menawarkan otentikasi klien dan pengguna melalui Kerberos5. Jika otentikasi dengan nama pengguna dan kata sandi diperlukan, meskipun seringkali lebih mudah untuk menggunakan Samba (SMB / CIFS) daripada menyiapkan Kerberos, bahkan di lingkungan Linux murni.
Untuk setidaknya mencegah peningkatan hak akses root, saham NFS diekspor secara default dengan opsi
root_squash
, yang akan memetakan semua permintaan klien yang datang dariroot (uid=0, gid=0)
keanonuid
dananongid
. Perilaku ini dapat diganti denganno_root_squash
, memberikan akses root ke ekspor.Di sini, kita melihat kelemahan lain. Agar berfungsi dengan baik, pada dasarnya NFS mengharuskan Anda memiliki UID / GID yang sama di semua mesin. File yang ingin Anda akses adalah milik
1026
dan memiliki izin 755. Anda pengguna di klienuid=1000
. GID juga tidak cocok, sehingga Anda hanya mendapatkan izin dunia. Karenanya tidak ada akses tulis.Untuk mengatasi ini, Anda dapat melakukan salah satu dari banyak hal:
Di NAS, ubah pemilik file ke
1000
. Anda mungkin perlu membuat akun itu. Bagaimana ini akan memengaruhi layanan lain, saya tidak tahu.Ubah UID pengguna lokal Anda menjadi
1026
.Karena Anda adalah satu-satunya yang mengakses file di server, Anda dapat membuat server berpura-pura bahwa semua permintaan berasal dari UID yang tepat. Untuk itu, NFS memiliki opsi
all_squash
. Ini memberitahu server untuk memetakan semua permintaan ke pengguna anonim, ditentukan olehanonuid,anongid
.Tambahkan opsi
all_squash,anonuid=1026,anongid=100
ke ekspor di/etc/exports
.Berhati-hatilah , karena ini akan membuat siapa pun memasang ekspor secara efektif pemilik file-file itu!
Jika Anda membagikan jaringan Anda dengan orang-orang dan klien mereka yang Anda tidak percaya sepenuhnya untuk tidak membuat kerusakan dengan file Anda, Anda benar-benar harus melihat ke dalam metode filesharing yang menawarkan otentikasi. Menurut pendapat saya, Samba adalah cara termudah untuk mencapai itu.
sumber
Lakukan
showmount -e 10.1.1.214
untuk melihat opsi ekspor.Permission denied
kesalahan berasal dari server NFS itu sendiri. Cobalah untuk mengubah opsi darirw,user,auto
menjadidefaults
.sumber