'সুডো-এস' কমান্ডটি কী করে এবং এই উদাহরণে এটি কীভাবে ব্যবহৃত হয়?


8

আমার নিম্নলিখিত সন্দেহ আছে। একটি সফ্টওয়্যার ইনস্টলেশন সম্পর্কিত যে টিউটোরিয়ালটি আমি অনুসরণ করছি তাতে বলতে হবে যে আমাকে নিম্নলিখিত কমান্ডগুলি সম্পাদন করতে হবে (আমি এটি একটি এসএস শেল দিয়ে করছি, সুতরাং এই পদক্ষেপের তালিকাটি exitকমান্ড দিয়ে শেষ হবে ):

sudo -s
apt-get update
apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen
exit

আমার সন্দেহগুলি হ'ল:

কমান্ডের -sপরে প্যারামিটারটি ঠিক কী করে sudo?

ওয়েবে অনুসন্ধান করে আমি দেখতে পেলাম যে:

[S [কমান্ড] (s (শেল) বিকল্পটি শেল পরিবেশ পরিবর্তনশীল দ্বারা নির্ধারিত শেলটি সেট করা থাকলে বা পাসওয়ার্ড ডাটাবেসে উল্লিখিত শেলটি চালায়। যদি একটি কমান্ড নির্দিষ্ট করা থাকে, এটি শেলের ‑c বিকল্পের মাধ্যমে কার্যকর করার জন্য শেলের কাছে প্রেরণ করা হয়। যদি কোনও কমান্ড নির্দিষ্ট না করা থাকে তবে একটি ইন্টারেক্টিভ শেল কার্যকর করা হয়

আমার কাছে মনে হয় যে sudo -sশেলের পরিবেশগত পরিবর্তনশীল ব্যবহার করে একটি কমান্ড কার্যকর করা হবে।

তবে এটি আমার পক্ষে পরিষ্কার নয়: এক্ষেত্রে পরিবেশের পরিবর্তনশীল দিয়ে কমান্ডটি কার্যকর করা হয়? (এটি কেবল কার্যকর করে sudo -sএবং না sudo -s [command])।

উত্তর:


7

সহজ উত্তর এটি আপনাকে একটি রুট শেল দেয়। এটাই এখানে ব্যবহার করা হচ্ছে। একটি ভাল আছে মধ্যে প্রযুক্তিগত তুলনা su, sudo -i, sudo -sএবং sudo suUnix.SE উপর পদ্ধতি কিন্তু যে সত্যিই প্রাসঙ্গিক এখানে নেই। কোডটি যে কোনওটি ব্যবহার করতে পারে এবং কাজ করতে পারে।

সহায়তার ন্যুগেটের অর্থ কয়েকটি জিনিস:

  • এটি $SHELLপরিবেশে পরিবর্তনশীল একটি কমান্ড সন্ধান করছে command আপনি যদি চালান echo $SHELLআপনি সম্ভবত দেখতে পাবেন /bin/bash। এর অর্থ আপনি বাশের একটি মূল উদাহরণ পাবেন। আমি নিশ্চিত আপনি যদি zshএটির মধ্যে থাকেন তবে এর অর্থ আপনি একটি মূল উদাহরণ পেয়ে যাবেন zsh

  • যদি $SHELLখালি থাকে তবে এটি /etc/passwdব্যবহারকারীর জন্য নির্ধারিত ডিফল্ট শেলের কাছে ফিরে যায় ।

  • যদি আপনি কোনও আদেশ সরবরাহ করেন (উদাঃ sudo -s whoami), এটি আসলে চলছে:sudo /bin/bash -c "whoami"

  • আপনি যদি কোনও কমান্ড পাস না করেন তবে এটি কোনও -cযুক্তি পাস করে না যাতে আপনি কেবল একটি ইন্টারেক্টিভ শেল পান।

আমি "রুট" শব্দটি বহুবার ব্যবহার করেছি। দ্বারা ডিফল্ট sudo রুট হিসাবে জিনিষ চলমান কিন্তু সম্পর্কে সব হয় sudo(এবং su কমান্ড) অন্য ব্যবহারকারী হিসাবে কিছু চালাতে পারেন (যদি আপনি তা করতে অনুমতি থাকে)। আমি কেবল সেই পেডেন্টদের জন্যই বলছি যারা চিত্কার করবে যে sudo -s -u $USERতাদের -sউপরের মতো প্রতিশ্রুতি হিসাবে একটি রুট শেল দেয় না ।


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

sudo apt-get update
sudo apt-get install -y build-essential libtool libcurl4-openssl-dev libncurses5-dev libudev-dev autoconf automake screen

আমি এমন কোনও টিউটোরিয়াল সম্পর্কে সন্দেহজনক হতে পারি যা আপনাকে রুট শেল দেওয়ার পরামর্শ দেয়, কেবল আপনার যেখানে বালতিলোড চালানোর জন্য কমান্ডের বালতি লোড থাকে না ... এবং তারপরেও স্ক্রিপ্টিং রয়েছে।


নিখুঁত ব্যাখ্যা। এখন এটি আরও পরিষ্কার। একটি শেষ সন্দেহ। আমি পূর্ববর্তী সমস্ত কমান্ডগুলিতে সুডো প্রিপেন্ড করে দিলে আমি কি একই চূড়ান্ত ফলাফল পাব? এটা সত্য নাকি আমি কিছু মিস করছি?
AndreaNobili

@ ওলি আপনি Zsh সম্পর্কে 100% সঠিক, "sudo -s" একটি "রুট" শেলটিতে লগইন করে না সুপার ব্যবহারকারী হিসাবে।
আরসিএফ

@ আন্ড্রে নোবিলি হ্যাঁ, sudoসাধারণভাবে এটিই; রুট হিসাবে ম্যানুয়ালি লগ ইন না করে রুট হিসাবে একটি কমান্ড চালানো।
অলি

এফওয়াইআই আমি আপনার নীচে একটি উত্তর পোস্ট করেছি এবং sudo -sআমার সীমিত জ্ঞান এবং দুর্ঘটনার কারণে পরিস্থিতি জুড়ে ঘটার কারণে আমার গ্রহণ সম্পূর্ণ ভিন্ন। তবুও আপনি আমার "নম্র" উত্তরটি পড়তে এবং সম্ভবত আপনার 1/2 দশকের পুরানো উত্তরটি রিফ্রেশ করতে পারেন।
WinEunuuchs2Unix

0

sudo -sনিয়মিত ব্যবহারকারীর মতো বর্তমান ডিরেক্টরিতে একটি কমান্ড চালাবে। উদাহরণ স্বরূপ:

rick@alien:~/askubuntu$ suspendtime
Nov 12 14:06:27 to Nov 12 17:22:21 lasting 11,754 seconds
Nov 12 22:23:37 to Nov 13 04:24:37 lasting 21,660 seconds
(... SNIP ...)
Dec 02 21:58:49 to Dec 03 04:20:52 lasting 22,923 seconds
Dec 03 05:52:43 to Dec 03 16:37:44 lasting 38,701 seconds

Linux uptime 1,859,356 seconds (21 days, 12 hours, 29 minutes, 16 seconds)
45 Suspends 1,173,341 seconds (13 days, 13 hours, 55 minutes, 41 seconds)
Real uptime 686,015 seconds (7 days, 22 hours, 33 minutes, 35 seconds)

rick@alien:~/askubuntu$ sudo suspendtime
sudo: suspendtime: command not found

rick@alien:~/askubuntu$ sudo -H suspendtime
sudo: suspendtime: command not found

rick@alien:~/askubuntu$ sudo -s suspendtime
Nov 12 14:06:27 to Nov 12 17:22:21 lasting 11,754 seconds
(...SNIP...)
Dec 03 05:52:43 to Dec 03 16:37:44 lasting 38,701 seconds

Linux uptime 1,859,431 seconds (21 days, 12 hours, 30 minutes, 31 seconds)
45 Suspends 1,173,341 seconds (13 days, 13 hours, 55 minutes, 41 seconds)
Real uptime 686,090 seconds (7 days, 22 hours, 34 minutes, 50 seconds)

অবশ্যই -sকমান্ডের সাথে উপসর্গের পরিবর্তে ব্যবহার করা ./সময় সাশ্রয়ের মতো নাও হতে পারে।

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