فرایند ورود کابران (Login) به سیستم عامل لینوکس (کاربرد فرایند getty)

نخستین فرایندی که حین بوت شدن لینوکس ایجاد می شود، فرایند init است. init والد تمامی فرایند ها با شناسه PID=1 است. تمامی دیگر فرایند ها توسط init ایجاد می شوند. پس از ایجاد init دستور های درون فایل etc/rc.local/ اجرا می شوند و سپس فرایند init، فرایندی به نام getty را ایجاد می کند. این فرایند نیز دستور login را برای تعیین هویت و اعتبار سنجی کاربران، اجرا می کند. در ادامه مروری بر فرایندی که اتفاق می افتد تا کاربری به سیستم Login کند، گفته شده است.

پس از بوت شدن سیستم و ایجاد فرایند init گام های زیر اتفاق می افتد :

  • فرایند init، فرایند getty را ایجاد می کند.
  • فرایند getty، دستور login را اجرا می کند.
  • دستور login اعتبار کاربر (ورود نام کاربری/گذرواژه) را بررسی می کند.
  • فرایند getty، پوسته (Shell) کاربر را ایجاد می کند. (مانند Bash)
  • فرایند getty، فایل های تنظیمات پوسته را می خواند. (فایل های bashrc, bash_profile در صورتی که از پوسته Bash استفاده شده باشد)
  • در نهایت فرایند getty، خط اعلان (Prompt) را برای ورود دستور ها نشان می دهد.

در ادامه جزییات هر یک از گام ها پس از بوت شدن سیستم تا وارد شدن کاربر به سیستم گفته شده است.

  • گام صفر : فرایند init ایحاد شده و سپس از فایل etc/inittab/، سطح اجرایی پیش فرض را انتخاب و سپس تمامی دستور های درون فایل etc/rc.local/ را اجرا می کند. سپس init، فرایند getty را ایجاد می کند. getty فرایندی است که بر تکمیل شدن فرایند ورود به سیستم نظارت خواهد داشت.
  • گام نخست : فرایند getty، دستور login را آغاز (اجرا) می کند و اعلان Login را برای وارد کردن نام کاربری، به کاربر نشان می دهد. پس از وارد کردن نام کاربری و در صورت وجود داشتن آن، اعلان ورود گذرواژه (User Password) به کاربر نشان داده می شود. گذرواژه ای که کاربران وارد می کنند بصورت پنهان از دید است و روی صفحه نمایش، نشان داده نمی شود.
  • گام دوم : فرایند getty، اعتبار حساب کاربری وارد شده را توسط جستجو در فایل های etc/passwd/ و etc/shadow/ بررسی می کند. در صورتی که گذرواژه وارد شده با یکی از خطوط فایل etc/shadow/ مطابقت داشته باشد، فرایند getty اقدام به اهدای پوسته به کاربر و تنظیم پارامتر های آن می کند، در غیر اینصورت فرایند Login را متوقف و دوباره دستور login را برای نشان دادن خط اعلان Login اجرا می کند. اگر کاربر سه مرتبه پی در پی گذرواژه را نادرست وارد کند، فرایند getty توسط ماژول PAM به مدت 10 ثانیه فرایند Login به سیستم را غیر فعال می کند.
  • گام سوم : سپس فرایند getty خصوصیات هر کاربر مانند :UID,GID,Home Directory و User Shell را از خط مطابق با کاربر از فایل etc/passwd/ می خواند و آنها را به متغیر های سیستمی مرتبط با خصوصیات یعنی UID$ و GID$ و HOME$ و SHELL$ نسبت می دهد.
  • گام چهارم : پس از خواندن خصوصیات کاربر و نسبت دادن به متغیر های سیستمی مرتبط و پیش از آغاز یک پوسته برای کاربر، فرایند getty، فایل etc/motd/ را می خواند و پیام درون آن را به کاربر نشان می دهد. این فایل مخفف Message of Today می باشد.
  • گام پنجم : سپس فرایند getty، فایل سراسری تنظیمات پوسته را می خواند، و تمامی نام های مستعار و متغیر ها و توابع درون این فایل را بارگذاری می کند.
  • گام ششم : پس از خواندن فایل etc/profile/، فرایند getty فایل های مرتبط با پوسته کاربر را، از دایرکتوری خانگی آن کاربر می خواند. اگر پوسته کاربر Bash باشد، آنگاه فایل های bashrc و bash_profile را می خواند. فرایند getty دایرکتوری خانگی کاربر را از گام سوم و خواندن از فایل etc/passwd/ و نسبت دادن متغیر HOME$، شناسایی کرده است.
  • گام هفتم : در نهایت فرایند getty، پوسته پیش فرض کاربر را اجرا می کند، که از گام سوم و از متغیر SHELL$ بدست آورده بود. از این پس کاربر می تواند دستورها را اجرا و خروجی آنها را ببیند.