উবুন্টু এবং ডেবিয়ান কীভাবে sudo সুবিধাগুলি সহ ব্যবহারকারীদের জন্য OME হোম পরিচালনা করে?


39

আমার কাছে myhome.shকেবলমাত্র একটি লাইন সমন্বিত বাশ স্ক্রিপ্ট রয়েছে :

echo $HOME

স্ক্রিপ্টের মালিক একজন ব্যবহারকারী:

$ ls -l myhome.sh
-rw-rw-r-- 1 user user <date> <time> myhome.sh

ইন উবুন্টু 16,04 এবং 17,10 আমি পাবেন:

$ echo $HOME
/home/user

$ sudo echo $HOME
/home/user

$ bash myhome.sh
/home/user

$ sudo bash myhome.sh
/home/user

ইন ডেবিয়ান বাস্টার / টেস্টিং আমি পাবেন:

$ echo $HOME
/home/user

$ sudo echo $HOME
/home/user

$ bash myhome.sh
/home/user

# WHY ?
$ sudo bash myhome.sh
/root

আমি বুঝিনা কেন ডেবিয়ান মধ্যে স্ক্রিপ্ট ভিতরে, যদি উবুন্টু সঙ্গে মৃত্যুদন্ড কার্যকর করা, আমি সবসময় পেতে পারি $HOME=/rootযখন উবুন্টু মধ্যে আমি পেতে $HOME=/home/user। কেউ কি জানেন যে উবুন্টু বিকাশকারীরা কী পরিবর্তন করেছে?

উত্তর:


68

ডেবিয়ান এবং উবুন্টু উভয়ই /etc/sudoersএমন একটি ফাইল Defaults env_resetপাঠায় যা পরিবেশ ভেরিয়েবলগুলি পুনরায় সেট করে।

তবে, ব্যবহারকারীর আচরণটি লক্ষ্য ব্যবহারকারীর বাড়িতে এটিকে পুনরায় সেট করতে $ হোম স্পর্শ না করাenv_reset থেকে পরিবর্তিত হয়েছিল ।

sudoপূর্ববর্তী আচরণটি রাখতে উবুন্টু তাদের সংস্করণটি প্যাচ করার সিদ্ধান্ত নিয়েছে : https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/760140

উবুন্টুতে, টার্গেট ব্যবহারকারীর $ হোম এনভায়রনমেন্ট ভেরিয়েবলটি পুনরায় সেট করতে, তাদের মধ্যে একটি সেট করতে হবে Defaults always_set_homeবা Defaults set_home(যার ক্ষেত্রে কেবল sudo -sহোম আপডেট হবে) /etc/sudoers

উবুন্টু ট্র্যাকারে এই বাগটির সেট না করার বিষয়ে আরও কিছু যুক্তি রয়েছে $ হোম ইন সুডো: https://bugs.launchpad.net/ubuntu/+source/sudo/+bug/1373495

মন্তব্য # 4 দেখুন:

যদি হোম সরানো হয়, তবে উদাহরণস্বরূপ, ভিম, বাশ ইত্যাদি ব্যবহারকারীর ~ / .vimrc, ~ / .bashrc ইত্যাদির পরিবর্তে /root/.vimrc, /root/.bashrc, ইত্যাদি ব্যবহার করবে যখন এটি একটি খারাপ ধারণা idea সুডোর মাধ্যমে এক্স ক্লায়েন্ট চালানোর জন্য, তারাও সম্ভবত কনফিগারেশন ফাইলগুলির জন্য ভুল লোকেশনগুলি অনুসন্ধান করবে এবং এমন সম্ভাবনা রয়েছে যে এক্স 11 ক্লায়েন্টরা যদি X। সার্ভারের সাথে সংযোগ করতে সক্ষম নাও হতে পারে যদি তারা ভুল .Xauthority ফাইলের উদ্দেশ্যে থাকে।

এটি উবুন্টু বিকাশকারীদের একটি সচেতন সিদ্ধান্ত।

এই উত্তরে sudoers বিকল্প সম্পর্কে আরও বিশদ রয়েছে যেমন always_set_home: https://unix.stackexchange.com/a/91572/281844


আপনার প্রশ্নে একটি দ্বিতীয় সমস্যা আছে, এটি sudo echo $HOMEএখনও ডিবিয়ান ব্যবহারকারীর বাড়ি প্রদর্শন করে।

এটি ঘটে কারণ কমান্ড চালানোর $HOME আগে শেলটি প্রসারিত হয় sudo

তাই এটা:

$ sudo echo $HOME

শেল দ্বারা প্রথমে এর মধ্যে প্রসারিত হয়:

$ sudo echo /home/user

এবং তারপরে sudo echo /home/userমূল হিসাবে চালিত ...

এটির পার্থক্যটিও প্রদর্শন করা উচিত:

$ sudo bash -c 'echo $HOME'
/root

বা একটি সম্পূর্ণ রুট শেল পান এবং সেখানে পরিবেশের পরিবর্তনশীল দেখুন:

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