ক্রোন কেন আমার স্ক্রিপ্টে নীরবে সুডো স্টাফ চালাতে ব্যর্থ হয়?


29

আমার কাছে একটি অ-সুযোগ সুবিধাযুক্ত ব্যবহারকারীদের ক্রন্টব থেকে চালিত স্ক্রিপ্ট রয়েছে যা কিছু কমান্ড ব্যবহার করে অনুরোধ করে sudo। এটি না করে বাদে। স্ক্রিপ্টটি ঠিকঠাক চলতে থাকে তবে sudo'ed কমান্ড নিঃশব্দে ব্যর্থ হয়।

  • স্ক্রিপ্টটি সন্দেহভাজন ব্যবহারকারী হিসাবে শেল থেকে পুরোপুরি চলে।

  • সুডোর কোনও পাসওয়ার্ডের দরকার নেই। প্রশ্নে থাকা ব্যবহারকারীকে (root) NOPASSWD: ALLপ্রবেশাধিকার দেওয়া হয়েছে /etc/sudoers

  • ক্রোন স্ক্রিপ্টটি চালাচ্ছে এবং সম্পাদন করছে। একটি সাধারণ যোগ করা date > /tmp/logসঠিক সময়ে আউটপুট উত্পাদন করে।

  • এটি কোনও অনুমতি সংক্রান্ত সমস্যা নয়। আবার স্ক্রিপ্টটি কার্যকর করা হয়, কেবলমাত্র sudo'ed কমান্ড নয়।

  • এটি কোনও পথের সমস্যা নয়। চলমান envস্ক্রিপ্ট ভিতর থেকে শো সঠিক চালানো হচ্ছে $PATHপরিবর্তনশীল যে উবুন্টু পাথ অন্তর্ভুক্ত করা হয়েছে। পুরো পথ ব্যবহার করে এটি চালানো কোনও উপকারে আসে না। কার্যকর করা কমান্ডটির পুরো পথের নাম দেওয়া হচ্ছে।

  • এসটিডিআরআর সহ সুডো কমান্ডের আউটপুট ক্যাপচার করার চেষ্টা করা কোনও কার্যকর দেখায় না। sudo echo test 2>&1 > /tmp/logস্ক্রিপ্টে যুক্ত করা একটি ফাঁকা লগ তৈরি করে।

  • সুডো বাইনারি নিজেই জরিমানা সম্পাদন করে এবং স্বীকৃতি দেয় যে স্ক্রিপ্টের ভিতরে ক্রোন থেকে চালিত হওয়ার পরেও এটির অনুমতি রয়েছে। sudo -l > /tmp/logস্ক্রিপ্টে যুক্ত করা আউটপুট উত্পাদন করে:

    ব্যবহারকারী ec2- ব্যবহারকারী এই হোস্টটিতে নিম্নলিখিত কমান্ডগুলি চালাতে পারে:
    (রুট) NOPASSWD: সমস্ত

কমান্ডের প্রস্থান কোডটি পরীক্ষা করে পরীক্ষা করে $?দেখা যায় যে এটি একটি ত্রুটি (প্রস্থান কোড 1:) ফিরিয়ে দিচ্ছে, তবে কোনও ত্রুটি উত্পন্ন হয়নি বলে মনে হচ্ছে। একটি সাধারণ কমান্ড /usr/bin/sudo /bin/echo testএকই ত্রুটি কোড প্রদান করে।

আর কি হতে পারে?

এটি সম্প্রতি তৈরি একটি ভার্চুয়াল মেশিন যা সর্বশেষতম অ্যামাজন লিনাক্স এএমআই চালায় running ক্রোনটব ব্যবহারকারীর অন্তর্ভুক্ত ec2-userএবং sudoers ফাইলটি ডিস্ট্রিবিউশন ডিফল্ট।


1
আমি একটি সমাধান সম্পর্কে কথা বলতে যাচ্ছিলাম কিন্তু তখন আমি পড়েছিলাম The user in question has (root) NOPASSWD: ALL access granted in /etc/sudoersএবং আমার মস্তিষ্ক পড়া চালিয়ে যাওয়ার জন্য খুব জোরে চিৎকার শুরু করে।
শাদুর

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

1
তারপরে আমি প্রথমে আপনাকে যা করতে পরামর্শ দিচ্ছি তা হ'ল sudoস্ক্রিপ্টে আপনার প্রয়োজনীয় কমান্ডগুলির জন্য সীমাবদ্ধ অধিকার / কেবল / একটি পৃথক ব্যবহারকারী সেট আপ করা এবং তাদের লগইন ক্ষমতা সম্পূর্ণরূপে অক্ষম করা।
শাদুর

যদি আপনার রুট থাকে এবং আপনি ক্রোন জবটি রুট হিসাবে চালিত করতে চান তবে কেন এটি একে ব্যবহারকারীর ক্রন্টব এ রাখবেন? রুটের ক্রোনটব কি আরও উপযুক্ত হবে না? বা / ইত্যাদি / ক্রন্টব?
কেস

@ ক্রেইগস্যান্ডার্স: আমি ক্রোন জবকে মূল হিসাবে চালাতে চাই না, আসলে এর বেশিরভাগটি ব্যবহারকারী হিসাবে চালানো উচিত। প্রশ্নটি মূল হিসাবে কাজ চালানোর বিষয়ে নয়, একটি স্ক্রিপ্ট সম্পর্কে যা বিশেষত একটি সুডোর মাধ্যমে একটি ফাংশনে অ্যাক্সেস করে।
কালেব

উত্তর:


39

সুডোর কাছে অনুমতি সংক্রান্ত ফাইলটিতে কিছু বিশেষ বিকল্প রয়েছে, যার মধ্যে একটি টিটিওয়াইয়ের অভ্যন্তরে চলছে এমন শাঁসগুলির ব্যবহারের উপর নিষেধাজ্ঞার অনুমতি দেয় যা ক্রোন নয়।

অ্যামাজন লিনাক্স এএমআই সহ কয়েকটি ডিস্ট্রো এটি ডিফল্টরূপে সক্ষম করেছে। /etc/sudoersফাইল ভালো কিছু দেখতে হবে:

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

আপনি যদি sudo কমান্ডের পরিবর্তে শেল স্ক্রিপ্টের স্তরে STDERR এ আউটপুট ক্যাপচার করেন তবে আপনি এই জাতীয় বার্তা মনে হবেন:

দুঃখিত, সুডো চালানোর জন্য আপনার অবশ্যই একটি টিটিই থাকতে হবে

সমাধানটি হ'ল এই বিকল্পগুলি অপসারণ বা মন্তব্য করে সুডোকে টিটিওয়াই নন পরিবেশে কার্যকর করতে দেওয়া:

#Defaults    requiretty
#Defaults   !visiblepw

আমি নিশ্চিত করতে পারি যে সেন্টোসের স্থানে এই বিধিনিষেধ রয়েছে।
এউইউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.