Sudo su একটি শিশু টার্মিনাল তৈরি করে?


9

এই কি ঘটেছে যখন আমি মৃত্যুদন্ড কার্যকর করা হয় sudo suদ্বারা অনুসরণexit

$ sudo su
# exit
exit
$ 

প্রস্থান আদেশটি আমার টার্মিনাল এমুলেটরটি বন্ধ করে না।

এটি কি শিশু টার্মিনাল?

উত্তর:


16

একবার আপনি কার্যকর করুন sudo suবা একটি নতুন শেল তৈরি হচ্ছে।su user

এক্সিকিউট করা exit(বা Ctrl+ D) সদ্য তৈরি হওয়া শেলটি থেকে প্রস্থান করবে এবং আপনাকে আপনার আগের শেলটিতে ফিরিয়ে আনবে।

  1. শুরুর পয়েন্ট - ব্যাশ শেল PID 25050 এ চলছে:

    $ ps
      PID TTY          TIME CMD
    25050 pts/17   00:00:00 bash
    25200 pts/17   00:00:00 ps
    
  2. রানিং sudo suএকটি নতুন বাশ প্রক্রিয়া তৈরি করে যা পিআইডি 25203 এ চলছে:

    $ sudo su
    # ps
      PID TTY          TIME CMD
    25201 pts/17   00:00:00 sudo
    25202 pts/17   00:00:00 su
    25203 pts/17   00:00:00 bash
    25213 pts/17   00:00:00 ps
    # exit
    
  3. প্রস্থান sudo suএবং প্রারম্ভের পয়েন্টে ফিরে - ব্যাশ শেল PID 25050 এ চলছে:

    $ ps
      PID TTY          TIME CMD
    25050 pts/17   00:00:00 bash
    25214 pts/17   00:00:00 ps
    $
    

তাহলে কি এটিকে শিশু শেল হিসাবে বিবেচনা করা যেতে পারে?
রেषভ রঞ্জন

1
@ রিসরভরঞ্জন - হ্যাঁ
ইয়ারন

17

একই টার্মিনাল, বিভিন্ন শেল।

শিশু শেল সহ আপনি শেল থেকে চালিত শিশু প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে একই টার্মিনালটি ব্যবহার করে। এটি কোনওভাবেই সুনির্দিষ্ট নয় sudo- আপনি যখন শেল থেকে কোনও প্রোগ্রাম চালাবেন এটি সাধারণত এটি কাজ করে।

শেল এবং টার্মিনালগুলি আলাদা জিনিস। একটি শেল হ'ল আপনি টার্মিনালে কমান্ড চালানোর জন্য যা ব্যবহার করেন । একটি শেল ইন্টারেক্টিভভাবে কাজ করতে পারে - এটি আপনাকে একটি প্রম্পট দেয়, আপনি এটি একটি কমান্ড দেন, এটি কমান্ডটি চালায় বা কেন এটি করতে পারে না সে সম্পর্কে একটি ত্রুটি দেখায় এবং শেলটি ছাড়ার আগে পর্যন্ত প্রক্রিয়া পুনরাবৃত্তি করে। বা এটি একটি স্ক্রিপ্ট চালিয়ে, নিরবচ্ছিন্নভাবে পরিচালনা করতে পারে ।

যদিও আপনার টার্মিনালটি সম্ভবত (সম্ভবত!) অনুকরণযুক্ত , শারীরিক নয় , তবে উবুন্টুর মতো ইউনিক্স-এর মতো অপারেটিং সিস্টেমগুলি আপনার প্রতিটি টার্মিনালের জন্য ডিভাইস নোড দেয় এবং আপনি ttyকমান্ডটি দিয়ে কোন টার্মিনালটি ব্যবহার করছেন তা পরীক্ষা করতে পারেন । এটি সাধারণত হবে /dev/pts/0, /dev/pts/1, /dev/pts/2, ইত্যাদি , একটি জন্য টার্মিনাল উইন্ডোর বা SSH সংযোগ , অথবা /dev/tty1, /dev/tty2, ইত্যাদি , জন্য ভার্চুয়াল কনসোল । আসলে কী ttyতা আপনাকে জানাতে হয় যে কোন টার্মিনাল, যদি কোনও হয় তবে ইনপুট নেওয়া হচ্ছে; বিস্তারিত জানার জন্য নীচে দেখুন।

ek@Io:~$ tty
/dev/pts/1
ek@Io:~$ bash
ek@Io:~$ tty
/dev/pts/1
ek@Io:~$ exit
exit
ek@Io:~$ sudo su
[sudo] password for ek:
root@Io:/home/ek# tty
/dev/pts/1
root@Io:/home/ek# exit
exit
ek@Io:~$

আপনি এটি দেখতে পাচ্ছেন, যদিও ইয়ারন খুব ভালভাবে ব্যাখ্যা করার সাথে সাথেsudo su একটি নতুন শেল তৈরি করেছে , আপনি যে টার্মিনালটি ব্যবহার করছেন সেটি পরিবর্তন হয় না।

অবশ্যই, টার্মিনালটি একইরূপে পর্যবেক্ষণ করার আরেকটি উপায় রয়েছে: আপনি এখনও একইভাবে এবং একই জায়গায় ইনপুট লিখছেন, এবং একই পদ্ধতিতে এবং একই জায়গায় আউটপুট পড়ছেন।

কয়েকটি প্রযুক্তিগত বিবরণ

সর্বাধিক কমান্ড আপনি একটি শেল চালানোর - যেমন ls, cp, mv, rm, touch, wc, du, df, ssh, su, sudo, sh, bash, এবং অনেক আরো অনেক কিছু - কারণ একটি শিশু প্রক্রিয়া তৈরি করতে হবে। এই শিশু প্রক্রিয়াটির পিতা-মাতা হিসাবে আপনার শেল রয়েছে তবে এটি একটি পৃথক প্রোগ্রাম। ডিফল্টরূপে, এটি আপনার শেলের মতো একই টার্মিনালের সাথে সংযুক্ত ।

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

এগুলি প্রধান ব্যতিক্রমগুলি:

যদিও আমি শিশু প্রসেসগুলি তাদের পিতামাতার মতো একই টার্মিনালের সাথে সংযুক্ত হওয়ার ব্যপারে সত্যই বিবেচনা করব না, তবে মনে রাখবেন যে আপনি যে প্রক্রিয়াটি টার্মিনালের শেল থেকে চালাচ্ছেন তা সর্বদা সেই টার্মিনাল থেকে ইনপুট নেবে না বা সেই টার্মিনালে আউটপুট প্রেরণ করবে না :

যেহেতু ttyকমান্ডটি কেবল তার স্ট্যান্ডার্ড ইনপুটটি কোন টার্মিনালটি পরীক্ষা করে, আপনি এটি "বোকা" করতে পারেন:

ek@Io:~$ tty
/dev/pts/1
ek@Io:~$ tty </dev/pts/0
/dev/pts/0

বা, কম বিচক্ষণতার সাথে:

ek@Io:~$ tty </dev/null  # not a terminal
not a tty
ek@Io:~$ tty <&-         # closes the input stream
not a tty
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.