Bagaimana saya bisa mendapatkan akses baca / tulis ke bagian NFS dari Synology NAS?

11

Saya telah membaca akses hanya ke share NFS yang dipasang.

Dengan 'no squash mapping' yang diatur pada NAS, pengguna reguler Ubuntu dapat Permission deniedketika mencoba untuk cdberbagi dan hanya bisa mendapatkan akses baca dengan menggunakan sudo.
Menggunakan squash 'peta semua pengguna ke pengaturan admin', pengguna biasa klien dapat cdmasuk dan hanya memiliki akses baca untuk berbagi. Menggunakan sudotidak 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 sudoakses tulis yang diaktifkan) Saya dapat membuka file dengan NFS yang dipasang bersama sudo vi /mnt/nfs/Files/Data/test.filetetapi tidak dapat menulis perubahan pada file tersebut sudo. Pesan kesalahan vi atas :w!perintah adalah:
"test.file" E212: Can't open file for writing

Marsilea
sumber
NFS memeriksa izin akses terhadap id pengguna (UID). UID pengguna di mesin lokal Anda harus cocok dengan UID pemilik file yang Anda coba akses di server . Pergi ke server dan lihat izin file. UID (cari tahu id username) mana yang menjadi miliknya dan izin apa yang ditetapkan?
Nephente
Bisakah Anda bahkan cdmenjadi mount sebagai pengguna biasa? Jika ya, saya sarankan yang berikut ini. Untuk mengkonfirmasi atau menangkis kecurigaan saya, lakukan hal berikut: Pada klien cdke mount dan lakukan ls -n. Itu akan mencantumkan pemilik dan grup file dengan ID masing-masing. Anda harus melakukan itu dengan sudosaya kira. Tambahkan satu atau dua baris output ke pertanyaan Anda, bersama dengan output dari id (tidak sudo!) Jika Anda bahkan tidak dapat cdme-mount sebagai pengguna biasa, Anda harus memeriksa izin dari dir yang Anda ekspor. server.
Nephente
Saya tidak dapat cdmenggunakan mount sebagai pengguna biasa. Menggunakan Squash di server untuk memaksa izin berfungsi sebagai perbaikan sementara untuk memberikan izin. Investigasi izin server dan id username.
marsilea
Terima kasih, saya pikir akan lebih baik menggunakan nfs dengan cara yang benar daripada hanya kekerasan dengan Squash: 'Petakan semua pengguna untuk admin' di server ..
marsilea
Tergantung. Apakah Anda mempercayai klien dan pengguna? Jika tidak, NFSv3 tidak cocok, karena siapa pun yang memiliki akses root ke klien, dapat memalsukan UID. Jika Anda membutuhkan otentikasi yang tepat, Anda sebaiknya menggunakan SMB. Otentikasi dengan NFSv4 membutuhkan menjalankan Kerberos yang agak rumit. Namun demikian, output Anda membuat saya bingung ... Saya menganggap titik mountnya adalah /mnt/nfs/Files. Meskipun Filesmilik root, 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?
Nephente

Jawaban:

11

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 dari root (uid=0, gid=0)ke anonuiddan anongid. Perilaku ini dapat diganti dengan no_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 1026dan memiliki izin 755. Anda pengguna di klien uid=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 oleh anonuid,anongid.

    Tambahkan opsi all_squash,anonuid=1026,anongid=100ke 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.

Nephente
sumber
Saya memilih NFS karena saya pikir itu mungkin memiliki keuntungan untuk Linux ke Linux, karena saya ingin dapat membuat cadangan NAS dengan rsync ke drive USB eksternal pada klien Ubuntu (sistem DSM Synology tidak menawarkan sinkronisasi ke drive USB) , sambil menjaga informasi kepemilikan dan izin file. Sebuah jawaban menyeluruh, dan terima kasih atas panduannya.
marsilea
0

Lakukan showmount -e 10.1.1.214untuk melihat opsi ekspor. Permission deniedkesalahan berasal dari server NFS itu sendiri. Cobalah untuk mengubah opsi dari rw,user,automenjadi defaults.

Muhammad Aizuddin
sumber