উত্তর:
Chmod ইউটিলিটির GNU সংস্করণটি একটি ফাইল ( ) থেকে অন্য একটি ( ) থেকে মোডটি অনুলিপি করতে RFile
পারে file
।
chmod --reference=RFile file
অন্যান্য জায়গাগুলির মধ্যে বেশিরভাগ লিনাক্স বিতরণ এবং সাইগউইনগুলিতে জিএনইউ কোর্টিলগুলি পাওয়া যায় til সমস্ত chmod বাস্তবায়ন এই বিকল্পটি সরবরাহ করে না।
--reference
বিকল্প গনুহ সংস্করণ অন্তর্ভুক্ত করা হয়েছে; ওএসএক্স সম্ভবত একটি চিএমড ব্যবহার করবে যা এর পরিবর্তে বিএসডি থেকে উদ্ভূত হয়েছিল। ওএসএক্স ম্যান
cp -dpR <source-file> <dest-file>
অনুভূত হয়েছে যে এখানে উল্লেখ করা কার্যকর হবে যে কোনও ফাইল অনুলিপি করার সময়, ফাইলের পাশাপাশি অনুমতিগুলির অনুলিপি করা হবে
আমি এটি নিয়ে এসেছি:
find $SOURCE -mindepth 1 -printf 'chmod --reference=%p\t%p\n'|sed "s/\t$SOURCE/ $DEST/g"|sh
এটি পুরোপুরি বুলেট প্রুফ নয়, তবে আমার যা প্রয়োজন তা করে।
এটা চেষ্টা কর:
find /PATH/TO/TARGET -exec chmod --reference /PATH/TO/SOURCE/{} {} \;
এটি পুনরাবৃত্তভাবে উঠে যাবে এবং প্রতিটি ফাইলকে chmod করবে, যদি দুটি ডিরেক্টরি ফাইলের সাথে মেলে না তবে আপনি প্রচুর "এ জাতীয় ফাইল বা ডিরেক্টরি নেই" ত্রুটি দেখতে পাবেন।
find /home/myubuntuuser/Desktop/test1 -exec chmod --reference /home/myubuntuuser/Desktop/test2/{} {} \;
আপনি getfacl
ফাইল অনুমতি, মালিক, গোষ্ঠী এবং অতিরিক্ত এসিএল (অ্যাক্সেস নিয়ন্ত্রণের তালিকা) এর সম্পূর্ণ তালিকা পুনরুদ্ধার করতে ব্যবহার করতে পারেন ।
$ getfacl filename.txt
# file: filename.txt
# owner: score
# group: score
user::rw-
group::---
other::---
যদি আপনি সেই আউটপুট কোনও ফাইলে সংরক্ষণ করেন (উদাহরণস্বরূপ acl.txt
), আপনি তারপরে এই ফর্ম্যাটটি থেকে পুনরুদ্ধার করতে পারেন setfacl --restore acl.txt
। আপনি যদি কেবল একটি একক ফাইল পুনরুদ্ধার করতে চান এবং সেই ফাইলটির মূলের সাথে আলাদা ফাইল নাম রয়েছে তবে আপনি setfacl --set-file acl.txt filename.txt
( filename.txt
নতুন ফাইলের নামটি কোথায় ) ব্যবহার করতে চাইবেন ।
মূল অনুমতিগুলি এতে সংরক্ষণ করুন acl.txt
:
$ getfacl filename.txt > acl.txt
অনুমতিগুলি ওভাররাইট করুন (প্রদর্শনের জন্য; এটি কেবলমাত্র যাতে আপনি দেখতে পান যে এটি পরবর্তী ধাপে পুনরুদ্ধার কাজ করে)
$ chmod 777 filename.txt
$ sudo chown nobody:root filename.txt
$ ls -l filename.txt
-rwxrwxrwx 1 nobody root 0 Jan 8 14:24 filename.txt
এর setfacl
থেকে সঠিক অনুমতিগুলি পুনরুদ্ধার করতে ব্যবহার করুন acl.txt
:
$ sudo setfacl --restore acl.txt
$ ls -l filename.txt
-rw------- 1 score score 0 Jan 8 14:24 filename.txt
ফাইলের # file:
নামটি তৈরি করা মন্তব্য থেকে নেওয়া হয়েছে getfacl
, সুতরাং কমান্ড লাইনে এটি নির্দিষ্ট করার দরকার নেই।
আপনি যদি সেই অনুমতিগুলি কোনও অন্য কোনও ফাইলে পুনরুদ্ধার করতে চান তবে আপনি এটির --set-file
পরিবর্তে ব্যবহার করতে পারেন --restore
:
$ setfacl --set-file acl.txt second_filename.txt
আপনি যদি কিছু ফাইলগুলিতে অনুমতিগুলি ওভাররাইট করে শেষ করেন /usr
তবে আপনি কী ফাইলগুলি ওভাররাইট করেছেন তা আপনি জানেন না, আপনি সাধারণত একইভাবে কনফিগার করা সিস্টেম থেকে পুনরুদ্ধার করে এটি ঠিক করতে পারেন।
ওয়ার্কিং সিস্টেম থেকে ব্যাকআপ অনুমতিগুলি (দ্রষ্টব্য: getfacl
আপেক্ষিক পাথ উত্পন্ন করে, তাই আপনাকে cd
উভয় মেশিনে সামঞ্জস্যপূর্ণ স্থানে নিশ্চিত করুন)
# cd /
# getfacl -R usr > /root/acls.txt
ভাঙা অনুমতি নিয়ে এসিএল ডাম্পটি সিস্টেমে অনুলিপি করুন
$ scp root@working-system:/root/acls.txt .
$ scp acls.txt root@broken-system:/root/
পরিচিত ভাল মেশিনের সাথে ভাঙা অনুমতিগুলি ওভাররাইট করতে এসিএল ডাম্প পুনরুদ্ধার করুন
# cd /
# setfacl --restore /root/acls.txt