کنترل سرویس ها و سطوح اجرایی در لینوکس


به این مطلب امتیاز دهید

در این مقاله آموزشی از نیوزسک راجب کنترل سرویس ها و سطوح اجرایی در لینوکس صحبت خواهیم کرد.

یک فرایند، برنامه ای در حال اجرا شدن می باشد. فرایند ها می توانند به دو صورت Foreground و پا Background اجرا شوند.

سرویس ها یا Daemon ها فرایند هایی هستند که در Background اجرا می شوند و خدماتی را فراهم می کنند. در انتهای نام Daemon ها حرف d می آید مانند sshd که مخفف Secure Shell Daemon است و سرویس OpenSSH را فراهم می کند. سرویس ها و Daemon ها هیچ گونه تعاملی با کاربر ندارند و در پس زمینه به اجرای خود ادامه می دهند. هنگامی که سیستم را روشن می کنیم و Kernel سیستم عامل درون حافظه اصلی (RAM) بارگذاری می شود اولین فرایندی که ایجاد می شود، init است با 1=PID. این فرایند والد تمامی دیگر فرآیند ها است. init غالبا و نه همیشه والد تمامی سرویس ها (Daemon ها) می باشد و به همین خاطر است که شناسه والد (PPID) تمامی سرویس ها (Daemon ها)، فرایند init است. سرویس هایی که در لینوکس می توانند به دو صورت کنترل شوند:

  1. به صورت Standalone که در این حالت سرویس تحت کنترل فرایند init می
    باشد.
  2. سرویس تحت کنترل inetd یا xinetd می باشد.

از فرمان زیر استفاده کنید، تا رابطه میان سرویس ها و فرایند init را جهت کنترل سرویس ها و سطوح اجرایی مشاهده کنید.

[su_label type=”info”]ps aex -o pid,ppid,tty,user,fname[/su_label]

سرویس ها (Daemon ها) غالبا توسط فرایند init در زمان بوت شدن سیستم ایجاد می شوند و چون به صورت Background اجرا می شوند، نیازی به تعامل با کاربران از این طریق ندارند. سرویس ها در پس زمینه فعال بوده و به محض دریافت درخواست، به آن پاسخ می دهند. به همین خاطر است که علامت ? در زیر ستون TTY مربوط به آنها قرار می گیرد. سرویس هایی مربوط به برنامه هایی مانند MySQL ,Apache ,OpenSSH ,NFS ,DHCP و … در ابتدا توسط فرایند init ایجاد می شوند و به محض دریافت درخواست، یک نمونه (فرزند) را ایجاد می کنند (توسط fork) و پاسخ دهی به آن در خواست را به فرزندانش واگذار می کند.

[su_label type=”info”]ps aex -o pid,ppid,tty,user,fname | grep ssh[/su_label]

فرمان pstree را اجرا کنید تا رابطه میان فرایند ها (رابطه والدفرزند) مشاهده کنید.
برخی از فرایند ها مانند MYSQL ,Apache ,SSH یک نام کاربری روی سیستم (زمانی که سرویس را نصب کرده اید) ایجاد می کنند. این گونه کاربران را، کاربران سیستمی می نامند و تفاوت آنها نسبت به کاربران معمولی در این است که، کاربران سیستمی اجازه Login به سیستم را ندارند. به همین خاطر است که در خط مربوط به آنها در فایل passwd از پوسته nologin استفاده شده است. دو مورد را باید درباره کاربران مربوط به سرویس ها رعایت نمایید، این کاربران نباید توانایی Login به سیستم را داشته باشند. پس باید از پوسته nologin در هنگام ایجاد آنها استفاده نمایید.

  • معمولا، دارای UID و GID کوچتر از ۱۰۰ هستند. (اما هیچ اجباری وجود ندارد)
  • معمولا نام کاربری و گروه مروبط به سرویس، همنام با همان سرویس انتخاب می شود.

به هیچ عنوان، کاربر root و یا هر کاربری که امکان Login به سیستم را دارد، به عنوان کاربر پیش فرض یک سرویس انتخاب نکنید. فرض کنید می خواهید سرویس httpd ( برنامه Apache) را نصب کنید. برای ایجاد کاربر و گروه پیش فرض، از فرمان های زیر استفاده کنید:

[su_label type=”info”]groupadd -g 50 apache [/su_label]

[su_label type=”info”]useradd -u 50 -g 50 -s /sbin/nologin -d /var/www[/su_label]

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.