এনএফএসভি 4 ব্যবহারকারী ম্যাপিং


12

এই প্রশ্নটি ইতিমধ্যে অনেকবার জিজ্ঞাসা করা হয়েছে বলে মনে হয়, তবে অন্য উত্তরগুলি আমার কাছে প্রযোজ্য হয়নি।

মূলত আমি সবেমাত্র একটি নতুন এনএফএসভি 4 সার্ভার সেট আপ করেছি এবং আমি ক্লাসিক সমস্যার মুখোমুখি হয়েছি যেখানে ইউআইডি এবং জিআইডি সার্ভার এবং ক্লায়েন্টের মধ্যে মেলে না। তবে, আমার দৃশ্যে / ইত্যাদি / পাসডাব্লুড এবং / ইত্যাদি / গ্রুপ সিঙ্ক্রোনাইজ করা সম্ভব নয়। মনে রাখবেন যে উভয় মেশিনে আমার একই ব্যবহারকারী রয়েছে ( এই প্রশ্নের বিপরীতে )।

সুতরাং আমি আইডিএমেপটি সন্ধান করছিলাম: কিছু উত্স অনুসারে, মনে হয় যে এনএফএসভি 4 ইউজারনেম প্রেরণ করে (ইউআইডি / জিআইডি প্রেরণের জন্য এনএফএসভি 3 এর আচরণের বিপরীতে) এবং আইডিএম্যাপের ভূমিকা এই ইউজারনেমগুলি সার্ভারের ইউআইডি / জিআইডিগুলিতে অনুবাদ করা হবে।

তবে, এটি আমার ক্ষেত্রে (নীচে সেটআপের বিশদ) তে কাজ করছে না বলে মনে হচ্ছে, যা আমি খুব মানক হিসাবে বিবেচনা করি (রেপো থেকে কেবলমাত্র এনএফএস ইনস্টল করা হয়েছে)।

আমি কিছু অনুপস্থিত করছি? এলডিএপি বা কার্বেরোস স্থাপন না করে এই কাজ করার কোনও উপায় আছে কি?


সার্ভার সেটআপ

সার্ভারটি Ubuntu 16.04ইনস্টল করা হয়েছে এবং দুটি ব্যবহারকারী।

user1@server:~$ id user1
uid=1000(user1) gid=1000(user1) groups=1000(user1),27(sudo)
user1@server:~$ id user2
uid=1001(user2) gid=1001(user2) groups=1001(user2)

এনএফএস রেপো থেকে ইনস্টল করা হয়েছিল এবং একটি পরীক্ষার ফোল্ডারটি রফতানি করতে কনফিগার করা হয়েছিল।

user1@server:~$ sudo apt-get install nfs-kernel-server

user1@server:~$ sudo cat /proc/fs/nfsd/versions 
+2 +3 +4 +4.1 +4.2

user1@server:~$ ls -ld /srv/nfs/test/
drwxrwxrwx 2 nobody nogroup 4096 nov  2 17:34 /srv/nfs/test/

user1@server:~$ cat /etc/exports 
"/srv/nfs/test" 192.168.x.x(rw,sync,no_subtree_check)

যেহেতু সার্ভার এবং ক্লায়েন্টের পৃথক হোস্টনাম রয়েছে, তাই আমি idmapd এর কনফিগার ফাইলটিতে "ডোমেন" মান পরিবর্তন করেছি। অন্যথায় ফাইলটি প্যাকেজ পরিচালক দ্বারা ইনস্টল করা ফাইলটির মতো। দয়া করে লক্ষ্য করুন যে এই ফাইলটির বিষয়বস্তু সার্ভার এবং ক্লায়েন্ট উভয়ের ক্ষেত্রেই অভিন্ন।

user1@server:~$ cat /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = mydomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

ক্লায়েন্ট সেটআপ

ক্লায়েন্টের Ubuntu 16.04এবং দু'জন ব্যবহারকারী রয়েছেন , যাঁর একই ব্যবহারকারীর নাম রয়েছে তবে বিভিন্ন ইউআইডি / জিআইডি রয়েছে

user1@client:~$ id user1
uid=1001(user1) gid=1002(user1) groups=1002(user1),27(sudo)
user1@client:~$ id user2
uid=1000(user2) gid=1000(user2) groups=1000(user2),27(sudo)

রেফো থেকে এনএফএস ইনস্টল করা হয়েছিল এবং পরীক্ষার ভাগটি মাউন্ট করা হয়েছিল।

user1@client:~$ sudo apt-get install nfs-common

user1@client:~$ mkdir ./test
user1@client:~$ sudo mount -t nfs4 192.168.x.x:/srv/nfs/test ./test

পরীক্ষামূলক

প্রথমে আমি ক্লায়েন্টে একটি ফাইল তৈরি করি এবং এটি দুর্দান্ত মনে হয়:

user1@client:~$ touch test/testfile
user1@client:~$ ls -l ./test
total 0
-rw-rw-r-- 1 user1 user1 0 nov  2 17:24 testfile

তবে আমি যখন সার্ভার থেকে ফাইলটি দেখি, তখন আমি লক্ষ্য করব যে মালিকটি ভুল, যদিও গ্রুপটির অস্তিত্ব নেই।

user1@server:~$ ls -l /srv/nfs/test
total 0
-rw-rw-r-- 1 user2 1002 0 nov  2 17:24 testfile

এক্সপেরিমেন্ট

অনুরূপ প্রশ্নের এই উত্তর অনুসারে সার্ভারে আইডি-ম্যাপিংটি নীচে সক্রিয় করা উচিত (ত্রুটিগুলি লক্ষ্য করুন):

user1@server:~$ sudo tee /sys/module/nfsd/parameters/nfs4_disable_idmapping <<< "N"
user1@server:~$ sudo nfsidmap -c
nfsidmap: 'id_resolver' keyring was not found.
user1@server:~$ sudo service rpcidmapd restart
Failed to restart rpcidmapd.service: Unit rpcidmapd.service not found.
user1@server:~$ sudo service nfs-kernel-server restart

ক্লায়েন্ট থাকা অবস্থায় (ত্রুটির অনুপস্থিতি লক্ষ্য করুন):

user1@client:~$ sudo tee /sys/module/nfs/parameters/nfs4_disable_idmapping <<< "N"
user1@client:~$ sudo nfsidmap -c

তবে ফলাফলগুলি অদ্ভুত:

user1@client:~$ touch test/testfile
user1@client:~$ ls -l test
total 0
-rw-rw-r-- 1 user2 4294967294 0 nov  2 19:16 testfile
user1@server:~$ ls -l /srv/nfs/project/
total 0
-rw-rw-r-- 1 user2 1002 0 nov  2 19:16 prova

অন্য একটি উত্তর নীচে হিসাবে idmapd কনফিগারেশন সংশোধন করার পরামর্শ দেয় (উভয় মেশিনে বিষয়বস্তু একই):

user1@server:~$ cat /etc/idmapd.conf 
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = mydomain

[Translation]
   Method=static
[Static]
   user1@mydomain = user1

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

তবে এতে কোনও পার্থক্য দেখা যায় না।

উত্তর:


6

এনএফএসভি 4 ইউআইডি এবং জিআইডিগুলিকে অনুবাদ করবে না কারণ আপনি মনে করতে পারেন কার্বেরোস এবং সুরক্ষা স্বাদ ব্যবহার না করার সময়। আপনি বর্ণিত হিসাবে এটি ঠিক যেমন কাজ করে। কারণটি হ'ল এনএফএসভি 4 AUTH_SYSসুরক্ষা ব্যবহার করবে । আরও বিশদ বিবরণ এখানে পাওয়া যাবে


2
আপনার উত্তর এবং লিঙ্কের জন্য আপনাকে ধন্যবাদ, খুব তথ্যপূর্ণ। তবে এখনও এটি প্রসঙ্গে খাপ খায় না ... সুতরাং আইডেমিপিংয়ের উদ্দেশ্য কী? এটি আরপিসি দিয়ে কাজ না করে কেন "আরপিসিডম্যাপডি" বলা হয়? এবং এই আদেশের প্রভাব কি ?
ম্যাটপেন

এফডব্লিউআইডাব্লু, AUTH_SYSএই প্রশ্নটি ব্যবহার করার পরেও এনএফএসভি
sxc731

@ sxc731: আমার অভিজ্ঞতা থেকে, এবং আমি আজ একটি পরীক্ষা করেনি ব্যবহার idmapসঙ্গে AUTH_SYSসঠিকভাবে UIDs এবং GIDs অনুবাদ নেই। তবে কার্যকর অধিকারগুলি অনুবাদ করা হয় না এবং এমনকি যদি lsআপনাকে নিজের ডিরেক্টরি বা ফাইলগুলি দেখায় তবে আপনি পরিবর্তন করতে পারবেন না কারণ সংখ্যাসূচক আইডি মেলে না এবং AUTH_SYSসংখ্যাসূচক আইডি সহ অ্যাক্সেস রাইটস ব্যবহার করা হয়।
টমাস

1
@ থমাস সঠিক। আইডি ম্যাপিংটি যখন ছাঁটাই করা হয় sec=sys, তখন আইডি ম্যাপিগ হিসাবে ফাইলগুলি উপস্থিত হয় তবে লেখার কাজটি এমন হয় যেন কোনও আইডি ম্যাপিং ঘটছে না। অন্য একটি রেফারেন্স : "যদিও ইউআইডি / গিড নম্বরগুলি উপরের স্ট্রিংগুলিতে এনটিএসভি 4 প্রোটোকলে আর ব্যবহার করা হচ্ছে না, তারা এখনও ডিপিএলটি এটিউথএসওয়াইএস (সেকেন্ড = সিএস) ব্যবহার করার সময় আরপিসি প্রমাণীকরণ ক্ষেত্রগুলিতে থাকবে such যেমন, এক্ষেত্রে ব্যবহারকারী / গোষ্ঠীর নাম এবং নম্বর স্পেস উভয়ই ক্লায়েন্ট এবং সার্ভারের মধ্যে সামঞ্জস্যপূর্ণ হতে হবে ""
ইরফান লতিফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.