সুডো একটি পরিবেশ পরিবর্তনশীল "SUDO_USER" তৈরি করে যা আপনি লগইন হওয়া ব্যবহারকারী (আসলে সুডো কে চালিয়েছিলেন) তা খুঁজে পেতে ব্যবহার করতে পারেন।
আপনাকে সুডোটকে মূলের কাছে ধরে নিয়ে যাওয়া (অন্য ব্যবহারকারীদের কাছেও সুডোর ব্যবহার সম্ভব) আপনি নিম্নলিখিত দুটি পদক্ষেপ স্বয়ংক্রিয় করতে স্ক্রিপ্ট লিখতে পারেন।
cp source target
chown $SUDO_USER target
(আপনি যদি কোনও রুটবিহীন ব্যবহারকারীর সাথে sudo করেন তবে এটি কাজ করবে না কারণ কেবল মূল ফাইলগুলি দিতে পারে))
এটি স্বয়ংক্রিয়ভাবে কাজ করা কিছুটা কাজ হবে। যদি উত্স কোনও একক ফাইল এবং লক্ষ্য কোনও ডিরেক্টরি না হয় তবে আপনার কাজ শেষ হয়ে যায়। আমি ধরে নিয়েছি যে আপনি প্রশ্নটি জিজ্ঞাসা করেছেন কারণ আরও জটিল পরিস্থিতিতে সমস্যাটি কেবল একটি আসল সমস্যা, যেমন: কিছু করার সময়:
cp /path/source/some*files /path/target/directory/
কোন ফাইলগুলি এবং কোন ডিরেক্টরিগুলি পাস করা হয়েছে, কোনটি প্রাক-বিদ্যমান ছিল, কোনগুলি আসলে ওভাররাইট করা হয়েছিল এবং কেবলমাত্র সফলভাবে অনুলিপি করা ফাইলগুলির মালিকানা পরিবর্তন করার জন্য একটি জটিল স্ক্রিপ্ট।
এই কাজ ইতিমধ্যে সম্পন্ন হয়েছে। আপনি ব্যবহার করতে পারেন cpio
- sudo থেকে রুট করার পরে ফাইলগুলি অনুলিপি করতে সিপিও ব্যবহার করুন। সিপিওর অনুলিপি করার জন্য ফাইলগুলির একটি তালিকা প্রয়োজন তাই এটি একটি দুই ধাপের প্রক্রিয়া। নীচে আমি ls
অনুলিপি করার জন্য ফাইলগুলির তালিকা তৈরি করতে ব্যবহার করি ।
ls /path/source/some*files | cpio -pdm --owner $SUDO_USER /path/target/directory/
এর -pdm
অর্থ "পাসথ্রু মোড, প্রয়োজন অনুযায়ী ডিরেক্টরি তৈরি করুন, ফাইল পরিবর্তনের সময় বজায় রাখুন"
--owner $SUDO_USER"
নির্দিষ্ট ব্যবহারকারীদের ফাইলগুলির মালিক হতে পারে।
চূড়ান্ত অপারেন্ড হ'ল ডিরেক্টরিটি যেখানে সিপিওতে অবশ্যই ফাইলগুলি সঞ্চয় করতে পারে।
সিপিও বিস্ময়করতা সম্পর্কে আরও জানতে, এখানে সিপিআইও ম্যানুয়াল পৃষ্ঠাতে যান
একক sudo কমান্ডে এটি করাও সম্ভব। ধরে নিই যে আপনার ব্যবহারকারীর ফাইলগুলি অ্যাক্সেস করার অধিকার রয়েছে, কেবল সিপিও অংশের জন্য sudo ব্যবহার করুন, এটির মতো:
ls /path/source/some*files | cpio -pdm --owner $USER /path/target/directory/
উপরের ক্ষেত্রে আমি $ SUDO_USER এর স্থলে $ ব্যবহারকারী ব্যবহার করছি কারণ সুডো চলার আগে এটি মূল্যায়ন করা হয়। বিকল্পভাবে, যদি ব্যবহারকারীদের ফাইলগুলি তালিকাতে অ্যাক্সেস না থাকে তবে এটি একটি মোড়ক স্ক্রিপ্টে রাখুন এবং র্যাপারটি চালানোর জন্য sudo ব্যবহার করুন। এটি আরও শক্ত হয়ে উঠতে পারে, তবে সহজতম ক্ষেত্রে র্যাপারটি দুটি যুক্তি, একটি উত্স এবং একটি লক্ষ্য নিয়ে নেয়।
এটি "cp_as_user" র্যাপারে যায়:
ls $1 | cpio -pdm --owner $SUDO_USER $2
তারপরে এভাবে মোড়ক ব্যবহার করুন:
sudo cp_as_user "/ path / to / কিছু * ফাইল" / পাথ / থেকে / টার্গেট / ডিরেক্টরি
sudo cat /etc/foo.txt > ~/foo.txt
। ফাইলগুলি কোনও কারণে কেবল রুট দ্বারা পঠনযোগ্য হতে পারে তাই নন-রুট ব্যবহারকারীদের দ্বারা অনুলিপিগুলি পঠনযোগ্য করার সময় সেই কারণটি মনে রাখা উচিত।