Bagaimana cara mengatur izin untuk folder NFS dengan benar? Izin ditolak pada akhir pemasangan.

46

Saya mencoba untuk terhubung ke folder NFS di server dev saya. Pemilik folder pada server dev adalah darren dan grup darren.

Ketika saya mengekspor dan me-mount ke Mac saya menggunakan Disk Utility itu me-mount, tetapi kemudian ketika saya mencoba untuk membuka folder dikatakan saya tidak memiliki izin. Saya telah menetapkan rw, sinkronisasi, dan no_subtree_check. Pengguna di Mac adalah darren dengan sekelompok grup.

Apakah saya perlu mengatur grup dan pengguna yang sama untuk mengakses folder?

Darren
sumber
2
Terima kasih atas pertanyaan Anda, utas ini menyelesaikan masalah untuk saya! Tapi tolong terima jawabannya dengan upvotes terbanyak.
mamiu

Jawaban:

61

NFS dibangun di atas otentikasi RPC. Dengan NFS versi 3, mekanisme otentikasi yang paling umum adalah AUTH_UNIX. ID pengguna dan id grup dari sistem klien dikirim dalam setiap panggilan RPC, dan izin yang dimiliki ID ini pada file yang sedang diakses diperiksa di server. Agar ini berfungsi, UID dan GID harus sama di server dan klien. Namun, Anda dapat memaksa semua akses terjadi sebagai satu pengguna dan grup dengan menggabungkan opsi all_squash, anonuid, dan anongid. all_squash akan memetakan semua UID dan GID ke pengguna anonim, dan anonuid dan anongid mengatur UID dan GID dari pengguna anonim. Misalnya, jika UID dan GID Anda di server dev Anda sama-sama 1001, Anda dapat mengekspor direktori home Anda dengan garis seperti

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Saya kurang terbiasa dengan NFS versi 4, tetapi saya pikir Anda dapat mengatur rpc.idmapd pada klien untuk mengubah uid dan gid yang mereka kirim ke server.

sciurus
sumber
7
Saya menemukan jawaban ini mencoba memecahkan masalah Apple OS X Yosemite nfs. Jawaban ini jauh lebih relevan dan akurat daripada jawaban yang diterima. Tidak disarankan juga tidak layak untuk mencocokkan UID / GID lintas sistem. Pengguna root pada sistem A mungkin bukan pengguna root pada sistem B.
Allan
28

Saat Anda memasang NFS, izin yang Anda pasang itu harus sesuai dengan apa yang Anda miliki di server. Misalnya, jika pengguna Anda hanya memiliki akses baca-saja, memasangnya dengan baca-tulis akan menyebabkan Anda melihat kesalahan yang sama seperti yang Anda sebutkan di pos ketika Anda mencoba memuat mount. Sayangnya, ini HANYA akan muncul saat mengakses folder, bukan ketika Anda benar-benar memasangnya.

Anda juga ingin memastikan bahwa pengguna NFS berjalan seperti di server dan pengguna di klien menggunakan UID dan GID yang sama. Anda dapat memeriksa nilai-nilai ini dengan menjalankan id darrenserver dan klien. Jika nilai UID dan GID tidak cocok, Anda dapat mengedit /etc/passwduntuk membuatnya jadi - tetapi pastikan Anda memahami apa yang Anda lakukan sebelum mengubah nilai secara sewenang-wenang!

Beberapa sumber yang baik:

Saya harap ini membantu!

Andrew M.
sumber
Ya saya seharusnya tidak mencoba mengubah UID saya harus mengulang server saya sekarang. Bagaimana seseorang meniru UID dan GID? Apakah ini benar-benar rumit?
Darren
Sayangnya, dalam pengalaman saya menggunakan ini di tempat kerja, NFS sangat rapuh, dan ya - bisa jadi ini rumit. Biasanya, Anda ingin pengguna NFS khusus dengan UID / GID khusus di setiap server / klien sehingga Anda tidak mengalami masalah ini. Jika Anda memiliki pilihan di lingkungan dev Anda (yaitu, ia TIDAK HARUS menggunakan NFS), melihat menggunakan sesuatu seperti SSHFS akan membuat sakit kepala dev Anda hilang - tetapi tidak akan mereplikasi fungsi yang sama dengan server produksi yang menggunakan NFS.
Andrew M.
Apakah Anda pikir Samba adalah solusi lain? Saya telah menggunakannya dengan Windows tanpa masalah dan saya pikir ini adalah cara saya harus pergi walaupun saya menggunakan Mac untuk mengembangkan aplikasi saya.
Darren
Itu tentu saja kemungkinan lain, jika Anda bersedia mengaturnya.
Andrew M.
2
Saya akan ragu untuk mengatakan NFS rapuh. Ini adalah protokol layanan file lama didirikan. Sebenarnya hanya ada dua persyaratan untuk NFS: UID / GID yang disinkronkan di antara klien dan waktu yang disinkronkan antara klien dan server. Secara tradisional, NIS digunakan untuk menyinkronkan informasi pengguna, tetapi LDAP adalah pilihan yang lebih aman untuk penyebaran baru dalam dekade terakhir.
Jeff Strunk
2

Apakah UID dan GID Anda cocok di kedua server? Itulah yang digunakannya untuk mengontrol akses dan bukan login dan nama grup.

JOTN
sumber
-2

Bagi saya masalah ini diperbaiki dengan memberikan _netdevopsi pemasangan pada klien.

Yaitu menambahkan ini ke /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Vanuan
sumber