যদি আমি একটি বাশ স্ক্রিপ্ট ফাইলটি কার্যকর করি, তবে বাশ স্ক্রিপ্টের ভিতরে থাকা সমস্ত কমান্ডগুলিও সুডো হিসাবে কার্যকর হবে?


30

আমি বাশে একটি স্বয়ংক্রিয়-পোস্ট-স্ক্রিপ্ট লিখতে চাই ( post-install.shউদাহরণস্বরূপ, ডাকা হয় )। স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে সংগ্রহস্থলগুলি সংযোজন এবং আপডেট করবে, প্যাকেজ ইনস্টল ও আপডেট করবে, কনফিগার ফাইলগুলি সম্পাদনা করবে ইত্যাদি will

এখন, আমি যদি এই স্ক্রিপ্টটি কার্যকর করি, উদাহরণস্বরূপ sudo post-install.sh, আমাকে কেবল sudoএকবারই পাসওয়ার্ডের জন্য অনুরোধ করা হবে, বা আমাকে sudoস্ক্রিপ্টের অভ্যন্তরে কোনও আদেশের অনুরোধে পাসওয়ার্ড প্রবেশ করাতে হবে , যার sudoঅনুমতি দরকার? অন্য কথায়, বাশ স্ক্রিপ্টের ভিতরে থাকা কমান্ডগুলি ফাঁসির অনুমতিগুলি 'উত্তরাধিকারী' করে, তাই বলার জন্য?

এবং, যদি তারা সত্যই করে থাকে , তবে কি এখনও কোনও সম্ভাবনা রয়েছে যে sudoঅনুমতিগুলি শেষ হয়ে যাবে (যদি উদাহরণস্বরূপ, একটি নির্দিষ্ট কমান্ডের sudoসময়সীমা অতিক্রম করতে যথেষ্ট সময় নেয় )? অথবা প্রাথমিক sudoপাসওয়ার্ড প্রবেশদ্বার পুরো স্ক্রিপ্টের সম্পূর্ণ সময়কালের জন্য স্থায়ী হবে ?


4
আপনি এই কাজের জন্য বিশেষভাবে ডিজাইন করা কিছু সরঞ্জাম চেক করতে আগ্রহী হতে পারেন। ৩ টি সাধারণ জিনিস হ'ল পুতুল, শেফ এবং প্রাচীন।
স্পুডার

@spuder, এবং বৃহত্তর মাপের, এন্টারপ্রাইজ-স্তরের আর্কিটেকচার এবং আপনার কনফিগারেশন ব্যবস্থাপনা নিরাপত্তার জন্য, আপনি (না হৃদয়ের ভীরু জন্য, কিংবা এক বন্ধ কমান্ড।) CFEngine 3. ব্যবহার করতে পারেন
ওয়াইল্ডকার্ড

উত্তর:


38

প্রশ্নঃ # 1: আমাকে কি কেবল একবার সুডো পাসওয়ার্ডের জন্য জিজ্ঞাসা করা হবে, বা আমাকে স্ক্রিপ্টের ভিতরে একটি কমান্ডের অনুরোধে সুডো পাসওয়ার্ড লিখতে হবে, যার জন্য সুডোর অনুমতি দরকার?

হ্যাঁ, একবার, আপনার স্ক্রিপ্টটি চলমান সময়কালের জন্য।

দ্রষ্টব্য: আপনি যখন শংসাপত্রাদি সরবরাহ করেন sudoতখন শেলটির মধ্যে আপনি যে পাসওয়ার্ডটি টাইপ করেছিলেন তার মধ্যে প্রমাণীকরণ সাধারণত 5 মিনিটের জন্য ভাল। অতিরিক্তভাবে এই শেল থেকে কার্যকর হওয়া কোনও শিশু প্রক্রিয়া, বা শেলের (আপনার ক্ষেত্রে) চালিত কোনও স্ক্রিপ্টও উন্নত স্তরে চলতে পারে।

প্রশ্নঃ # 2: এখনও কি কোনও সম্ভাবনা আছে যে সুডোর অনুমতিগুলি শেষ হয়ে যায় (উদাহরণস্বরূপ, কোনও নির্দিষ্ট কমান্ড সুডোর সময়সীমা পেরিয়ে যাওয়ার জন্য যথেষ্ট সময় নেয়)? বা পুরো স্ক্রিপ্টের সম্পূর্ণ সময়কালের জন্য প্রাথমিক সুডো পাসওয়ার্ড প্রবেশদ্বার স্থায়ী হবে?

না তারা স্ক্রিপ্টের মধ্যে টাইমআউট হবে না। কেবলমাত্র যদি আপনি ইন্টারেক্টিভভাবে শেলের মধ্যে শংসাপত্রগুলি সরবরাহ করা হয়েছিল সেখানে সেগুলি টাইপ করছিলেন। প্রত্যেকবারsudo এই শেলের মধ্যেই কার্যকর করা হয়, সময়সীমা পুনরায় সেট করা হয়। তবে আপনার ক্ষেত্রে সেগুলি শংসাপত্রগুলি এত দিন থেকে যাবে যতক্ষণ না স্ক্রিপ্টটি এর মধ্যে থেকে কমান্ড চালাচ্ছে এবং চলছে।

সুডো ম্যান পেজ থেকে অংশ

এই সীমাটি নীতি-নির্দিষ্ট; sudoers সুরক্ষা নীতি জন্য ডিফল্ট পাসওয়ার্ড প্রম্পট সময়সীমা 5 মিনিট।


1
কিউ 1 এর উত্তর "না, আপনাকে আবার অনুরোধ করা হবে না"।
dannysauer

@ উদ্যানসৌয়ের - তার প্রশ্নটি আবার পড়ুন। আমি হ্যাঁ বলছি কেবল একবার পাসওয়ার্ডের জন্য অনুরোধ জানানো হবে!
SLM

প্রশ্নটি বলছে "এটি কি একটি বা খ", এবং কেবল "হ্যাঁ" বললে এটি স্পষ্ট হয় নি যদি এটি "হ্যাঁ, এ" বা "হ্যাঁ, খ" হয়। ভবিষ্যতের পাঠকদের জন্য কেবল বিষয়গুলি স্পষ্ট করার চেষ্টা করছি। : ডি
ড্যানিসাউয়ার

@ ল্যানডাইসৌয়ার - আপডেট দেখুন।
slm

1
এই নতুন প্রশ্নটি হ'ল : স্ট্যাকওভারফ্লো . com / প্রশ্নস / 3522341/…sudo -u $(logname) <command>কাজ করা উচিত.
গৌথিয়ার

17

bashএবং এর সমস্ত চাইল্ড প্রক্রিয়াগুলি সুপারসুমারের অনুমতি নিয়ে চলবে। সুতরাং আপনার বাশ স্ক্রিপ্টে কমান্ডগুলির জন্য আপনাকে একটি পাসওয়ার্ড পুনরায় প্রবেশের প্রয়োজন হবে না।

sudoসময়সীমার শুধুমাত্র (পরে) এর পৃথক আবাহন ক্ষেত্রে প্রযোজ্য sudo। এটি আপনার ইতিমধ্যে চলমান বাশ প্রক্রিয়া, বা এর বংশধরদের কোনওটিকে প্রভাবিত করবে না।


3

এই উত্তরগুলি সম্ভবত সঠিক। (যতদূর আমি সচেতন) ব্যাশ স্ক্রিপ্ট প্রয়োজন তৈরি করতে যাইহোক, এই সাধারণত-ব্যবহৃত উপায় নয় sudoঅনুমতির। সাধারণত, স্ক্রিপ্টের শীর্ষে আপনি ধরে নেন যে এটি sudoঅনুমতি নিয়ে চালানো হয়নি এবং তার পরিবর্তে sudo -vনিজেকে কল করুন (যা তাদের পাসওয়ার্ডের জন্য ব্যবহারকারীকে অনুরোধ করবে) একটি sudo'সেশন' সেট আপ করতে । echoপ্রম্পটের আগে আপনি কিছু ব্যাখ্যামূলক পাঠ্য বা ব্যবহারকারীকে আপনার প্রয়োজনীয় তথ্য জানানোর জন্য স্যুইচটি sudoদিয়ে নিজের প্রম্পটটি ওভাররাইড করতে -pপারেনsudo কিছু কমান্ডের জন্য অ্যাক্সেস ।

তারপরে, আপনার স্ক্রিপ্টে আপনার sudoপ্রয়োজনীয় পাসওয়ার্ডের অনুরোধ ছাড়াই যে কমান্ডগুলির প্রয়োজন হবে (এবং কেবলমাত্র সেই আদেশগুলি প্রয়োজন যা প্রয়োজন তা কল করা উচিত) fine আপনি যদি মনে করেন যে আপনার স্ক্রিপ্টে (তাদের নিজস্ব ব্যবহার নির্বিশেষে sudo) একসাথে চলমান কমান্ডগুলির একটি গ্রুপ সুডোর সময়সীমা ছাড়িয়ে যাবে, sudo -vতবে এক ধরণের 'বেঁচে থাকা' জারির জন্য আপনি মাঝখানে কল করতে পারেনsudo ' 'সেশন '।

যদি sudoস্ক্রিপ্ট চলাকালীন 'সেশন' এর মেয়াদ শেষ হয়ে যায়, আপনি পরের বার স্ক্রিপ্টে একটি sudo কমান্ড দেওয়ার পরে ব্যবহারকারীকে কেবল তাদের পাসওয়ার্ডের জন্য জিজ্ঞাসা করা হবে।


1
বলুন যে স্ক্রিপ্টের একটি পদক্ষেপ একটি সম্পূর্ণ নতুন লিনাক্স কার্নেল তৈরি করছে, যা বলতে দুই ঘন্টা সময় নিতে পারে। অধিবেশনটি বাঁচিয়ে রাখা একটি চ্যালেঞ্জ হতে পারে, আপনি কীভাবে এটি মোকাবেলা করবেন?
গৌথিয়ার

আপনি পারবেন না। কিন্তু পরের বার আপনি যখন ফোন sudo -vকরবেন তখন ব্যবহারকারীকে তাদের পাসওয়ার্ডের জন্য আবার জিজ্ঞাসা করবে। আমার মতে সবচেয়ে খারাপ সমস্যা নয়। হতে পারে সহায়ক হতে, ব্যবহারকারীকে প্রক্রিয়া সম্পর্কে সচেতন করা সহজ হতে পারে।
অ্যালেক্সারসেল

এর বিপরীতটি হ'ল ব্যবহারকারীকে অন্যান্য উত্তরের জন্য সুডো সহ স্ক্রিপ্টটি কল sudo -u $SUDO_USERকরতে হবে এবং তারপরে সমস্ত নন-রুট প্রয়োজনীয় কমান্ডগুলি উচ্চ-উন্নত করে চালানো হবে। দুঃখজনকভাবে এটি আরও কোড যুক্ত করে, তবে দীর্ঘ চলমান প্রক্রিয়াতে মূল জিনিসগুলি সম্পাদন করার একমাত্র নির্ভরযোগ্য উপায়।
ড্রাগন 788

আমি অনুমান করি যে আমার স্পষ্ট করে দেওয়া উচিত, এর অপর একটি উপায় হ'ল স্ক্রিপ্টের শুরুতে একবার সুডো কল করা হয়েছিল যাতে ফাইলটি অনুলিপি করার আগে এটির বৈধতা রয়েছে তা নিশ্চিত করার জন্য একটি অস্থায়ী ফাইলটি /etc/sudoers.dব্যবহার visudo -c -f /tmp/tempsudoersকরা যায় এবং তারপরে ফাইলটি একবার সরিয়ে ফেলতে হবে ensure (এস্কুলেশন অপব্যবহার করা যাবে না তা নিশ্চিত করার জন্য প্রস্থান / ত্রুটির ফাঁদ ব্যবহার করে)। সর্বাধিক সুরক্ষিত এবং সুরক্ষিত বাস্তবায়ন কেবলমাত্র আপনার ব্যবহারকারীকে NOPASSWDফাইল তৈরির জন্য প্রতিটি কমান্ড / আর্গুমেন্ট সংরক্ষণ করে একটি পাসওয়ার্ড ছাড়াই নির্দিষ্ট স্ক্রিনে সুনির্দিষ্ট কমান্ডগুলি চালানোর অনুমতি দেয় ।
ড্রাগন 788

কিছুটা দেরীতে এখানে @ গৌথিয়রে ফিরে আসবে তবে মনে হবে আমি ভুল ছিলাম যখন যখন আমি বলেছিলাম যে sudoযদি কোনও একক কাজ সময়সীমার চেয়ে বেশি সময় নেয় আপনি সেশনটি বাঁচিয়ে রাখতে পারবেন না । আমি এই কৌশলটি অন্য দিন ম্যাথিয়াস বেনেন্সের ডটফিলসwhile true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null &
রেপোতে এসে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.