user@linux-tutorials: ~/tutorials/06-users-and-groups — linux-tutorials

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

می‌توانیم یک گروه بسازیم:

user@linux-tutorials: ~/ch-06BASH
developers

و هر سه کاربر را عضو آن کنیم.

حالا می‌توانیم مجوز فایل‌های پروژه را برای کل گروه تنظیم کنیم.

User و Group چگونه با فایل‌ها ارتباط دارند؟

هر فایل در لینوکس دارای:

  • مالک (User Owner)
  • گروه مالک (Group Owner)

است.

مثال:

-rw-r--r-- 1 amir developers project.txt

در این مثال:

مالک فایل:

user@linux-tutorials: ~/ch-06BASH
amir

گروه فایل:

user@linux-tutorials: ~/ch-06BASH
developers

است.

مشاهده اطلاعات کاربر

برای مشاهده اطلاعات کاربر فعلی:

user@linux-tutorials: ~/ch-06BASH
id

استفاده می‌کنیم.

مثال:

user@linux-tutorials: ~/ch-06BASH
id

خروجی:

uid=1000(amir) gid=1000(amir) groups=1000(amir)

این اطلاعات شامل:

  • UID
  • GID
  • گروه‌های کاربر

است.

مشاهده کاربران وارد شده

برای مشاهده کاربران فعال:

user@linux-tutorials: ~/ch-06BASH
who

استفاده می‌شود.

مثال:

user@linux-tutorials: ~/ch-06BASH
who

دستور:

user@linux-tutorials: ~/ch-06BASH
w

اطلاعات بیشتری نمایش می‌دهد:

  • کاربران فعال
  • زمان ورود
  • فعالیت فعلی

فایل passwd

اطلاعات اصلی کاربران در فایل:

/etc/passwd

ذخیره می‌شود.

برای مشاهده:

user@linux-tutorials: ~/ch-06BASH
cat /etc/passwd

هر خط مربوط به یک کاربر است.

نمونه:

amir:x:1000:1000:Amir:/home/amir:/bin/bash

اطلاعات شامل:

  • نام کاربر
  • UID
  • GID
  • مسیر Home
  • Shell پیش‌فرض

است.

فایل shadow

رمزهای عبور کاربران در فایل:

/etc/shadow

نگهداری می‌شوند.

این فایل فقط توسط root قابل مشاهده است.

برای امنیت، رمزها به صورت Hash ذخیره می‌شوند، نه متن ساده.

فایل group

اطلاعات گروه‌ها در:

/etc/group

قرار دارد.

مشاهده:

user@linux-tutorials: ~/ch-06BASH
cat /etc/group

ساخت کاربر جدید

برای ساخت کاربر جدید از:

user@linux-tutorials: ~/ch-06BASH
useradd

استفاده می‌شود.

مثال:

user@linux-tutorials: ~/ch-06BASH
sudo useradd ali

برای ساخت کاربر همراه با پوشه Home:

user@linux-tutorials: ~/ch-06BASH
sudo useradd -m ali

ساخت کاربر با adduser

در برخی توزیع‌ها مانند Debian و Ubuntu دستور:

user@linux-tutorials: ~/ch-06BASH
adduser

وجود دارد.

مثال:

user@linux-tutorials: ~/ch-06BASH
sudo adduser ali

این دستور تعاملی است و اطلاعات بیشتری درخواست می‌کند.

تنظیم رمز عبور کاربر

برای تعیین رمز عبور:

user@linux-tutorials: ~/ch-06BASH
passwd

استفاده می‌شود.

مثال:

user@linux-tutorials: ~/ch-06BASH
sudo passwd ali

حذف کاربر

برای حذف کاربر:

user@linux-tutorials: ~/ch-06BASH
sudo userdel ali

برای حذف همراه با Home:

user@linux-tutorials: ~/ch-06BASH
sudo userdel -r ali

تغییر اطلاعات کاربر

برای تغییر تنظیمات کاربر:

user@linux-tutorials: ~/ch-06BASH
usermod

استفاده می‌شود.

مثال:

تغییر Shell:

user@linux-tutorials: ~/ch-06BASH
sudo usermod -s /bin/bash ali

ایجاد گروه جدید

برای ساخت گروه:

user@linux-tutorials: ~/ch-06BASH
groupadd

استفاده می‌شود.

مثال:

user@linux-tutorials: ~/ch-06BASH
sudo groupadd developers

اضافه کردن کاربر به گروه

مثال:

user@linux-tutorials: ~/ch-06BASH
sudo usermod -aG developers ali

اکنون کاربر ali عضو گروه developers است.

UID و GID چیست؟

هر کاربر دارای یک شناسه عددی است.

UID

User ID

شناسه کاربر است.

مثال:

UID=1000

GID

Group ID

شناسه گروه است.

مثال:

GID=1000

سیستم به جای نام، در سطح داخلی از این اعداد استفاده می‌کند.

sudo و مدیریت کاربران

بسیاری از عملیات مدیریت کاربران نیازمند دسترسی root هستند.

به همین دلیل از:

user@linux-tutorials: ~/ch-06BASH
sudo

استفاده می‌کنیم.

مثال:

user@linux-tutorials: ~/ch-06BASH
sudo useradd test

امنیت در مدیریت کاربران

مدیریت کاربران بخش مهمی از امنیت سیستم است.

اصول مهم:

  • برای هر شخص حساب جداگانه ایجاد کنید.
  • از استفاده دائمی از root خودداری کنید.
  • دسترسی‌های غیرضروری را حذف کنید.
  • رمزهای قوی استفاده کنید.
  • کاربران بلااستفاده را حذف کنید.

تمرین‌های فصل ششم

[01]مشاهده اطلاعات کاربر

user@linux-tutorials: ~/ch-06BASH
id

[02]مشاهده کاربران فعال

user@linux-tutorials: ~/ch-06BASH
who

[03]ساخت کاربر جدید

user@linux-tutorials: ~/ch-06BASH
sudo adduser testuser

[04]ساخت گروه

user@linux-tutorials: ~/ch-06BASH
sudo groupadd linuxusers

[05]اضافه کردن کاربر به گروه

user@linux-tutorials: ~/ch-06BASH
sudo usermod -aG linuxusers testuser

جمع‌بندی فصل ششم

در این فصل یاد گرفتیم:

  • User در لینوکس چیست.
  • Group چه کاربردی دارد.
  • تفاوت root و کاربران معمولی چیست.
  • چگونه کاربران را مشاهده کنیم.
  • چگونه کاربر جدید ایجاد کنیم.
  • چگونه گروه‌ها را مدیریت کنیم.
  • UID و GID چه هستند.
  • فایل‌های مهم مدیریت کاربران کدام‌اند.

شناخت کاربران و گروه‌ها یکی از پایه‌های مدیریت حرفه‌ای لینوکس است.

بدون درک این مفاهیم، مدیریت امنیت، سرورها و سیستم‌های بزرگ امکان‌پذیر نیست.

[→]در فصل بعد وارد مبحث مهم مدیریت نرم‌افزارها و Package Management در لینوکس خواهیم شد.