রুট ব্যবহারকারীদের জন্য বাশ প্রোফাইল সসোর্সিং


17

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

আমি যখন লগ ইন করি তখন আমি ব্যবহারকারী হিসাবে এটি করি adam। এ্যালিয়াসগুলি /Users/adam/.bash_profileলোড করা হয়েছে এবং আমি টার্মিনালটি টানানোর সাথে সাথে এগুলি ব্যবহার করতে পারি। আমি কোনও .bashrcফাইল ব্যবহার করি না এবং এটি ঠিক আছে।

প্রতিবার এবং পরে, আমি suটার্মিনালটিতে টাইপ করে এবং পরে আমার পাসওয়ার্ডটি প্রবেশ করে রুটে স্যুইচ করি। প্রম্পট পরিবর্তিত হয় এবং আমি এখন রুট ব্যবহারকারী। আমার প্রশ্নটি হ'ল: রুট হয়ে যাওয়ার সাথে সাথেই, আমার রুট ব্যাশ প্রোফাইলটি নিজেই প্রোফাইল ফাইলটি উত্স না করেই লোড করা যায়? আমি জানিনা যে এটি স্বয়ংক্রিয়ভাবে ঘটে না কারণ হ'ল আমার রুট প্রোফাইল ফাইলে আমার একই এলিয়াস রয়েছে এবং আমার /Users/adam/.bash_profile। রুট ব্যবহারকারী হওয়ার পরে, যদি আমি টাইপ না করি তবে source [root_profile_file]এগুলি কাজ করে না। আমি নীচের অনুমতিগুলি সেটআপ করার চেষ্টা করেছি এবং তারপরে টার্মিনালের মাধ্যমে রুটে স্যুইচ করতে চেষ্টা করেছি তবে সেগুলির কোনওটিই স্বয়ংক্রিয়ভাবে প্রোফাইল / এলিয়াসগুলি উত্স করে না (দ্রষ্টব্য, নীচের বিকল্পগুলির সাথে আমার একসাথে সেট আপ নেই তাই আমি মনে করি না যে আমি ' আমি সিস্টেমকে বিভ্রান্ত করছি):

বিকল্প 1: আমার এলিয়াসগুলি ভিতরে রাখুন/etc/profile

বিকল্প 2:

  • in /etc/profile, .োকান[ -r /etc/bashrc ] && . /etc/bashrc
  • আমার এলিয়াস গুলো .ুকিয়ে দাও /etc/bashrc

বিকল্প 3:

  • in /etc/bash_profile, .োকান[ -r /etc/bashrc ] && . /etc/bashrc
  • আমার এলিয়াস গুলো .ুকিয়ে দাও /etc/bashrc

বিকল্প 4: আমার এলিয়াসগুলি ভিতরে রাখুন/var/root/.profile

বিকল্প 5:

  • in /var/root/.profile, .োকান[ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • আমার এলিয়াস গুলো .ুকিয়ে দাও /var/root/.bashrc

বিকল্প 6:

  • in /var/root/.bash_profile, .োকান[ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • আমার এলিয়াস গুলো .ুকিয়ে দাও /var/root/.bashrc

দয়া করে মনে রাখবেন, উপরের যে কোনওটির সাথে আমি যদি রুটে চলে যাই এবং টাইপ source root_profile_fileকরে এলিয়াসগুলি লোড করা হয় তবে কেবল যদি আমি নিজেই ফাইলটি নিজে হাতে উত্স করি তবে। সম্ভবত আমি পুরোপুরি ভুল বুঝেছি যে বাশ কীভাবে কাজ করে এবং রুটে স্যুইচ করার পরে কোনও প্রোফাইল ফাইল স্বয়ংক্রিয়ভাবে উত্স পাওয়া সম্ভব নয় তবে আমি আশা করছি এর একটি সহজ সমাধান রয়েছে। এই বার্তাটি পড়ার জন্য যে কেউ সময় নিয়েছে তার আগাম ধন্যবাদ।

উত্তর:


14

আপনি যে সমস্যাটির মুখোমুখি হচ্ছেন তা হ'ল আপনি যখন suনিজে চালাবেন , আপনি কোনও 'লগইন' শেল প্রবেশ করছেন না। এর অর্থ হল আপনার পরিবেশ, কার্যনির্বাহী ডিরেক্টরি এবং uid / gid ব্যতীত সমস্ত কিছুই মূল ব্যবহারকারীর মতো থাকে।

লগইন ট্রিগারগুলি কার্যকর হয় না এবং আপনি বর্ণিত সমস্যাগুলি অনুভব করেন।

একটি সাধারণ সমস্যার সহজ সমাধান:

su -

থেকে su(1)মানুষ পৃষ্ঠা:

Su কমান্ড কমান্ড একটি লগইন সেশনে অন্য ব্যবহারকারী হতে ব্যবহার করা হয়। ব্যবহারকারীর নাম ব্যতীত অনুরোধ করা হয়েছে, সুপার সুপারভাইজার হওয়ার ক্ষেত্রে ডিফল্ট। ঐচ্ছিক যুক্তি - একটি পরিবেশ ব্যবহারকারী আশা কতটুকু ছিল হবে অনুরূপ ব্যবহারকারী সরাসরি লগ ইন প্রদান করার জন্য ব্যবহৃত হতে পারে।

এছাড়াও:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged in directly.

আপনি যদি suলগইন শেলটিতে প্রবেশ করেন, বাশ আপনার প্রত্যাশা অনুযায়ী আচরণ করবে এবং অতিরিক্ত হ্যাকি ওয়ার্কআউন্ডের প্রয়োজন ছাড়াই স্বয়ংক্রিয়ভাবে "লগইন" এ উপযুক্ত ফাইলগুলি উত্স করে।


1
আমি তবে হাই ভু'র নোটগুলিকে দ্বিতীয় করব: আপনার সত্যই, সত্যই, সত্যই কখনই suবা কখনও কাজ করা উচিত নয় root। নেই sudoযে উদ্দেশ্যে, অথবা আপনি যেমন একটি উপায় যে আপনার এ সব root ব্যবহারকারীর অধিকার উপস্থিত প্রয়োজন হয় না এ কাজ করতে পারেন।
জেসন সালাজ

আপনি এবং @ হাই ভু উভয়কে ধন্যবাদ। "সু -" কৌতুকটি করে এবং হ্যাঁ, সম্পূর্ণ বোঝা যায়, মূলটি সাধারণত এড়ানো উচিত।
অ্যাডাম সোনার

1
আমি ইতিমধ্যে su কমান্ডের পরে '-' যুক্ত করতে জানতাম, কিন্তু তবুও রুট ব্যবহারকারীর জন্য আমার .বাশ_ প্রোফাইলটি পাচ্ছি না। Sh থেকে বাশে রুট শেলটি পরিবর্তন করার বিষয়ে নীচে ফ্লোরিয়ান বিদাবীর এবং প্যাটেক্সের উত্তর আমার জন্য সমস্যাটি স্থির করেছে।
জেরেডিসি

9

প্রকৃতপক্ষে মূল ব্যবহার /bin/sh(পুরানো বোর্ন শেল), .bash_profileএবং .bashrcব্যাশ দ্বারা পড়া হয়।

এটি জটিল হয়ে ওঠে কারণ এই ফাইলগুলি কার্যকারিতা ব্যবহার করে না যা উপলভ্য নয় sh। এমনকি যদি আপনি source .bashrcবা source .bash_profile, আপনার এখনও জটিল ফাংশনগুলির সাথে উদাহরণস্বরূপ কিছু সমস্যা থাকবে।

এটি সমাধানের একটি উপায় চালানো

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash

rootএর শেল এ পরিবর্তন করতে bash


রুটের /bin/shব্যবহার /var/root/.profileফাইল। @
ম্যাটিকের

6

যখন আমার একেবারে আবশ্যক, আমি sudo bashযা আমাকে শিকড় করে কিন্তু জে রবার্টের পরিবেশের সাথে। আমার .bashrc এ রয়েছে:

# Prompt: 'jrobert@JRiMac ~' in green (red, if I'm root), '$' in white
if [[ $UID == 0 ]]; then
   export PS1="\[\e[1;31;40m\]\u@\h \W\[\e[0m\]\$ "
else
   export PS1="\[\e[32;40m\]\u@\h \W\[\e[0m\]\$ "
fi

, রেড-প্রম্পটটি আমার দিকে আর একবার আলোকিত করে জোর দেওয়ার জন্য যে আমি এখন নিজেরাই (আরও বেশি) নিজের পক্ষে ঝুঁকির মধ্যে আছি [একটি চয়ন করুন: সাহসিকতা, বোবাতা, ফ্যাট-আঙুলের প্রবণতা, ভাল পরামর্শ নিতে অনিচ্ছুক, সি সি ক্রিক) - প্যাডেল ফেলে না]।


3

আমি sudo -iরুট ব্যবহারকারীতে স্যুইচ করতে ব্যবহার করছি । এই ক্ষেত্রে, শেল কনফিগারেশনটি পড়ে নেওয়া হয় /var/root/.profile


1

সাধারণভাবে, আমি suবিপজ্জনক হিসাবে এর বিরুদ্ধে পরামর্শ দিই , কেবল এটি অনুসন্ধান করুন এবং কেন আপনি তা জানেন। আপনার প্রশ্নে, রুট অ্যাকাউন্টটি আপনার অ্যাকাউন্টের মতোই কাজ করে: এটি উত্স ~ / .bash_profile এবং / অথবা ~ / .bashrc। আমি জানি না কোনটি, তবে আমার স্বজ্ঞাততা ~ / .Bashrc এর দিকে ঝুঁকছে , তাই আপনি নিজের এলিয়াসগুলি সেখানে রাখার চেষ্টা করতে পারেন। এখানে একটি পরামর্শ:

su           # type password to get into root account
vi ~/.bashrc # put your aliases there
exit         # exit your root session
su           # try again to see if your aliases works

0

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash শুধু এই কাজ করে! আমি export PS1=...উপরের এই সমস্ত ফাইলের মধ্যে আমার রাখার চেষ্টা করেছি । ।

এই সমস্ত ফাইল থেকে /bin/shশেল, তথ্য পড়েন না! (কেবল বাশ) (ম্যাক ওএস এল ক্যাপিটান)। এবং আমাকে বাশতে শেল পরিবর্তন করতে হয়েছিল।

এছাড়াও "su -"কাজ করে। (এই শেলটি দিয়ে /var/root/.profileফাইল পড়ছে )


1
বিদ্যমান উত্তরগুলি পুনরায় কনফার্ম করার দরকার নেই ...
Nohillside

-1

এটির সমাধানের একটি উপায় হ'ল রুটের শেলটি বাশে স্যুইচ করতে নিম্নলিখিতটি চালানো:

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash

এই সমাধানটি আমার সমস্যাটিকেও ঠিক করে দিয়েছে।


-2

আপনার যদি কেবল একটি 'ডিফল্ট' ব্যবহারকারী এবং মূল ব্যবহারকারী থাকে তবে আপনি alias su="su -"'ডিফল্ট' ব্যবহারকারীর .bash_ প্রোফাইলে রাখতে পারেন এবং আপনি যে প্রভাবটি চান তা পেতে পারেন। কাজ করে এবং কোনও হ্যাকি জিনিস নেই।

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