বাশ "সত্য" এর উদ্দেশ্য কী "যদি sudo সত্য হয়; তারপর "


20

আমি এই ব্যাশ স্ক্রিপ্ট একসাথে হ্যাক করেছি যা পরীক্ষায় যদি ব্যবহারকারীর সুপারভাইজার সুবিধাগুলি থাকে এবং তারা যদি এটি না চাইতে থাকে। শেষ পর্যন্ত আমি দ্বিতীয় 'if' স্টেটমেন্টটি উল্টানোর চেষ্টা করছি যাতে আমি নিম্নলিখিত দুটি লাইন (ইকো "পাসওয়ার্ড ঠিক আছে" এবং নিম্নলিখিত লাইনের অন্যটি সরিয়ে ফেলতে পারি)

# Root user only
if [[ "$EUID" != 0 ]]; then
    sudo -k # make sure to ask for password on next sudo
    if sudo true; then
        echo "Password ok"
    else
        echo "Aborting script"
        exit 1
    fi
fi

echo "do my ops"

চতুর্থ লাইনে "সত্য" এর উদ্দেশ্য কি কেবল নালিকা-বিবৃতি?

আমার চতুর্থ লাইনে পরীক্ষাটি উল্টানো দরকার, আমি কীভাবে এটি করব? এখানে আমি চেষ্টা করেছি:

if sudo false; then  
if sudo true == false; then
if [!(sudo true)]; then

2
আপনি যদি প্রশ্নটিকে নিম্নমুখী করতে চলেছেন তবে দয়া করে আপনি কি ব্যাখ্যা করতে পারবেন যে আমি প্রশ্নের উন্নতি করতে পারি? এটি কি সঠিক ওভারফ্লো সাইট নয়?
ম্যাট পার্কিন্স

4
ডাউনভোটগুলি কোথা থেকে আসছে তা নিশ্চিত নয়; আপনি কি বিবৃতি উপেক্ষা বা বিবৃতি বাতিল করার চেষ্টা করছেন ? আপনি বলেছেন যে আপনি সত্য / প্রতিধ্বনি এবং "অন্য" উভয় থেকে মুক্তি পেতে চান, সুতরাং আপনার চূড়ান্ত উদ্দেশ্য কী?
জেফ স্ক্যালার হলেন


1
@ ctrl-alt-delor এই লিঙ্কটি অনুসরণ করে দেখে মনে হচ্ছে যে আমার যা করা দরকার তা হল সুডোর সামনে একটি বিস্ময়বোধক চিহ্ন রাখা এবং তারপরে আমি প্রতিধ্বনি এবং অন্যটি উভয়ই সরিয়ে ফেলতে পারি, এবং এখন আমি এটি পরীক্ষা করেছি, যা কার্যকর, ধন্যবাদ।
ম্যাট পার্কিন্স

2
পাস করার সময়, আপনার সম্ভবত ত্রুটি বার্তাকে ত্রুটি প্রবাহে পুনঃনির্দেশ করা উচিত:echo "Aborting script" >&2
টবি স্পিড

উত্তর:


38

trueব্যাশে কোনও কীওয়ার্ড নয়, এটি এমন একটি প্রোগ্রাম যা তাত্ক্ষণিকভাবে একটি সফল প্রস্থান কোড সহ প্রস্থান করে। তেমনিভাবে, falseএমন একটি প্রোগ্রাম যা একটি ব্যর্থ প্রস্থান কোড সহ প্রস্থান করে।

আপনি আপনার টার্মিনাল থেকে উভয় প্রোগ্রাম চালিয়ে চেষ্টা করে দেখতে পারেন, এবং তারপরে $?ভেরিয়েবলটি পড়ে, যাতে শেষ প্রোগ্রামের প্রস্থান কোড থাকে;

true
echo $? # 0
false
echo $? #1

if sudo trueসমমানের নয় if sudo == true। ব্যবহার if sudo trueকরে trueপ্রোগ্রামটি চালাচ্ছে sudoএবং প্রস্থান কোডটি পরীক্ষা করছে।

অতএব:

if sudo false; thenfalseসুডো হিসাবে প্রোগ্রাম চালাচ্ছে । প্রত্যাবর্তন সর্বদা মিথ্যা হবে।

if sudo true == falsetrueযুক্তি দিয়ে ==এবং falseব্যবহার করে প্রোগ্রামটি পরিচালনা করবে sudo। এটি স্পষ্টতই আপনার ইচ্ছা মতো নয়।

if [!(sudo true)] অবৈধ বাক্য গঠন।

আপনি সম্ভবত যা খুঁজছেন তা হ'ল

if ! sudo true;

12
প্রথম বাক্য সামান্য গোঁড়া সংশোধন হিসাবে: ব্যাশ মধ্যে , trueএবং false"builtins" হয়, কমান্ড শেল সরাসরি ব্যাখ্যা করা; সাধারণভাবে ইউনিক্সের মতো সিস্টেমে এগুলি ফাইল সিস্টেমে স্ট্যান্ডেলোন প্রোগ্রাম হিসাবেও বিদ্যমান। পার্থক্যটি এখানে এতটা গুরুত্বপূর্ণ নয়, তবে যতদূর আমি জানি, sudo trueব্যাশ বিল্টিন নয়, স্ট্যান্ডেলোন প্রোগ্রাম চালাবেন not
আইএমএসওপি

31
পিএস: আমার পছন্দের সংক্ষিপ্তসারগুলি trueএবং falseতাদের ম্যান পেজগুলির শিরোনাম: true - do nothing, successfullyএবংfalse - do nothing, unsuccessfully
আইএমএসওপি ২

3
@ আইএমএসওপি এটি গভীর।
ব্রেনপ্লট

2
যদি trueঅস্তিত্ব না থাকে, তবে প্রশ্নের কোডটি দেখায় যে কেন এটির আবিষ্কারের প্রয়োজন হতে পারে! এটি একটি ন্যূনতম প্রোগ্রাম যা কেবলমাত্র যদি চালু করা সিস্টেমটি সত্যিকার অর্থে বিরক্ত হয় তবে ব্যর্থ হতে পারে। সুতরাং কারও অ্যাক্সেস শংসাপত্রগুলি ঠিক আছে কিনা তা প্রতিষ্ঠিত করতে এটি ব্যবহার করতে পারেন।
নিগেল 222

2
এটিএন্ডটি এসওয়াইএসভি ইউনিক্সে, "সত্য" হ'ল শেল স্ক্রিপ্ট / বিন / ট্রু, যা মন্তব্যে একটি বৃহত্তর কপিরাইট বিজ্ঞপ্তি ... এবং অন্য কিছুই নয়।
লি ড্যানিয়েল ক্রকার

21

আমি মনে করি গ্রহণযোগ্য উত্তরটি আসলে আপনার প্রশ্নের উত্তর দেয়নি?

এটি করার উদ্দেশ্যটি হ'ল আপনি যা বাস্তবে পারবেন তা পরীক্ষা করা sudo

এই চেকটি কীভাবে সম্পাদিত হয় trueতা গ্রহণযোগ্য উত্তরে বর্ণিত প্রোগ্রামের মাধ্যমেই হয়।


1
মূলত, এটি। বিকল্পটি ব্যবহারকারী sudoers গ্রুপে আছে কিনা তা যাচাই করা যেতে পারে sudo true, তবে সামান্য চালনাও একটি উপায়ের পক্ষে যথেষ্ট সহজ, যদিও কিছুটা হ্যাকি।
সের্গেই কলডিয়াজন্য

3
নোট করুন যে এটিও sudoইনস্টল করা প্রয়োজন , সুতরাং চেকগুলি সম্পূর্ণ সমতুল্য হবে না ... আপনি sudoers গ্রুপে থাকতে পারেন এবং এখনও sudo করতে সক্ষম নন। (এটি বিশেষত যদি আপনি উদাহরণস্বরূপ কোনও ন্যূনতম রুটফ টারবাল থেকে একটি নতুন চিত্র সেটআপ করার জন্য একটি স্ক্রিপ্ট লিখতে পারেন তবে এতে সুডো নাও থাকতে পারে))
মেহেরদাদ ২

1
আপনি sudo করতে না পারলে ওপি বাদ দিতে চায় এবং দু'টি লাইন বাদ দিয়ে দুটি লাইন থেকে মুক্তি পেতে চায়।
ম্যাকেনজম

2
এবং, বিপরীতে, আপনি sudo(ব্যক্তিগতভাবে বা অন্য কোনও দলের সদস্য হিসাবে ) তালিকাভুক্ত থাকলে sudoers গ্রুপে না থাকাতে আপনি সক্ষম হতে পারেন /etc/sudoers। তবে এমনকি sudo trueঅচল নয়, কারণ sudoকেবলমাত্র নির্দিষ্ট আদেশের জন্য অ্যাক্সেস দেওয়া যেতে পারে, তাই আপনি সক্ষম হতে পারেন sudo trueতবে sudo something_elseএটির বিপরীতে। আপনি যে কমান্ডটি চালিয়ে যেতে চান তা চালানোর চেষ্টা করে লোহা-পরিহিত কোনও উপায় নেই sudo
ডেভ শেরোহমান

2
এছাড়াও, আপনি sudoersগ্রুপে থাকতে পারেন এবং সক্ষম হতে পারবেন না sudoকারণ sudoersগ্রুপটি sudoersফাইলে তালিকাভুক্ত নয় । sudoতার নামে চারটি অক্ষরযুক্ত একটি গোষ্ঠী কোনও গোষ্ঠী ব্যবহার করে কোনও নির্দিষ্ট জিনিস বা কিছু করতে পারে কিনা তার বৈধ ইঙ্গিত নেই sudo
jrw32982 মনিকা

5

আমি যেমন এই স্ক্রিপ্টে দেখতে পাচ্ছি। এটি কেবল সুডো সক্ষম হয়েছে কিনা তা খতিয়ে দেখছে, এটাই ..

সত্য ঠিক সত্য ফেরায়।

সুতরাং এই ক্ষেত্রে যদি তাদের কোনও কমান্ড চালানোর দরকার হয় sudo দিয়ে এটি প্রথমে যাচাই করে প্রথমে পাসওয়ার্ডটি জিজ্ঞাসা করে।

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

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

'ইকো পাসওয়ার্ড ওকে' এটিও প্রদর্শন করে। শেল স্ক্রিপ্ট আর পাসওয়ার্ড জিজ্ঞাসা করবে না।


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

আমি লিখেছিলাম: "সুতরাং এই ক্ষেত্রে যদি তাদের কোনও কমান্ড চালানোর দরকার হয় যা প্রথমে sudo দিয়ে পরীক্ষা করা উচিত, কেবল একবার একবার পাসওয়ার্ড জিজ্ঞাসা করতে হবে।"
লুসিয়ানো অ্যান্ড্রেস মার্টিনি ২
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.