Pemetaan ID pengguna dengan NFS di Synology NAS

20

Saya memiliki kotak Synology NAS (menjalankan DSM 5.1), dan saya telah mengekspor direktori melalui NFS. Saya mencoba memasangnya di kotak Ubuntu saya.

Sebagian besar berfungsi dengan baik, tapi saya mengalami masalah dengan pemetaan pengguna dan grup. Pada kotak Ubuntu, saya uid 1000 (roger), gid 1000 (roger). Di Synology, saya punya uid 1026 (roger), grup 100 (pengguna).

Jika saya menggunakan NFSv3, ia menggunakan nilai numerik uid / gid, yang berarti bahwa kepemilikannya kacau pada Synology.

Jika saya hanya pernah mengakses NFS mount dari kotak Ubuntu yang sama, menggunakan pengguna yang sama, ini akan baik-baik saja, tetapi saya juga mengakses direktori dari kotak Windows, menggunakan CIFS (SMB), yang berarti bahwa izinnya adalah salah.

Jika saya menggunakan NFSv4 ( mount -o nfsvers=4), dengan pengaturan default pada Synology, maka file yang dimiliki oleh roger.userspada Synology muncul milik roger.usersketika dilihat dari kotak Ubuntu. Ini bagus.

Namun, ketika saya touchfile:

roger@ubuntu$ touch /mounts/diskstation/music/foo

Itu akhirnya dimiliki oleh 1000.1000di Synology, dan ditampilkan sebagai milik nobody.4294967294ketika dilihat dari kotak Ubuntu.

Segala sesuatu yang saya dapat temukan pada topik di forum Synology baik tanggal dari 2011, ketika NFSv4 tidak didukung, atau terdiri dari orang-orang yang mengajukan pertanyaan yang sama dan kemudian menyerah.

Untuk kelengkapan, /etc/exportsmemiliki:

/volume1/music  10.0.0.0/24(rw,async,no_wdelay,root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

... dan saya memasangnya di kotak Ubuntu dengan:

mount -t nfs diskstation:/volume1/music /mounts/diskstation/music/ -o rw,nfsvers=4

Saya menemukan beberapa petunjuk bahwa sec=sysmungkin ada masalah: Mengapa pemetaan Uid / gid NFSv4 tidak berfungsi dengan AUTH_UNIX (AUTH_SYS) , tetapi itu tidak memiliki solusi.

Apakah ada cara sederhana untuk mengatasi masalah ini? Apakah ada yang lebih kompleks ( batuk Kerberos batuk ) cara untuk mengatasi ini?

Serius, jika Kerberos adalah jawabannya, saya akan menerima pukulan itu, tetapi saya ingin tahu sebelum membuang banyak waktu untuk itu.

Pembaruan : ketika dokumentasi Synology berbicara tentang berbagai opsi Kerberos, saya tidak dapat menemukannya di UI. The catatan rilis negara "Jika Kerberos rasa keamanan telah diterapkan ...". Saya menemukan (tetapi tidak dapat menemukan lagi) halaman yang menyiratkan bahwa itu mungkin tidak pada model tertentu. Saya memiliki DS211, menurut halaman Informasi Sistem. Mungkin saya kurang beruntung?

Roger Lipscombe
sumber
mengkonfigurasi server ldap secara terpisah. Kemudian pada klien NFS (kotak ubuntu Anda), konfigurasikan klien ldap. Juga konfigurasikan layanan autofs untuk automounting nfs share (dari NAS) pada nfs client machine (ubuntu). Pada klien NFS, buat pengguna ssh untuk mengakses konten pengguna
Sathish
@DavidPostill, saya mengerti mengapa Anda terus menghapus tag [synology] pada pertanyaan ini. Kecuali: pertanyaan ini khusus untuk perangkat lunak diskstation synology - atau lebih tepatnya, saya mencari solusi yang berlaku untuk perangkat lunak itu, bukan NAS pada umumnya. Tidak ada tag diskstation, dan saya belum punya cukup rep untuk membuatnya.
Roger Lipscombe
Harap perhatikan bahwa tag tersebut sedang dihapus sesuai diskusi komunitas yang mana tag generik yang hanya terkait dengan perusahaan harus dihapus. Perhatikan bahwa pembuatan tag di situs ini hanya membutuhkan 300 reputasi; jangan ragu untuk membuat tag synology-diskstation .
gparyani

Jawaban:

8

Agar pemetaan ID NFSv4 berfungsi dengan baik, klien dan server harus menjalankan idmapddaemon ID Mapper dan memiliki Domainkonfigurasi yang sama di dalamnya /etc/idmapd.conf.

Dengan cara ini, Klien NFS Anda mengirimkan kredensial ID-nya seperti [email protected]pada perintah NFS di atas, dan idmapper Server NFS Anda memetakannya ke pengguna yang dipanggil rogerdi Server NFS. UID dan GID tidak masalah, mereka dipetakan pada setiap sistem oleh idmapper.

Namun saya tidak peduli dengan itu di Synology saya. Folder Bersama Saya memiliki izin berikut:

  • Izin
    • Pengguna Lokal
      • Admin = baca / tulis
  • Izin NFS
    • Labu
      • Petakan semua pengguna untuk admin

Ini menghasilkan anonuid=1024,anongid=100( adminpengguna dan usersgrup) yang ditambahkan ke ekspor /etc/exportspada NAS.

Klien NFS saya (yang tidak memiliki ID Mapper berjalan) mengirimkan perintah NFS saya sebagai pengguna saya ( 1000:1000) dan karena UID dan GID itu tidak ada pada NAS, itu menerjemahkan UID dan GID 1024:100saya sehingga saya diperlakukan sebagai Pengguna admin yang memiliki izin penuh.

Ini adalah penggunaan NFS yang sangat tidak profesional dan tidak aman untuk lingkungan bisnis, tetapi hanya bagi saya untuk mengakses file saya di rumah itu adalah penyalahgunaan perilaku NFS yang dapat diterima oleh saya.

Pilihan lain adalah membuat rogerUID dan GID sama pada NFS Client dan NAS, maka Anda dapat menggunakan NFSv4 tanpa ID Mapping, atau Anda kemudian dapat menggunakan NFSv3 yang hanya mengandalkan UID dan GID.

suprjami
sumber
1
Ini mungkin satu-satunya tempat di alam semesta yang mendokumentasikan solusi yang masuk akal untuk pengguna Linux rumahan yang tidak memerlukan keamanan penuh yang disediakan NFS di lingkungan jaringan. Bekerja untuk Ubuntu 19.4 dan DSM 6.2.2.
VanAlbert
1

Saya benar-benar berjuang dengan masalah yang sama persis. Saya mengalami kesulitan besar mendirikan server Kerberos dengan Docker di Synology, mengatur pemetaan ID, dan saya masih tidak menyukai perilaku itu. Kerberos terlalu direkayasa berlebihan dan sulit untuk tetap bekerja pada reboot dan automounting. Plus, umask default dari file yang baru dibuat adalah 0000, dan setiap file baru dibuat dengan mode 777, tidak peduli apa pun umask lokal saya.

Solusi saya mirip dengan suprjami, tetapi saya membawanya sedikit lebih jauh:

  • Buat pengguna baru dengan web Synology UI, beri nama seperti itu roger.remote. Lakukan hal yang sama untuk grup pengguna, dan beri nama sama dengan nama pengguna.
  • Pada Synology sebagai root, edit / etc / passwd dan ubah roger.remoteUID menjadi 1000, dan GID menjadi 1000
  • edit / etc / group dan ubah grup roger.remotemenjadi 1000 juga
  • Di UI web Synology, atur squash ke "semua pengguna untuk admin" dan simpan
  • Sebagai root lagi, edit / etc / ekspor dan ubah UID / GID menjadi anonuid=1000,anongid=1000
  • Mulai ulang NFS dengan /usr/syno/etc.defaults/rc.sysv/S83nfsd.sh restart
  • Ini juga agak berantakan - tetapi chmod 777 /volume1. Saya punya banyak masalah aneh dengan direktori home saya dipasang. KDE tidak akan mulai karena access()fungsi glibc akan mengembalikan akses yang ditolak pada direktori NFS yang dipasang. (Tetapi subdirektori mana pun akan berfungsi) Firefox juga memiliki masalah yang sama, di mana ia menolak untuk menyimpan file ke direktori yang di-mount karena pemeriksaan akses. Meskipun izinnya benar, dan saya bisa menyentuh / membuat / menulis file di direktori yang di-mount. Mengubah direktori parent / volume1 ke dunia yang dapat diperbaiki memperbaiki masalah bodoh itu dan mengelabui aplikasi klien untuk menulis padanya.
  • Hapus semua ACL sistem file dari share. Melalui banyak eksperimen acak, saya menemukan bahwa ACL ini menyebabkan masalah dengan mode mask file yang dibuat. Saya bukan master ACL, jadi mungkin ada solusi yang lebih elegan. Sebagai root di Synology, lakukan synoacltool -del /volume1/myshare. Anda akan melihat +simbol dihapus dari ls-l output.
  • Ubah kepemilikan saham untuk pengguna baru Anda: chown roger.remote:roger.remote /volume1/myshare
  • Ubah mode ke 755: chmod 755 /volume1/myshare
  • Pasang volume pada klien, uji izin, seharusnya berhasil! Pastikan untuk menyentuh file juga dan memverifikasi umas bash Anda diterapkan dengan benar.
$ umask 
0002
$ cd / mnt / myshare
uji $ sentuh
$ ls -l test
-rw-rw-r-- 1 roger roger 0 21 Okt 18:15 tes

Pada Synology Anda harus melihat:

# ls -l / volume1 / myshare / test
-rw-rw-r-- 1 roger.remote roger.remote 0 Okt 21 18:15 tes

Nikmati!

Cal
sumber