کرنل لینوکس این امکان را به کاربرانی که هویت آنها تصدیق شده باشد میدهد تا بتوانند به فایلها و دایرکتوری هایی که دسترسی به آنها برای آن کاربر مد نظر باز گذاشته شده است دست یابند. در لینوکس، هویت هر کاربر با یک شناسه ی کاربری که تحت عنوان uid (بر گرفته از User ID به معنی شناسه ی کاربری) شناخته میشود مشخص میگردد؛ در عین حال، دیتابیسی در سیستم عامل گنو/لینوکس وجود دارد که Username (یوزرنیم یا نام کاربری) هر کاربر به همراه uid وی در آن به ثبت میرسند.
زمانی که در لینوکس یک کاربر جدید ایجاد میکنیم، اطلاعات این کاربر جدید به این دیتابیس افزوده شده و یک دایرکتوری home اختصاصی برای این کاربر جدید ایجاد میگردد.
در فایلی تحت عنوان passwd که در مسیر etc/passwd/ قرار دارد، اطلاعات قرار گرفته در جدول زیر برای هر کاربر جدیدی که ایجاد شود ذخیره میشود:
نام فیلد | جزئیات | سایر توضیحات |
---|---|---|
Username | نام کاربری | نام کاربری کاربر برای لاگین کردن به سیستم می بایست بین ۱ الی ۳۲ کاراکتر طول داشته باشد |
Password | رمزعبور | رمزعبور کاربر که با حرف x نمایش داده می شود که رمزگذاری شده است. رمزعبور زمانی که در لینوکس تایپ می شود هیج گاه نمایش داده نمی شود تا اطلاعات محرمانه ی کاربر لو نروند. |
User ID (UID) | هر کاربری در لینوکس دارای یک شناسه ی منحصر به فرد است. | شناسه ی ۰ برای کاربر روت در نظر گرفته شده است. کاربران معمولی از شناسه های ۱۰۰۰ به بالا برخوردارند به جز توزیع RHEL که از عدد ۵۰۰ شروع می شود. |
Group ID (GID) | شناسه ی گروه کاربری | این شناسه در مسیر etc/group/ ذخیره می گردد. |
User Info | این فیلد اختیاری است و این امکان را به ما می دهد تا اطلاعات بیشتری از کاربر همچون نام اش ذخیره سازیم. | |
Home Directory | مسیر قرار گیری دایرکتوری هوم کاربر | برای مثال home/sokanacademy/ |
Shell | مسیر قرار گیری Shell پیش فرض کاربر | برای مثال bin/bash/ |
اگر بخواهیم فیلدهای فوق الذکر را در کنار هم داشته باشیم، می توانیم نمونه ی یوزر روت زیر را در نظر بگیریم:
root:x:0:0:root:/root:/bin/bash
انواع اکانت های کاربری در لینوکس
به صورت پیشفرض، لینوکس دارای ۴ نوع اکانت کاربری به شرح زیر است:
- روت
- سیستم
- نرمال
- شبکه
به عنوان یک راهکار امنیتی، توصیه میشود که تا حد ممکن پرمیشن های محدودی به اکانت های کاربری اختصاص دهید و همواره مراقب باشید تا اکانت های غیر فعال را حذف نمایید.
نکته |
برای آن که متوجه شویم آخرین باری که یک کاربر در سیستم لاگین کرده چه زمانی بوده، میتوانیم از دستور last استفاده نماییم. |
به طور کلی، root اکانتی در لینوکس است که دارای بیشترین سطح دسترسی ها و پرمیشن ها است؛ با استفاده از اکانت روت میتوان به مدیریت کامل سیستم پرداخت از آن جمله میتوان به حذف/اضافه نمودن اکانت های جدید، تغییر پسورد، نصب نرمافزار، تغییر فایلهای سیستمی، ریبوت سرویس های سیستمی و غیره پرداخت.
زمانی که ما با اکانت root در سیستم لاگین می کنیم، در کامند لاین علامت # نمایش داده میشود که این علامت حاکی از روت بودن سیستم است:
root@sokanacademy-inspiron-1545:/#
هشدار |
زمانی که با اکانت روت وارد سیستم می شویم، می بایست خیلی مراقب باشیم چرا که اگر دستوری را به اشتباه اجرا کنیم، شاید امکان جبران خرابی ها به بار آمده دیگر وجود نداشته باشد! |
مقایسه ی دستورات sudo و su
در لینوکس این امکان برای کاربران عادی که روت نیستند فراهم شده تا در صورت نیاز، بتوانند به صورت موقت از پرمیشن های روت برخوردار شده و کارهایی که نیاز به سطح دسترسی روت دارند را عملی سازند. برای این کار، ۲ دستور مختلف وجود دارد که عبارتند از sudo و su که تفاوتهای این ۲ دستور در جدول زیر ارائه شده است:
sudo su زمانی که با استفاده از این دستور قصد داریم پرمیشن های روت را به کاربری بدهیم، نیاز به وارد کردن پسورد کاربر داریم نه پسورد روت زمانی که با استفاده از این دستور قصد داریم پرمیشن های روت را به کاربری بدهیم، می بایست پسورد روت را وارد نماییم. دادن پسورد روت به کاربران نرمال هرگز توصیه نمی شود. این دستور از قابلیت های بیشتری برخوردار بوده و به نوعی ایمن تر است زمانی که کاربری با استفاده از دستور su به پرمیشن روت دسترسی پیدا کند، این کاربر امکان انجام هر کاری را خواهد داشت. این دستور قابلیت های زیادی دارا است. این دستور از قابلیت های اندکی برخوردار است.
قابلیتهای دستور sudo
دستور sudo این امکان را در اختیار ما قرار میدهد تا بتوان رفتار کاربرانی که از این دستور استفاده نموده اند را رصد کرد؛ به عبارت دیگر، اگر کاربری با استفاده از دستور sudo اقدام به گرفتن پرمیشن های روت کند اما پسورد وارد شده توسط وی اشتباه باشد، پیغامی همچون چیزی که در ادامه مشاهده میکنید در فایل لاگ های سیستمی ذخیره میگردد:
authentication failure; logname=op uid=0 euid=0 tty=/dev/pts/6 ruser=op rhost= user=op
conversation failed
auth could not identify password for [op]
op : 1 incorrect password attempt ;
TTY=pts/6 ; PWD=/var/log ; USER=root ; COMMAND=/bin/bash
همانطور که میبینیم، کلیهٔ جزئیات در اختیار ما قرار خواهد گرفت.