উবুন্টুতে do হোম কীভাবে পরিবর্তন করা যায় না এবং কীভাবে এই আচরণটি অক্ষম করা যায়?


39

উবুন্টু 12.04-এ, যখন আমি OME sudo -sহোম ভেরিয়েবলটি পরিবর্তন করা হয় না, তাই যদি আমার নিয়মিত ব্যবহারকারী হয় regularuserতবে পরিস্থিতিটি এরকম হয়:

$ cd
$ pwd
/home/regularuser
$ sudo -s
# cd
# pwd
/home/regularuser

আমি অনেক আগে উবুন্টুকে ত্যাগ করেছি, তাই আমি নিশ্চিত হতে পারি না, তবে আমি মনে করি এটিই ডিফল্ট আচরণ। সুতরাং, আমার প্রশ্নগুলি হ'ল:

চতুর্থাংশ 1। এটি কিভাবে হয়? কনফিগারটি কোথায়?

Q2 এর। আমি কীভাবে এটি অক্ষম করব?

সম্পাদনা করুন: উত্তরের জন্য ধন্যবাদ, যা বিষয়গুলিকে কিছুটা স্পষ্ট করেছে, তবে আমার ধারণা আমি যে উত্তরটি সন্ধান করছি তার জন্য আমাকে কয়েকটি প্রশ্ন যুক্ত করতে হবে।

চতুর্থাংশ 3। ডেবিয়ানে sudo -s, $ হোম ভেরিয়েবল এ পরিবর্তন করে /root। আমি উত্তরগুলি এবং man sudoশেলটি দিয়ে যা পেয়েছি তা থেকে কি sudo -sদেওয়া হয়েছে /etc/passwd, তাই না?

Q4 ই। তবে, উবুন্টু এবং ডেবিয়ান উভয়ের উপর /etc/passwdমূলের জন্য দেওয়া শেলটি হ'ল /bin/bash। যে কোনও সিস্টেমে, ফাইলগুলি .profileবা .bashrcফাইলগুলির মধ্যে যেখানে পার্থক্য রয়েছে তা আমি খুঁজে পাচ্ছি না $ যতদূর OME হোম সম্পর্কিত, যাতে আচরণের sudo -sপার্থক্য থাকে। এই কোন সাহায্য?


আপনি আমার নিজের মন্তব্যে নিজের প্রশ্নের একটি অংশের উত্তর দিয়েছিলেন, তবে আমি ভেবেছিলাম যে আমি এখানে লিঙ্কটি unix.stackex بدل . com/questions/38175/… রেখেছি । আমি মনে করি Q3 তে আপনার দাবিটি কারণ কিছু লোক লগইন শেলের মধ্যে থাকুক না কেন নির্বিশেষে তাদের প্রোফাইল এবং আরসি ফাইলগুলি একই কাজ করতে সেট করে। আমি মনে করি এটি sudoডেবিয়ান এবং উবুন্টুর মধ্যে আলাদা আচরণ করে wild
এমএসডব্লিউ

@ এমএসডব্লিউ যতক্ষণ না দেবিয়ান এবং উবুন্টু (12.04) এর মধ্যে পার্থক্য sudoযায়, আমি মনে করি যে ডিফল্টরূপে অবশ্যই একটি পার্থক্য রয়েছে। যাইহোক, আমি এটিতে বাজি ধরছি না, যেহেতু আমি এমন একটি বাক্সে আছি যা অন্য কারও দ্বারা সেটআপ করা হয়েছে এবং বেশ কিছুদিন ধরে চলছে। যাই হোক না কেন, আগ্রহী প্রত্যেকের জন্য, আমি সিকিউরিটি.স্ট্যাকএক্সচেঞ্জ / প্রশ্ন / 18369/ … এবং bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140 খুঁজে পেয়েছি
alxs

উত্তর:


51

সুডোর অনেকগুলি কম্পাইল-টাইম কনফিগারেশন বিকল্প রয়েছে। আপনি নিজের সংস্করণে সেটিংস তালিকাভুক্ত করতে পারেন sudo -V। ডেবিয়ান হুইজি এবং উবুন্টু 12.04 এর কনফিগারেশনের মধ্যে একটি পার্থক্য হ'ল HOMEপরিবেশের পরিবর্তনশীলটি উবুন্টুতে সংরক্ষণ করা হয় তবে ডেবিয়ানে নয়; উভয় বিতরণগুলি স্পষ্টভাবে সংরক্ষণের জন্য নিরাপদ হিসাবে চিহ্নিত হিসাবে চিহ্নিত ব্যতীত সমস্ত পরিবেশের ভেরিয়েবল মুছে দেয়। এইভাবে উবুন্টু sudo -sসংরক্ষণ HOMEকরে, যখন ডেবিয়ানে HOMEমুছে যায় এবং sudoতারপরে এটি লক্ষ্য ব্যবহারকারীর হোম ডিরেক্টরিতে সেট করে।

আপনি এই আচরণটি sudoersফাইলটিতে ওভাররাইড করতে পারেন । ফাইল visudoসম্পাদনা করতে চালান sudoers। বেশ কয়েকটি প্রাসঙ্গিক বিকল্প রয়েছে:

  • env_keepকোন পরিবেশের ভেরিয়েবল সংরক্ষণ করা হবে তা নির্ধারণ করে। ব্যবহার করুন Defaults env_keep += "HOME"আহ্বানকারী এর ধরে রাখা HOMEএনভায়রনমেন্ট ভেরিয়েবল বা Defaults env_keep -= "HOME"এটা মুছে দিতে (এবং লক্ষ্য ব্যবহারকারীর home ডিরেক্টরিতে দ্বারা এটি প্রতিস্থাপন)।
  • env_resetপরিবেশের ভেরিয়েবলগুলি পুনরায় সেট করা আছে কিনা তা নির্ধারণ করে। পরিবেশের ভেরিয়েবলগুলি পুনরায় সেট করা নিয়মগুলির জন্য প্রায়শই প্রয়োজনীয় যা নির্দিষ্ট কমান্ড চালানোর অনুমতি দেয়, তবে যে বিধিগুলি যে কোনওভাবে নির্বিচারে কমান্ড চালানোর অনুমতি দেয় এমন নিয়মের জন্য সরাসরি সুরক্ষা সুবিধা নেই benefit
  • always_set_home, যদি সেট HOMEকরা থাকে তবে এটি env_resetঅক্ষম HOMEথাকায় বা env_keepতালিকায় থাকার কারণে এটি সংরক্ষণ করা থাকলেও ওভাররাইডের কারণ ঘটায় । HOMEযাইহোক সংরক্ষণ না করা থাকলে এই বিকল্পটির কোনও প্রভাব নেই ।
  • set_homeভালো হয় always_set_home, কিন্তু শুধুমাত্র প্রযোজ্য sudo -sযখন কলিং না, sudoএকটি সুনির্দিষ্ট আদেশের সঙ্গে।

এই বিকল্পগুলি প্রদত্ত উত্স ব্যবহারকারী, প্রদত্ত লক্ষ্য ব্যবহারকারী বা প্রদত্ত কমান্ডের জন্য সেট করা যেতে পারে; দেখতে sudoersবিস্তারিত জানার জন্য ম্যানুয়াল।

বিকল্পটি পাস করে HOMEআপনি প্রদত্ত কলটির জন্য সর্বদা ওভাররাইড বেছে নিতে পারেন ।sudo-H

শেলটি কখনই এর মানটিকে ওভাররাইড করে না HOME। (এটি সেট না করা HOMEথাকলে এটি সেট করা হত তবে sudoসর্বদা HOMEএকটি না কোনও উপায় সেট করে ))

আপনি যদি চালান sudo -i, sudoএকটি প্রাথমিক লগইন অনুকরণ। এর মধ্যে HOMEলক্ষ্য ব্যবহারকারীর হোম ডিরেক্টরিতে সেট করা এবং লগইন শেলটি অন্তর্ভুক্ত করা অন্তর্ভুক্ত


17

একটি ইন্টারেক্টিভ লগইন রুট শেল পেতে sudo -H -iপরিবর্তে ব্যবহার করুন sudo -s:

sudo -H -i
cd
pwd -P  #  /private/var/root  (on Mac OS X 10.6.8)

থেকে man sudo:

-H      The -H (HOME) option sets the HOME environment variable to
        the homedir of the target user (root by default) as
        specified in passwd(5).  By default, sudo does not modify
        HOME (see set_home and always_set_home in sudoers(5)).

-iবোঝা -H
এক্স-ইউরি

5

sudo"লগইন শেল" এবং "লগ-ইন না করা শেল" এর মধ্যে পার্থক্যের সাথে এর ব্যবহারের খুব কম সম্পর্ক রয়েছে। দ্রুত সমাধান হয়

$ sudo -i

যেমন দেখা যায়:

$ sudo -s
# id
uid=0(root) gid=0(root) groups=0(root)
# echo $HOME
/home/msw
# exit
$ sudo -i
# echo $HOME
/root
# pwd
/root

সুডো ম্যানুয়ালটিতে যেমন উল্লেখ করা হয়েছে:

-I (প্রাথমিক লগইন অনুকরণ) বিকল্পটি লগইন শেল হিসাবে লক্ষ্য ব্যবহারকারীর পাসওয়ার্ড ডাটাবেস এন্ট্রি দ্বারা নির্দিষ্ট শেলটি চালায়। এর অর্থ হ'ল। প্রোফাইল, বা লগিনের মতো লগইন-নির্দিষ্ট সংস্থান ফাইলগুলি শেল দ্বারা পঠিত হবে। যদি একটি কমান্ড নির্দিষ্ট করা থাকে, এটি শেলের -c বিকল্পের মাধ্যমে কার্যকর করার জন্য শেলের কাছে প্রেরণ করা হয়। যদি কোনও কমান্ড নির্দিষ্ট না করা থাকে তবে একটি ইন্টারেক্টিভ শেল কার্যকর করা হয়।


অতিরিক্ত বিশদের জন্য ধন্যবাদ, তারা আমার জন্য জিনিসগুলি আরও কিছুটা পরিষ্কার করে দিয়েছে। মনে করুন শাঁসের মধ্যে পার্থক্য আমাকে পরীক্ষা করতে হবে। যে কেউ এটি পড়ার জন্য, আমার সাথে একই পরিস্থিতি সম্পর্কে, এটি পরীক্ষা করুন: unix.stackexchange.com/questions/38175/…
alxs

1
না, সুডো HOMEকীভাবে কনফিগার করা হয়েছে তার সাথে সুডো পরিবর্তন হয় বা না কিছুই আছে।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

@ গিলস: তো, সুডো কনফিগার করা কেমন? ইন /etc/sudoers, সেখানে উবুন্টু এবং ডেবিয়ান মধ্যে কিছুই বিভিন্ন যতটা $ হোম নিষ্কৃতি।
alxs

1
@alxs আইআইআরসি ডেবিয়ান এবং উবুন্টুর বিভিন্ন সংকলন-সময় ডিফল্ট রয়েছে। আপনি তাদের বিকল্পগুলি always_set_homeএবং set_homeএর মাধ্যমে ওভাররাইড করতে পারেন sudoers
গিলস 8:55-

@ গিলস: আপনাকে ধন্যবাদ কেন এটি ঘটে এবং কীভাবে তা ফিরিয়ে দেওয়া যায়, উভয় ক্ষেত্রেই আমি ঠিক উত্তরটি খুঁজছি। আপনি যদি এটি পোস্ট করতে আপত্তি না করেন, আমি উত্তর হিসাবে এটি গ্রহণ করব। আমি নিজে এটি করতে পারি, তবে আমি এর কৃতিত্ব নিতে চাই না।
alxs

2

রুট শেল পাওয়ার বেশ জনপ্রিয় উপায়টিও ব্যবহার করছে:

 $ sudo su - 
 # id
 uid=0(root) gid=0(root) groups=0(root)
 # pwd
 /root

আমি ব্যবহার করতে ব্যবহার করি sudo -i -H, তবে এটি গিট থেকে বিশ্বব্যাপী এনপিএম প্যাকেজ ইনস্টল করতে ব্যর্থ হয়েছিল। সঙ্গে sudo su -এটি কাজ করে! ধন্যবাদ.
লরেন্ট

0

sudo -sযথাক্রমে উবুন্টু এবং ডেবিয়ানের বিভিন্ন আচরণ থেকে মুক্তি পাওয়ার জন্য আপনি একটি sudoমোড়ক ব্যবহার করতে পারেন (Q4- এর উত্তর):

sudos() {
   local PATH="$(getconf PATH)" root_homedir
   root_homedir="$(sudo -H sh -c 'printf "%s" "$HOME"')"
   sudo sh -c 'export HOME="$0"; exec sh -i' "$root_homedir"
   return 0
}

sudo -k
sudos
{
logname
whoami
id -un
id -ur
echo "PATH: $PATH"
}
exit
echo "PATH: $PATH"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.