সু বনাম সুডো-এস বনাম সুডো -i বনাম সুডো বাশ


89

নিম্নলিখিত কমান্ডগুলির মধ্যে পার্থক্য কী:

su
sudo -s
sudo -i
sudo bash

আমি জানি যে suআমার মূল পাসওয়ার্ডটি জানতে হবে এবং sudoআমাকে sudoersফাইলে থাকতে হবে, তবে একবারে মৃত্যুদন্ড কার্যকর করা কী পার্থক্য?

আমি জানি এমন মধ্যে একটি পার্থক্য আছে suএবং sudo -sকারণ আমার home ডিরেক্টরিতে হয় /rootপর আমি চালানো su, কিন্তু আমার home ডিরেক্টরিতে এখনও /home/mynameপর sudo -s। তবে আমি সন্দেহ করি এটি আমার অন্তর্নিহিত পার্থক্যের একটি মাত্র লক্ষণ।


3
আমি আপনাকে ব্যবহার করতে পছন্দ করি sudo su - এইভাবে আপনার রুট পাসওয়ার্ডের প্রয়োজন হবে না এবং -হোম ডিরেক্টরিটি সঠিকভাবে সেট করা আছে তা নিশ্চিত করে।
জেনস টিমারম্যান

উত্তর:


114

সঙ্গে su, আপনি পরিণত ডিফল্টরূপে রুট কিন্তু সম্ভাব্য অন্য ব্যবহারকারী - অন্য ব্যবহারকারী। আপনি যদি বলেন su -, আপনার পরিবেশটি সেই ব্যবহারকারীর লগইন পরিবেশের সাথেও প্রতিস্থাপন হয়ে যায়, যাতে আপনি যা দেখেন তা সেই ব্যবহারকারী হিসাবে লগ ইন করা থেকে পৃথক হয়। কোনও suব্যবহারকারী যখন লগ ইন করেন তখন সেই ব্যবহারকারীর দ্বারা করা পদক্ষেপ থেকে অন্য ব্যবহারকারীর কাছে যাওয়ার সময় সিস্টেমটি আপনাকে বলার কোনও উপায় নেই ।

বিষয়গুলি এর সাথে খুব আলাদা sudo:

  • কমান্ডগুলি আপনি টার্গেট ব্যবহারকারী হিসাবে sudo নির্বাহ করেন - ডিফল্টরূপে মূল, তবে এর সাথে পরিবর্তনযোগ্য -u- তবে এটি আপনার দ্বারা চালিত কমান্ডগুলিকে লগ করে, আপনার ব্যবহারকারীর নাম দিয়ে ট্যাগ করে যাতে দোষের পরে নির্ধারিত হতে পারে। :)

  • sudoখুব নমনীয়। উদাহরণস্বরূপ, প্রদত্ত ব্যবহারকারী বা ব্যবহারকারীদের একটি গ্রুপকে চালানোর অনুমতি দেওয়া আদেশগুলি আপনি সীমাবদ্ধ করতে পারেন। সাথে su, এটি সব কিছুই বা কিছুই নয়।

    এই বৈশিষ্ট্যটি সাধারণত ভূমিকা সংজ্ঞায়িত করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি চালানোর জন্য অনুমোদিত একটি "ব্যাকআপ" গোষ্ঠীটি সংজ্ঞায়িত করতে পারেন dumpএবং tarযার প্রত্যেকটিরই সিস্টেম ডিস্কটিকে সঠিকভাবে ব্যাক আপ করার জন্য রুট অ্যাক্সেসের প্রয়োজন।

    আমি এখানে এটি উল্লেখ করছি কারণ এর অর্থ আপনি কাউকে sudoতাদের যোগ্যতা sudo -sবা sudo bashক্ষমতা না দিয়ে সুবিধাগুলি দিতে পারেন। তাদের কেবলমাত্র তাদের কাজটি করার জন্য প্রয়োজনীয় অনুমতি রয়েছে, যেখানে তাদের সাথে suপুরো সিস্টেমটি চালানো হয়েছে। আপনাকে sudo viএগুলি সম্পর্কে সতর্কতা অবলম্বন করতে হবে, যদিও: আপনি যদি কাউকে বলার ক্ষমতা দেন তবে উদাহরণস্বরূপ, তারা শেল আউট করতে পারে viএবং কার্যকরভাবে একই ক্ষমতা থাকতে পারে sudo -s

  • কারণ এটি রুট পাসওয়ার্ডের পরিবর্তে সুডোরের পাসওয়ার্ড নেয়, sudoএকাধিক sudoers এর মধ্যে অনুমতি বিচ্ছিন্ন করে।

    এটি একটি প্রশাসনিক সমস্যা সমাধান করে su, এটি হ'ল যখন রুট পাসওয়ার্ড পরিবর্তন হয়, যাদের এটি ব্যবহার করতে হবে তাদের সকলকে suবলা উচিত। sudosudoers এর পাসওয়ার্ড স্বাধীনভাবে পরিবর্তন করতে দেয়। প্রকৃতপক্ষে, সিস্টেমে sudoসমস্ত সাসাদমিনের কাজটি করার জন্য বাধ্য করার জন্য কোনও সিস্টেমে রুট ব্যবহারকারীর অ্যাকাউন্টটি পাসওয়ার্ড-লক করা সাধারণ sudo। অনেকগুলি বিশ্বস্ত sudoers সহ একটি বৃহত সংস্থায়, এর অর্থ যখন সিসাদমিনগুলির মধ্যে একটি চলে যায়, আপনাকে রুট পাসওয়ার্ড পরিবর্তন করতে হবে এবং যারা এডমিন রয়ে গেছে তাদের এগুলি বিতরণ করতে হবে না।

মধ্যে মূল পার্থক্য sudo bashএবং sudo -sযে -sখাটো হয় এবং আপনি উপায়ে একটি দম্পতি আপনার ব্যবহারকারীর ডিফল্ট শেল মধ্যে সঞ্চালনের জন্য কমান্ড পাস করতে দেয়:

  1. আপনি বলতে পারেন sudo -s some-commandযা some-commandআপনার শেলের নীচে চলে । এটি মূলত শর্টহ্যান্ডের জন্য sudo $SHELL -c some-command

  2. পরিবর্তে আপনি কমান্ডগুলি শেলের মানক ইনপুটগুলিতে যেমন পাস করতে পারেন sudo -s < my-shell-script। আপনি একটি সঙ্গে এই ব্যবহার করতে পারে heredoc একটি একক বিভিন্ন আদেশগুলি প্রেরণ করতে sudo, কল টাইপ করার দরকার এড়ানো sudoবারবার।

এই দুটি আচরণই areচ্ছিক। আরও সাধারণভাবে, আপনি -sএকা দেন, সুতরাং এটি কেবল আপনার ব্যবহারকারীর শেলটি ইন্টারেক্টিভভাবে চালায়। যে মোডে, এটা থেকে পৃথক sudo bashযে এটা তুলনায় বিভিন্ন শেল চালানো হতে পারে bash, যেহেতু এটি প্রথম দেখায় SHELLএনভায়রনমেন্ট ভেরিয়েবল, এবং তারপর যে যদি সেট না করলে, আপনার ব্যবহারকারীর লগ-ইন শেল সেটিং এ, সাধারণত মধ্যে /etc/passwd

দ্বারা চালিত শেল sudo -sআপনার বর্তমান ব্যবহারকারীর পরিবেশের উত্তরাধিকারী। আপনি যদি যা চান তা যদি পরিষ্কার পরিবেশ হয়, যেমন আপনি লগইনের ঠিক পরে পান তবে পরিবর্তে আপনি যা চান তা হ'ল sudo -iতুলনামূলক সাম্প্রতিক সংযোজন sudo। সাধারণভাবে বলতে গেলে, sudo -iহয় sudo -sযেমন su -হয় suএটি সব কিন্তু কিছু কী এনভায়রনমেন্ট ভেরিয়েবল রিসেট এবং আপনি আপনার ব্যবহারকারীর হোম ডিরেক্টরি ফিরে পাঠায়:। যদি আপনি স্ট্যান্ডার্ড ইনপুট বা শেলের নীচে চালানোর আদেশও না দিয়ে থাকেন তবে sudo -i some-commandএটি সেই শেলটি একটি ইন্টারেক্টিভ লগইন শেল হিসাবে চালিত করবে, সুতরাং আপনার ব্যবহারকারীর শেল স্টার্টআপ স্ক্রিপ্টগুলি (যেমন .bash_profile) আবার চালানো হবে।

এই সমস্ত sudo -iকিছু তুলনায় যথেষ্ট সুরক্ষিত করে তোলে sudo -s। কেন? কারণ যদি কেউ এর আগে আপনার পরিবেশ পরিবর্তন করতে পারে তবে sudo -sতারা অনিচ্ছাকৃত কমান্ড কার্যকর করতে পারে। সর্বাধিক সুস্পষ্ট কেসটি সংশোধন করা হচ্ছে SHELL, তবে এটি সরাসরি কমও ঘটতে পারে যেমন PAGERআপনি যদি বলছেন man fooনীচে থাকাকালীন sudo -s

আপনি বলতে পারেন, "যদি তারা সংশোধন করতে পারে তবে তারা সংশোধন PAGERকরতে পারে PATHএবং তারপরে তারা কেবল একটি খারাপ sudoপ্রোগ্রামের বিকল্প নিতে পারে ," তবে যথেষ্ট /usr/bin/sudo /bin/bashফাঁস হওয়া কেউ এই ফাঁদটি এড়াতে বলতে পারেন । আপনি সম্ভবত এতটা অসম্পূর্ণ নন যে আপনি অন্য সমস্ত সংবেদনশীল পরিবেশের ভেরিয়েবলের ফাঁদগুলিও এড়াতে পারেন । আপনি কি ভিসিএস কমান্ড EDITORচালানোর আগে উদাহরণস্বরূপ চেক করতেও মনে রেখেছিলেন ? এইভাবে ।sudo -i

যেহেতু sudo -iআপনার কার্য ডিরেক্টরিটি আপনার ব্যবহারকারীর হোম ডিরেক্টরিতেও পরিবর্তন করে, আপনি এখনও sudo -sসেই পরিস্থিতিতে ব্যবহার করতে চাইতে পারেন যেখানে আপনি জানতেন যে আপনি cdযখন দৌড়েছিলেন তখন আপনি যে একই ডিরেক্টরিতে থাকতে চান সেখানে থাকতে চান sudo। যদিও আপনি ছিলেন সেখানে এটি এখনও নিরাপদ sudo -iএবং cdফিরে।


2
'Vi এর বাইরে শেল আউট' বলতে কী বোঝ?
ক্রিশন

11
@ ক্রিস্রন: ভিতরে থেকে viটাইপ করুন :shএবং এন্টার টিপুন। viএই শেলটি তৈরি হওয়া প্রক্রিয়াটির সমস্ত সুযোগ-সুবিধা সহ এখন আপনি একটি উপ-শেলের মধ্যে রয়েছেন । যদি viরুট সুবিধাগুলি নিয়ে চলছে, তবে শেলটি হবে। অথবা, আপনি এর মাধ্যমে একটি শেল ছাড়া অন্য কিছু চালাতে পারেন :!cmdমাধ্যমে সম্পাদনা বাফারে মধ্যে একটি কমান্ডের ফলাফল পড়া, :r !cmdইত্যাদি তাহলে সমস্ত লক ডাউন হয়, Makefileলক্ষ্যমাত্রা শেল স্ক্রিপ্ট, এবং তেজ আছে :makeকমান্ড, যা কার্যকরভাবে দেয় আপনি নির্বিচারে শেল চালানোর সম্পাদকের মধ্যে থেকে স্ক্রিপ্ট। এই মন্তব্য বাক্সটি ধরে রাখার জন্য দুষ্টুমির সম্ভাবনা অনেক বেশি are
ওয়ারেন ইয়ং

2
যদি কেউ আপনার पथপথে কোনও জাল রাখতে পারে তবে কেউ আপনার রাস্তায় একটি জাল সুডো লাগাতে পারে। সত্যিকারের নিশ্চিত হওয়ার জন্য আপনাকে পুরো পথটি ব্যবহার করে সুডো আহ্বান করতে হবে:/usr/bin/sudo
লেসমান

1
@ লেসমানা: আমি এটিকে সম্পাদনা করে সম্বোধন করেছি; মূলত, PATHএকমাত্র সমস্যা নয়।
ওয়ারেন ইয়ং

6
দুর্দান্ত ব্যাখ্যা; মহান মাথাব্যথা এটি পড়া।
লবি

27

আমি কিছুক্ষণ আগে তৈরি একটি উবুন্টুফর্মস পোস্ট থেকে :

নিম্নলিখিত পরীক্ষা বিবেচনা করুন:

applic@ion:~% sudo su
[sudo] password for applic:
root@ion:/home/applic# env > /tmp/sudo_su_env
root@ion:/home/applic# exit
exit
applic@ion:~% sudo -s
applic .bashrc read...
root@ion:~% env >/tmp/sudo_s

আমি যে পার্থক্যগুলি পেয়েছি তা এখানে:

সাথে sudo -s:

HOME=/home/applic
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
reads $USER's ~/.bashrc

সাথে sudo su:

HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
reads /etc/environment
reads /root/.bashrc

মধ্যে পার্থক্য লক্ষ্য করুন $HOME। রুট হওয়া এবং $HOMEসাধারণ ব্যবহারকারীর বাড়িতে সেট আপ করা সমস্যার কারণ হতে পারে। উদাহরণস্বরূপ, আপনি যদি একটি গ্রাফিকাল অ্যাপ চালনা করেন তবে সাধারণ ব্যবহারকারীরা ~/.Xauthorityরুট দ্বারা ওভাররাইট করা যায়। এটি পরবর্তীকালে ক্রোনের মাধ্যমে নির্দিষ্ট গ্রাফিকাল অ্যাপ্লিকেশন চালাতে না পারার মতো সাধারণ ব্যবহারকারীদের সমস্যার কারণ হয়।

সংক্ষেপ:

                                     corrupted by user's 
        HOME=/root  uses root's PATH     env vars
sudo -i     Y       Y[2]                 N
sudo -s     N       Y[2]                 Y
sudo bash   N       Y[2]                 Y
sudo su     Y       N[1]                 Y
  1. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games সম্ভবত দ্বারা সেট করা /etc/environment
  2. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

নীচের লাইনটি হ'ল sudo -iসঠিক কমান্ডটি হ'ল আপনি যখন কোনও রুট শেলটি ব্যবহার করতে চান যা ব্যবহারকারীর পরিবেশ দ্বারা অবিচ্ছিন্ন থাকে।


1
পরিবেশ 'কলঙ্কিত' কতটা নির্ভর করে sudo( /etc/sudoersপাশাপাশি এবং সম্পর্কিত ফাইলগুলি) এর কনফিগারেশনের উপরও on যেমন কনফিগারেশন সেটিংস always_set_home, env_reset, env_keep, env_checkএবং env_reset, এবং এই ব্যবহারকারী এবং কমান্ড উপর নির্ভর করে পরিবর্তিত হতে পারে। দেখুন 'কম্যান্ড পরিবেশ' এবং SUDOERS বিকল্প এর বিভাগে sudoers (5) র manpage।
কর্ট জে সাম্পসন

ব্যক্তিগতভাবে, আমি sudo -Hsযখন আমার সেটিংস দ্বারা অবিচ্ছিন্ন পরিবেশ চাই তখন আমি সেখানে যাই , কারণ আমি zsh ব্যবহার করি এবং ব্যাশ ব্যবহারের জন্য আমি যে অ্যাপ্লিকেশন অ্যাকাউন্টগুলি পরিবর্তন করতে পারি সেগুলি ব্যবহার করি। এটি নির্দিষ্ট সংখ্যক পরিবেশের ভেরিয়েবলগুলিকে বিরামহীনভাবে পাস করতে দেয় তবে আমি সাধারণত যেগুলি /etc/profile.d/* দ্বারা ওভাররাইট করা হয় তা খুঁজে পাই।
এড গ্রিম

7

su( গুলি জাদুকরী তোমার দর্শন লগ করা Ser বা গুলি ubstitute তোমার দর্শন লগ করা Ser) আপনি ব্যবহারকারী স্যুইচ করতে দেয়। suমূলত উদ্দেশ্যে ব্যবহারকারীর সুবিধার্থে অন্য শেল ঘটনা শুরু করে। ডিফল্টরূপে এটি আপনাকে rootব্যবহারকারীর কাছে স্যুইচ করে, যদি আমরা নির্দিষ্ট ব্যবহারকারীর স্যুইচ করতে চাই তবে আমাদের ব্যবহারকারীকে নিম্নলিখিতভাবে পাস করতে হবে:

$ su bob  # switches to bob (requires bob's password)

su -মানে পরিবেশের ভেরিয়েবলগুলি রুটে পুনরায় সেট করা হবে এবং এর suঅর্থ পুরানো ব্যবহারকারী হিসাবে পরিবেশের ভেরিয়েবল।

উদাহরণস্বরূপ: আপনি যদি ব্যবহার করেন তবে রুটের হোম ডিরেক্টরি su -বা আপনি যদি ব্যবহার করেন তবে পুরানো ব্যবহারকারীর হোম ডিরেক্টরি su

sudo ( s uper u ser do ) হ'ল একটি কমান্ড-লাইন ইউটিলিটি যা ব্যবহারকারীদের অন্য ব্যবহারকারীর সুরক্ষা সুবিধাগুলি সহ প্রোগ্রাম চালাতে দেয়, ডিফল্টরূপে সুপারভাইজার অর্থাৎ root। এটি এমন একটি কনফিগার ফাইল ব্যবহার করে /etc/sudoersযা ব্যবহারকারীদের নির্দিষ্ট ক্রিয়াকলাপের অধিকার রয়েছে তা তালিকাভুক্ত করে

sudo / ːsuːduː / হিসাবে পড়তে হবে । সিনট্যাক্স sudo commandঅর্থাত গুলি জাদুকরী তোমার দর্শন লগ করা Ser এবং কি এই কমান্ড।

  • suএর সমতুল্য sudo -iএবং মূল অ্যাকাউন্টে একটি লগইন অনুকরণ করে। আপনার ওয়ার্কিং ডিরেক্টরিটি হবে /rootএবং এটি রুটের .profileইত্যাদি পড়বে The

  • sudo -s রুট হিসাবে শেল চালু করে তবে আপনার কার্যক্ষম ডিরেক্টরিটি পরিবর্তন করে না।

  • sudo bash যেখানে bashরেখে চালাতে হবে কমান্ড sudo। এই কমান্ডটি bashসুপার ব্যবহারকারী হিসাবে চালিত হয়।

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