শেল স্ক্রিপ্ট: এটির ভিতরে সুডো ব্যবহার করে এটি সুডো দিয়ে চালান?


13

শেল স্ক্রিপ্ট লেখার সময়, এতে কিছু না হলেও সমস্ত কমান্ডের জন্য অতিরিক্ত ব্যবহারকারীর সুবিধাগুলি প্রয়োজন

  • সুপার কমান্ডগুলির জন্য সুডো যুক্ত করুন যার জন্য অতিরিক্ত ব্যবহারকারীর সুবিধাগুলি প্রয়োজন, এবং শেল স্ক্রিপ্টটি সুডো ছাড়াই চালান, বা

  • সুপার কমান্ডগুলির জন্য এমন কমান্ডগুলিতে সুডো যুক্ত করবেন না, তবে শেল স্ক্রিপ্টটি sudo দিয়ে চালান?

দ্বিতীয় উপায়ে আমাকে কেবল একবার আমার পাসওয়ার্ড সরবরাহ করতে হবে, তবে স্ক্রিপ্টের সমস্ত কমান্ডগুলি সুপারিশকারী প্রিভিলেজগুলি সহ চালানো হবে, সেই আদেশগুলিও নেই যার প্রয়োজন নেই including

প্রথম উপায়ে আমাকে আমার বিভিন্ন পাসওয়ার্ড একাধিকবার বিভিন্ন sudo কমান্ডের সরবরাহ করার প্রয়োজন হতে পারে, যখন অতিরিক্ত ব্যবহারকারীর সুবিধাগুলি কেবল সেই আদেশগুলিকেই দেওয়া হয় যা তাদের প্রয়োজন।

সুরক্ষা উদ্বেগ থেকে, প্রথম উপায় ভাল is সুবিধার জন্য, দ্বিতীয় উপায়টি আরও ভাল।

  1. আমি প্রথম উপায় অবলম্বন করার কথা ভাবছি। সুতরাং শেল স্ক্রিপ্টে একাধিক sudo কমান্ডগুলিতে আমার পাসওয়ার্ডগুলি সরবরাহ করার অসুবিধার সাথে আমার মোকাবিলা করতে হবে।

  2. স্টিফেন হ্যারিস লিখেছেন :

    একটি ভাল লিখিত স্ক্রিপ্ট সনাক্ত করতে পারে যে এটি সঠিক অনুমতি নিয়ে চলছে এবং সুডোকে মোটেও কল করছিল না, তবে অনেকগুলি খারাপ স্ক্রিপ্ট রয়েছে if

    সুতরাং আমি দ্বিতীয় উপায় ব্যবহার করা উচিত? যদি তাই,

    • আমি কীভাবে "স্ক্রিপ্টটি সনাক্ত করতে পারি যদি এটি সঠিক অনুমতি নিয়ে চলছে এবং সুদকে একেবারে কল না করছিল"?

    • সুডো দিয়ে স্ক্রিপ্ট চালানোর সময় তাদের প্রয়োজন হয় না এমন কমান্ডগুলিতে সুপারভাইজার সুবিধা দেওয়ার সমস্যা এড়াতে আমি এর সুরক্ষা কীভাবে উন্নত করতে পারি?

  3. এই সহজ পদ্ধতির উভয় পদ্ধতির মধ্যে সেরাটি থাকতে পারে: কমান্ডগুলিতে কেবলমাত্র প্রয়োজন এমন সুডো যুক্ত করুন এবং আমি সুবিধা বা সুরক্ষা চাই কিনা তার উপর নির্ভর করে সুডো সহ বা ছাড়াই স্ক্রিপ্টটি চালান? এই পদ্ধতির কিছু সমস্যা আছে?

ধন্যবাদ।


আমি ভেবেছিলাম sudoএকটি ডিফল্ট শংসাপত্রের ক্যাশে আছে। এটি কি আপনার প্ল্যাটফর্মে অক্ষম?
পাইপ

@ পাইপ তাঁর স্ক্রিপ্ট উদাহরণস্বরূপ একটি নির্দিষ্ট পরিমাণের জন্য ঘুমিয়ে থাকতে পারে, এবং এইভাবে ক্যাশেটি কাজ করবে না।
লিনাক্সসিকিউরিটিফ্রেক

উত্তর:


15

আপনার প্রথম সমস্যাটি সম্বোধন করতে:

আমি কীভাবে "স্ক্রিপ্টটি সনাক্ত করতে পারি যদি এটি সঠিক অনুমতি নিয়ে চলছে এবং সুদকে একেবারে কল না করছিল"?

মূলের জন্য একটি সাধারণ এবং পসিক্স চেক রয়েছে:

#!/bin/sh
is_user_root ()
{
    [ "$(id -u)" -eq 0 ]
}

বিকল্পভাবে, বাশে, আরও কর্মক্ষমতা দ্বারা চালিত কোডারগুলি ব্যবহার করতে পারে:

#!/bin/bash
is_user_root ()
{
    [ ${EUID:-$(id -u)} -eq 0 ]
}

মনে রাখবেন যে আমি ইচ্ছাকৃতভাবে পুনরায় ব্যবহারের জন্য কার্যগুলিতে কোডটি মোড়ানো করেছি।

আপনার দ্বিতীয় সমস্যাটির সমাধান করতে:

সুডো দিয়ে স্ক্রিপ্ট চালানোর সময় তাদের প্রয়োজন হয় না এমন কমান্ডগুলিতে সুপারভাইজার সুবিধা দেওয়ার সমস্যা এড়াতে আমি এর সুরক্ষা কীভাবে উন্নত করতে পারি?

আপনি এ বিষয়ে বেশি কিছু করতে পারবেন না। কমপক্ষে আমার মনে কিছু আসে না। আমি যদি স্ক্রিপ্টটি দেখে থাকি তবে আমার কাছে পরামর্শ থাকতে পারে। তবে যেহেতু আপনি এটি আপনার প্রশ্নের মধ্যে অন্তর্ভুক্ত করেননি ... আপনি যদি পুরো স্ক্রিপ্টটি সাথে sudoবা হিসাবে চালনা করেন তবে rootআমি এটি নিয়ন্ত্রণ করার কোনও উপায় দেখতে পাচ্ছি না।

মন্তব্যটি সম্বোধন করতে:

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

আমার স্ক্রিপ্টগুলিতে, আমি সাধারণত উত্তরোত্তর পদ্ধতির সাথে এগিয়ে যাই, তবে এর অর্থ এই নয় যে আমি আপনাকে এটি প্রস্তাব করি। কারণ এটি নির্ভর করে স্ক্রিপ্টটি কার জন্য - rootকেবলমাত্র; ব্যবহারকারীর জন্য বেশিরভাগ ব্যবহারকারীর sudoঅধিকার থাকা ব্যতীত; যে কোনও মান দিয়ে উত্তর দিতে সক্ষম হবার জন্য আপনাকে আপনার স্ক্রিপ্টটি আক্ষরিক অর্থে প্রশ্নের মধ্যে অন্তর্ভুক্ত করতে হবে।


sudo -u "$SUDO_USER" command...?
মাইকেল হোমার

ধন্যবাদ। আপনি "এর ভিতরে সুডো ব্যবহার করুন যা এটির সাথে চালান" এর কী মনে করেন?
টিম

ধন্যবাদ। এই সহজ পদ্ধতির উভয় পদ্ধতির মধ্যে সেরাটি থাকতে পারে: কমান্ডগুলিতে কেবলমাত্র প্রয়োজন এমন sudo যুক্ত করুন এবং আমার সুবিধার্থে বা সুরক্ষা চাই কিনা তার উপর নির্ভর করে sudo সহ বা ছাড়াই স্ক্রিপ্টটি চালান? এই পদ্ধতির কিছু সমস্যা আছে?
টিম

@ মিশেলহোমার আমি ভাবছিলাম যে sudo -u "$SUDO_USER" commandএখানে মানে কি ?
টিম

@ টিম যদিও আমি এই পদ্ধতির সাথে কোনও সমস্যা না পেয়েও কেউ যুক্তিযুক্ত যুক্তি দিয়ে আপত্তি জানাতে পারে। এটি সত্যিই আপনার মূল প্রশ্নের ক্ষেত্রের বাইরে। আমার এখনই আমার মাসিক এম-ডিস্ক ব্যাকআপ করা দরকার, তাই আমি আজকের জন্য এখনও উপলব্ধ বলে মনে করি না, এর জন্য দুঃখিত। আমি আশা করি আমি মূল পয়েন্টটি কমপক্ষে উত্তর দিয়েছি। আগামীকাল দেখা হবে.
লিনাক্সসিকিউরিটিফ্রিক 13

-4

আমি মনে করি আমি এর উত্তর দিতে পারি।

সুতরাং আমি দ্বিতীয় উপায় ব্যবহার করা উচিত?

এখানে আপনার সমস্যা হওয়ার কোনও কারণ নেই, এ কারণেই:

যদি কেবল একটি কমান্ড থাকে যা রুট হিসাবে চালানো দরকার, তবে runআপনার প্রোগ্রাম হিসাবে rootবা sudoকারণ sudoআপনার স্ক্রিপ্টের ভিতরে দীর্ঘতর রাস্তা। আপনি কি ভুলে গেছেন যে প্রোগ্রামাররা অলস?

আপনি অনেক কমান্ড প্রয়োজন runহিসাবে rootতারপর যেমন এটি চালানোর rootবা sudo

সুডো দিয়ে স্ক্রিপ্ট চালানোর সময় তাদের প্রয়োজন হয় না এমন কমান্ডগুলিতে সুপারভাইজার সুবিধা দেওয়ার সমস্যা এড়াতে আমি এর সুরক্ষা কীভাবে উন্নত করতে পারি?

যদি অন্য ব্যবহারকারীদের runআপনার প্রোগ্রামের প্রয়োজন হয় তবে sudoতাদের জন্য সেটআপ কারণ sudoএটি অনেকগুলি কাস্টমাইজযোগ্য এবং আপনার প্রয়োজনীয়তা পূরণ করবে।

এখানে একটি উদাহরণ এখানে sudo:

visudoসুডোর ফাইল সম্পাদনা করার সময় সর্বদা ব্যবহার করুন .....

kate ALL=(ALL) NOPASSWD: /usr/local/bin/script ARG1 ARG2

sudo আপনার প্রোগ্রাম / স্ক্রিপ্টের অভ্যন্তরে ব্যবহারকারীদের পরিবর্তনের জন্যও এখানে দুর্দান্ত একটি স্ক্রিপ্টের লাইন রয়েছে:

sudo -i -u "$user" user="$user" CURRENTDIR="$CURRENTDIR" BASHRC="$BASHRC" bash <<'EOF'

আমি কীভাবে "স্ক্রিপ্টটি সনাক্ত করতে পারি যদি এটি সঠিক অনুমতি নিয়ে চলছে এবং সুদকে একেবারে কল না করছিল"?

https://www.cyberciti.biz/tips/shell-root-user-check-script.html
কিভাবে-কী-আমি-নির্ধারণ-যদি-একটি-শেল-স্ক্রিপ্ট-রুট-অনুমতিগুলির সাথে চলছে is

bash/sh:

#!/bin/bash
# (Use #!/bin/sh for sh)
if [ `id -u` = 0 ] 
then
        echo "I AM ROOT, HEAR ME ROAR"
fi

csh:

#!/bin/csh
if ( `id -u` == "0" ) 
then
        echo "I AM ROOT, HEAR ME ROAR"
endif

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
  echo "You must be a root user" 2>&1
  exit 1
else
  mount /dev/sdb1 /mnt/disk2
fi

ভদ্রলোক @ ইটারডনের অনুরোধের মাধ্যমে সম্পাদনা করুন:

আপনার স্ক্রিপ্টটি এভাবে ভাবুন ...

এটি কি কোনও পাবলিক স্ক্রিপ্ট (আপনি ব্যতীত অন্য লোকেরা এটি ব্যবহার করবেন) স্ক্রিপ্টটি কী করে? এটা কি সময় বলে? অথবা এটি 200 সিস্টেমে iptables আপডেট করে? যদি আপনি কেবল এটি ব্যবহার করেন তবে এটি কি কাজ / পেশাদার সম্পর্কিত বা এটি ব্যক্তিগত ব্যবহারের জন্য?

আপনার ব্যবহারকারী-গোষ্ঠীটি কী নিয়ে গঠিত তা আপনাকে আগেই জানতে হবে, এটি।

যদি writtenঅ্যাডমিনদের দেওয়া বা বিক্রয় করা হয়, তবুও, কেন scriptচালানোর অনুমতি দেওয়া হবে না root?? এটা কি ক্ষতি করতে পারে?

প্রকৃত স্ক্রিপ্টগুলি / প্রোগ্রামগুলি প্রায়শই সুবিধাযুক্ত ব্যবহারকারী হিসাবে চালিত হয় এবং কেউ উল্লেখ করেনি যে কোনও সমস্যা নেই, তবে প্রোগ্রামাররা যখন আমার মতো বেশিরভাগ নবজাতকই এই বিষয়গুলি নিয়ে কথা বলেন, তখন এটি একটি সত্যিকারের সুরক্ষা হুমকী ..... আপনার পোস্টের লোকটি আপনাকে কী বলে বলতে চাইছেন যে মার্জিতভাবে নয়, যদিও কিছু লোক আপনার এবং আপনার কোডের নিয়ন্ত্রণের দিকে নজর দেয় system.... আপনি যে ফাইলগুলি ব্যবহার করছেন তার চেয়ে বেশি অনুমতিতে ফাইল সেট করেন, আপনার সমস্ত চেক আপনার আছে কি যুক্তি বা প্রতিভাবান প্রোগ্রামার আপনার কোডের ঝুঁকিগুলি দেখতে যাচ্ছেন কেবল এটির দিকে নজর দেওয়া?

যদি আপনার code needs root, ব্যবহার করুন sudo, এবং যদি অনেকগুলি কেবল এটি চালিত হয় তবে root....... আমার উত্তরটি এখানে শেষ হয় hew


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

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