tutorials / linux / chapter-06.md · utf-8 ⬇ download chapter-06.md
فصل ششم: کاربران و گروهها در لینوکس
Linux Users & Groups
لینوکس از ابتدا با هدف استفاده در محیطهای چندکاربره طراحی شده است.
برخلاف سیستمهایی که معمولاً برای یک کاربر ساخته میشوند، لینوکس میتواند همزمان توسط چندین کاربر استفاده شود؛ به همین دلیل مدیریت کاربران و گروهها یکی از بخشهای مهم این سیستمعامل محسوب میشود.
در فصل قبل یاد گرفتیم که هر فایل در لینوکس دارای مالک و سطح دسترسی مشخصی است.
اما برای درک کامل Permissionها، باید بدانیم:
کاربر چیست؟ گروه چیست؟ سیستم چگونه کاربران را مدیریت میکند؟
در این فصل با ساختار کاربران، گروهها و ابزارهای مدیریت آنها در لینوکس آشنا میشویم.
مفهوم User در لینوکس
User یا کاربر، هویتی است که سیستمعامل برای تشخیص افراد و برنامهها از آن استفاده میکند.
هر کاربر دارای اطلاعات مشخصی است:
- نام کاربری
- شناسه کاربر (UID)
- گروه اصلی
- پوشه خانگی
- مجوزهای دسترسی
زمانی که یک کاربر وارد سیستم میشود، لینوکس با استفاده از اطلاعات حساب او مشخص میکند:
- چه فایلهایی را میتواند مشاهده کند.
- چه دستورهایی را میتواند اجرا کند.
- چه منابعی در اختیار او قرار دارد.
چرا لینوکس چندکاربره است؟
یکی از ویژگیهای مهم لینوکس، Multi-user بودن آن است.
یعنی چندین کاربر میتوانند روی یک سیستم فعالیت کنند.
برای مثال:
یک سرور لینوکسی ممکن است شامل:
- مدیر سیستم
- توسعهدهندگان
- سرویسهای نرمافزاری
- کاربران معمولی
باشد.
هرکدام از این کاربران باید دسترسیهای متفاوتی داشته باشند.
این جداسازی باعث افزایش امنیت و مدیریت بهتر سیستم میشود.
انواع کاربران در لینوکس
به صورت کلی کاربران لینوکس به چند دسته تقسیم میشوند:
کاربر Root
Root قدرتمندترین کاربر سیستم است.
شناسه آن معمولاً:
UID = 0
است.
Root میتواند:
- تمام فایلها را تغییر دهد.
- کاربران جدید ایجاد کند.
- نرمافزار نصب کند.
- تنظیمات سیستم را تغییر دهد.
- سرویسها را مدیریت کند.
به دلیل قدرت زیاد، استفاده مستقیم از root باید با احتیاط انجام شود.
کاربران معمولی
کاربران عادی برای استفاده روزمره ساخته میشوند.
این کاربران معمولاً:
- دسترسی محدود دارند.
- نمیتوانند فایلهای سیستمی را تغییر دهند.
- برای کارهای شخصی و توسعه استفاده میشوند.
کاربران سیستمی
برخی کاربران برای اجرای سرویسها و برنامههای سیستم ایجاد میشوند.
مثال:
- www-data برای وبسرورها
- mysql برای پایگاه داده
- sshd برای سرویس SSH
این کاربران معمولاً انسان نیستند، بلکه توسط نرمافزارها استفاده میشوند.
مفهوم Group در لینوکس
Group یا گروه، مجموعهای از کاربران است که میتوانند دسترسیهای مشترک داشته باشند.
به جای اینکه برای هر کاربر جداگانه مجوز تعریف کنیم، میتوانیم کاربران را داخل یک گروه قرار دهیم.
مثال:
فرض کنید یک تیم برنامهنویسی داریم.
اعضا:
- Ali
- Sara
- Reza
میتوانیم یک گروه بسازیم:
developers
و هر سه کاربر را عضو آن کنیم.
حالا میتوانیم مجوز فایلهای پروژه را برای کل گروه تنظیم کنیم.
User و Group چگونه با فایلها ارتباط دارند؟
هر فایل در لینوکس دارای:
- مالک (User Owner)
- گروه مالک (Group Owner)
است.
مثال:
-rw-r--r-- 1 amir developers project.txt
در این مثال:
مالک فایل:
amir
گروه فایل:
developers
است.
مشاهده اطلاعات کاربر
برای مشاهده اطلاعات کاربر فعلی:
id
استفاده میکنیم.
مثال:
id
خروجی:
uid=1000(amir) gid=1000(amir) groups=1000(amir)
این اطلاعات شامل:
- UID
- GID
- گروههای کاربر
است.
مشاهده کاربران وارد شده
برای مشاهده کاربران فعال:
who
استفاده میشود.
مثال:
who
دستور:
w
اطلاعات بیشتری نمایش میدهد:
- کاربران فعال
- زمان ورود
- فعالیت فعلی
فایل passwd
اطلاعات اصلی کاربران در فایل:
/etc/passwd
ذخیره میشود.
برای مشاهده:
cat /etc/passwd
هر خط مربوط به یک کاربر است.
نمونه:
amir:x:1000:1000:Amir:/home/amir:/bin/bash
اطلاعات شامل:
- نام کاربر
- UID
- GID
- مسیر Home
- Shell پیشفرض
است.
فایل shadow
رمزهای عبور کاربران در فایل:
/etc/shadow
نگهداری میشوند.
این فایل فقط توسط root قابل مشاهده است.
برای امنیت، رمزها به صورت Hash ذخیره میشوند، نه متن ساده.
فایل group
اطلاعات گروهها در:
/etc/group
قرار دارد.
مشاهده:
cat /etc/group
ساخت کاربر جدید
برای ساخت کاربر جدید از:
useradd
استفاده میشود.
مثال:
sudo useradd ali
برای ساخت کاربر همراه با پوشه Home:
sudo useradd -m ali
ساخت کاربر با adduser
در برخی توزیعها مانند Debian و Ubuntu دستور:
adduser
وجود دارد.
مثال:
sudo adduser ali
این دستور تعاملی است و اطلاعات بیشتری درخواست میکند.
تنظیم رمز عبور کاربر
برای تعیین رمز عبور:
passwd
استفاده میشود.
مثال:
sudo passwd ali
حذف کاربر
برای حذف کاربر:
sudo userdel ali
برای حذف همراه با Home:
sudo userdel -r ali
تغییر اطلاعات کاربر
برای تغییر تنظیمات کاربر:
usermod
استفاده میشود.
مثال:
تغییر Shell:
sudo usermod -s /bin/bash ali
ایجاد گروه جدید
برای ساخت گروه:
groupadd
استفاده میشود.
مثال:
sudo groupadd developers
اضافه کردن کاربر به گروه
مثال:
sudo usermod -aG developers ali
اکنون کاربر ali عضو گروه developers است.
UID و GID چیست؟
هر کاربر دارای یک شناسه عددی است.
UID
User ID
شناسه کاربر است.
مثال:
UID=1000
GID
Group ID
شناسه گروه است.
مثال:
GID=1000
سیستم به جای نام، در سطح داخلی از این اعداد استفاده میکند.
sudo و مدیریت کاربران
بسیاری از عملیات مدیریت کاربران نیازمند دسترسی root هستند.
به همین دلیل از:
sudo
استفاده میکنیم.
مثال:
sudo useradd test
امنیت در مدیریت کاربران
مدیریت کاربران بخش مهمی از امنیت سیستم است.
اصول مهم:
- برای هر شخص حساب جداگانه ایجاد کنید.
- از استفاده دائمی از root خودداری کنید.
- دسترسیهای غیرضروری را حذف کنید.
- رمزهای قوی استفاده کنید.
- کاربران بلااستفاده را حذف کنید.
تمرینهای فصل ششم
[01]مشاهده اطلاعات کاربر
id
[02]مشاهده کاربران فعال
who
[03]ساخت کاربر جدید
sudo adduser testuser
[04]ساخت گروه
sudo groupadd linuxusers
[05]اضافه کردن کاربر به گروه
sudo usermod -aG linuxusers testuser
جمعبندی فصل ششم
در این فصل یاد گرفتیم:
- User در لینوکس چیست.
- Group چه کاربردی دارد.
- تفاوت root و کاربران معمولی چیست.
- چگونه کاربران را مشاهده کنیم.
- چگونه کاربر جدید ایجاد کنیم.
- چگونه گروهها را مدیریت کنیم.
- UID و GID چه هستند.
- فایلهای مهم مدیریت کاربران کداماند.
شناخت کاربران و گروهها یکی از پایههای مدیریت حرفهای لینوکس است.
بدون درک این مفاهیم، مدیریت امنیت، سرورها و سیستمهای بزرگ امکانپذیر نیست.