আমার একটি দীর্ঘ এবং দীর্ঘ-চলমান বাশ স্ক্রিপ্ট রয়েছে যেখানে মুষ্টিমেয় কমান্ডগুলি রুট হিসাবে চালানো দরকার এবং বেশিরভাগ কমান্ডকে সুডোর আগে নিয়মিত ব্যবহারকারীর মতো চালানো দরকার, কারণ এটি ফাইলের মালিকানা এবং এ জাতীয় গোলমাল করবে।
আমি কিছু পদ্ধতি নিয়ে এসেছি, তবে তাদের প্রত্যেকেরই কিছু সমস্যা আছে
পদ্ধতি 1: ফাইলের অভ্যন্তরে sudo ব্যবহার করা
#!/bin/bash
sudo echo "I must be run by root"
touch needsToBeOwnedByUser1
echo "needs to be run by user"
sleep 1000
sudo echo "I, again, must be run by root"
কোডটি যেভাবে লেখা হচ্ছে তাতে এটি দেখতে ভাল লাগবে। sudoআসলে কয়েকটি রুট দ্বারা চালিত হওয়া দরকার এমন কয়েকটি বক্তব্যের আগে লেখা হয়েছিল, তবে প্রতিটি sudoকলের মধ্যে সময় যদি খুব দীর্ঘ sudoহয় তবে আবার একটি পাসওয়ার্ড চাইবে । এছাড়াও, যদি প্রথম sudoব্যর্থতার ব্যর্থতা হয়, যেমন একটি অবৈধ পাসওয়ার্ডের কারণে, স্ক্রিপ্টের বাকী অংশটি এখনও কার্যকর হয়।
পদ্ধতি 2: ফাইল কল করতে sudo ব্যবহার করে এবং তারপরে যখন প্রয়োজন হয় তখন মূল ব্যবহারকারীটিতে ফিরে আসুন
#!/bin/bash
echo "I must be run by root"
su username -c 'touch needsToBeOwnedByUser1'
su username -c 'echo "needs to be run by user"'
su username -c 'sleep 1000'
echo "I, again, must be run by root"
এটিও স্তন্যপান করে, কারণ আমার su username -cপ্রায় প্রতিটি লাইনের সামনে যোগ করা দরকার । এছাড়াও আসল ব্যবহারকারীর নাম সন্ধান sudoকরা সম্ভব তবে জটিল।
একটি ভাল উপায় আছে কি?
সম্পাদনা: আমি কী বলছি তা দেখাতে আমি এখানে কেবলমাত্র ছোট, অযৌক্তিক স্ক্রিপ্টগুলি পোস্ট করেছি। প্রকৃত স্ক্রিপ্টে আমার কয়েকটি লাইন রয়েছে যার জন্য সুডো (পরিষেবাগুলি শুরু করা এবং বন্ধ করা) দরকার রয়েছে, কিছু লাইন যেখানে সুডো রয়েছে তাতে কিছু আসে যায় না এবং বেশ কয়েকটি লাইনই সত্যই সুডো ছাড়া চালানো দরকার।
man sudo? -v, --validate 'ব্যবহারকারীর ক্যাশেড শংসাপত্রগুলি আপডেট করুন, প্রয়োজনে ব্যবহারকারীকে প্রমাণীকরণ করুন। সুডোয়ার্স প্লাগইনের জন্য এটি ডিফল্টরূপে আরও 15 মিনিটের জন্য সুডোর সময়সীমা প্রসারিত করে তবে কোনও কমান্ড চালায় না। সমস্ত সুরক্ষা নীতিগুলি ক্যাশেড শংসাপত্রগুলিকে সমর্থন করে না '' (আপনি যদি এটি প্রায়শই চালান তবে সুডো প্রমাণীকরণের সময়সীমা শেষ হওয়া উচিত নয়))
sudoযদি স্ক্রিপ্টটিকে উচ্চতর অনুমতির প্রয়োজন হয় তবে এটি চালান । তবেsu username -cএকটি চালাতে স্যুইচ করার কোনও মানে নেইecho। অন্য কথায়, এটি [XY] এর মতো শোনাচ্ছে। আপনি কী সম্পাদনা করতে এবং ব্যাখ্যা করতে পারবেন যে আপনার স্ক্রিপ্টটি আসলে কী করবে এবং আপনি কেন এত ঘন ঘন ব্যবহারকারীদের স্যুইচিংয়ের প্রয়োজন মনে করেন?