কোনও স্ক্রিপ্টের অংশকে আলাদা (রুটবিহীন) ব্যবহারকারী হিসাবে চালানোর কোনও উপায় আছে কি? এটি যদি সহায়তা করে তবে অংশটি আলাদা ব্যবহারকারীর হিসাবে চালানো স্ক্রিপ্টের শেষে ঘটে occurs
সম্পাদনা করুন:
ওএস -> উবুন্টু 9.04
কোনও স্ক্রিপ্টের অংশকে আলাদা (রুটবিহীন) ব্যবহারকারী হিসাবে চালানোর কোনও উপায় আছে কি? এটি যদি সহায়তা করে তবে অংশটি আলাদা ব্যবহারকারীর হিসাবে চালানো স্ক্রিপ্টের শেষে ঘটে occurs
সম্পাদনা করুন:
ওএস -> উবুন্টু 9.04
উত্তর:
স্ক্রিপ্টে sudo কমান্ড ব্যবহার করুন।
ওইরূপে থাকা:
sudo -u username command
উবুন্টু কমান্ড রান আদেশ ব্যবহারকারী হিসাবে ব্যবহারকারীর নাম ।
স্ক্রিপ্টটি রুট হিসাবে চলমান থাকলে, আমি মনে করি না এটি পাসওয়ার্ডের জন্য অনুরোধ করবে। অন্যথায়, এই নিবন্ধটি কীভাবে একটি কমান্ড লাইনে পাসওয়ার্ড সহ sudo ব্যবহার করবেন তা আলোচনা করে ? , এবং এই নিবন্ধটি পাসওয়ার্ড ছাড়াই sudo কীভাবে ব্যবহার করবেন তা আলোচনা করে ?
chmod +x script.sh
এবং তারপরেsudo -u username script.sh
i
যদি আপনি ব্যবহারকারীর পরিবেশ অর্জন করতে চান তবে বিকল্পটি অন্তর্ভুক্ত করুন
এই উত্তরটি ভাল, তবে সার্ভারফল্টের পরামর্শটি কিছুটা বিপজ্জনক - যে কাউকে রুট হিসাবে চালানোর অনুমতি দেয়! সুতরাং আমি এখানে পোস্ট করছি কারণ আমি মন্তব্যটি ফর্ম্যাট করতে পারি না।
আপনার প্রয়োজন মতো যথাযথ প্রয়োজনীয় অনুমতিগুলি দেওয়ার জন্য আমি ভিজুডো ব্যবহার করার পরামর্শ দেব। টাইপ করুন visudo
এবং এর মতো একটি লাইন যুক্ত করুন:
username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2
আপনার যদি অনেক হোস্টে একই জিনিস চালানোর দরকার হয় তবে আপনি এটি দিয়ে এটি খুলতে পারেন:
username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2
তবে আমি ** * ব্যবহারও করব না:
username ALL=(ALL) NOPASSWD: ALL
বা ব্যবহারকারীর নাম হোস্টনাম = সমস্ত
Sudoer man পৃষ্ঠা রক্তাক্ত বিবরণ প্রচুর আছে
username
ব্যবহারকারীর নাম দিয়ে কমান্ডটি চালাতে সক্ষম হবেন) the যদি আপনি চালানোতে চান নির্বাহযোগ্য কেবল একটি নির্দিষ্ট ব্যবহারকারীর দ্বারা এক্সিকিউটেবল হয় তবে তা খুব ভাল - কেবলমাত্র সেই ব্যবহারকারীর sudo -u username commandline
নামটি স্ক্রিপ্টের লাইনে দিন।
# আমি = পছন্দ:
#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"
echo 1: $USER
#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_
echo 3: $USER
# ./run
1: root
2: nobody
3: root
এটি সম্পর্কে তেমন নিশ্চিত নয়, তবে আপনি যদি চান যে কেবলমাত্র স্ক্রিপ্টের শেষটি অন্য কোনও ব্যবহারকারী হিসাবে চলবে, আপনি যুক্ত করতে পারেন su someuser
স্ক্রিপ্টের শেষের আগে ।
আমি কিছু অনুপস্থিত করছি?
আশা করি এইটি কাজ করবে,
শুভেচ্ছা সহ
এইভাবে, কোনও স্ক্রিপ্টের শেষেটি বিভিন্ন ব্যবহারকারী (মূল) দ্বারা কার্যকর করা হবে। কল $[LINENO+2]
এবং exit $?
কল নোট করুন । এগুলি একবারে সম্পাদন করতে এবং sudo
কলটির প্রস্থান কোড সংরক্ষণ করার জন্য স্ক্রিপ্টের শেষ করা প্রয়োজন ।
#!/bin/bash
echo $USER
# pipe the rest of this script via a sudo call
tail -n +$[LINENO+2] $0 | exec sudo bash
exit $?
echo $USER
exit 1