এই প্রশ্নটি ইতিমধ্যে অনেকবার জিজ্ঞাসা করা হয়েছে বলে মনে হয়, তবে অন্য উত্তরগুলি আমার কাছে প্রযোজ্য হয়নি।
মূলত আমি সবেমাত্র একটি নতুন এনএফএসভি 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
তবে এতে কোনও পার্থক্য দেখা যায় না।