Sudo এর আগে ব্যবহারকারীর নাম


8

আমি একটি স্ক্রিপ্ট পেয়েছি যা সুডোর প্রয়োজন, তবে স্ক্রিপ্টটি অবশ্যই অবশ্যই মূল ব্যবহারকারী হিসাবে প্যারামিটার নির্ধারণ করবে:

chown "${USER}:${USER}" dir

যদি আমি এটি সুডোর অধীনে সেট করি তবে আমি কেবল শেষ করব chmod root:root, যা কোনও উপকার করে না।

তাহলে আমি কীভাবে ব্যবহারকারীর নাম সুডোর আগে পেতে পারি?

উত্তর:


11

এনভায়রনমেন্ট ভেরিয়েবল SUDO_USER টি USER এর প্রতিস্থাপন হিসাবে কাজ করা উচিত।

যেহেতু আপনি ব্যবহারকারীকে মালিকানা নির্ধারণ করছেন: ইউএসআই আমি ধরে নিই যে সবসময় ব্যবহারকারীর মতো একই নামে একটি দল থাকে? আরও কঠোর সমাধান হতে পারে অন্যথায় SUDO_UID এবং SUDO_GID ব্যবহার করা।

এর পরে দুটি সম্ভাব্য সমাধান হ'ল:

chown "${SUDO_USER}:${SUDO_USER}" dir

অথবা

chown "${SUDO_UID}:${SUDO_GID}" dir

সমাধান এবং কিছু অতিরিক্ত ইনফোস সহ সুন্দর আনবার্সার।
ই-সন্তুষ্ট

ইউআইডি / জিআইডি ব্যবহার করা সবচেয়ে ভাল সমাধান, কারণ একই ব্যবহারকারীর সাথে একাধিক ইউআইডি থাকা সম্ভব।
duffbeer703

4

আপনি SUDO_USERচলকটি ব্যবহার করতে পারেন :

sudo bash -c 'echo $SUDO_USER'

থেকে উবুন্টু মানুষ পৃষ্ঠা:

sudo নিম্নলিখিত পরিবেশের ভেরিয়েবল ব্যবহার করে। সুরক্ষা নীতি কমান্ডের পরিবেশের প্রকৃত বিষয়বস্তু নিয়ন্ত্রণ করে। [...]

SUDO_UID সুডো ব্যবহারকারীর ব্যবহারকারীর আইডিতে সেট করুন।

SUDO_USER সুডো ব্যবহারকারীর লগইন নাম সেট করুন।


কিন্তু sudo echo $SUDO_USERআউটপুটস কেন কিছুই নেই?
রবার্ট

1

SUDO_USER ব্যবহারকারীর দ্বারা ওভাররাইট করা যেতে পারে।

 $ SUDO_USER='lala' sudo SUDO_USER='test' printenv | grep USER
 USER=root
 SUDO_USER=test
 USERNAME=root

আসল ব্যবহারকারীর নাম পেতে আপনার 'কে আমি' বা 'লগ-নেম' ব্যবহার করা উচিত

toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' logname             
toto
toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' who am i
toto   pts/4        Jan 23 15:13 (:0.0)

Https://stackoverflow.com/questions/4598001/how-do-you-find-the-original-user-through-m Multipleple-sudo-and-su-commands থেকে আসছে


'Sudo su -' চালানোর পরে পরিবেশের ভেরিয়েবলগুলি পাওয়া যায় না, lognameএবং who am iকাজ করে।
রিকমিশাম

আপনি ঠিক বলেছেন, পরিবেশের ভেরিয়েবলের উপর নির্ভর করা সম্ভব নয়।
ক্লাদমি

কিছু হোস্টে পাওয়া গেছে যে SUDO_USER ওভাররাইট করা যায় না: sudo: sorry, you are not allowed to set the following environment variables: SUDO_USER সুতরাং এটি এখনও নিরাপদ থাকতে পারে, এখনও এটি যাচাই করা উচিত।
ক্লাদমি

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