دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
لینوکس
  • Folder icon closed Folder open iconآشنایی با لینوکس (Linux Fundamentals)
  • Folder icon closed Folder open iconتوزیع‌های مختلف لینوکس (Linux Distributions)
  • Folder icon closed Folder open iconFHS؛ آشنایی با ساختار فایل‌ و پوشه‌های لینوکسی
  • Folder icon closed Folder open iconمهم‌ترین دستورات پایه‌ای برای هر sysadmin
  • Folder icon closed Folder open iconمدیریت فایل و پوشه (file & directory management) در لینوکس
  • Folder icon closed Folder open iconآموزش ویرایش فایل‌های متنی در لینوکس با Nano و Vim
  • Folder icon closed Folder open iconآشنایی با users، groups و ساختار مدیریت کاربران در لینوکس
  • Folder icon closed Folder open iconآموزش Permission و Ownership در لینوکس
  • Folder icon closed Folder open iconآشنایی با Root و sudo
  • Folder icon closed Folder open iconآشنایی با Processها در لینوکس
  • Folder icon closed Folder open iconتغییر Hostname در لینوکس
  • Folder icon closed Folder open iconتنظیم Timezone در لینوکس
  • Folder icon closed Folder open iconتنظیم NTP در لینوکس
  • Folder icon closed Folder open iconبروزرسانی سیستم در لینوکس
  • Folder icon closed Folder open iconساخت کاربر جدید در لینوکس
  • Folder icon closed Folder open iconایجاد کاربران و گروه ها در لینوکس
  • Folder icon closed Folder open iconآموزش ACL در لینوکس؛ مدیریت سطح دسترسی پیشرفته برای کاربران و گروه‌ها
  • Folder icon closed Folder open iconآموزش umask در لینوکس؛ تعیین مجوز پیش‌فرض فایل‌ها و پوشه‌های جدید
  • Folder icon closed Folder open iconآموزش فایل sudoers؛ مدیریت دسترسی کاربران به دستورات مدیریتی در لینوکس
  • Folder icon closed Folder open iconآموزش دستور chown در لینوکس
  • Folder icon closed Folder open iconآموزش دستور chmod در لینوکس
  • Folder icon closed Folder open iconSticky Bit در لینوکس چیست؟ آموزش افزایش امنیت پوشه‌های اشتراکی
  • Folder icon closed Folder open iconآموزش SUID در لینوکس؛ اجرای برنامه‌ها با دسترسی مالک فایل
  • Folder icon closed Folder open iconآموزش SGID در لینوکس؛ مدیریت دسترسی گروه‌ها و اجرای برنامه‌ها
لینوکس

آشنایی با users، groups و ساختار مدیریت کاربران در لینوکس

users and groups

مقدمه

در لینوکس، هر عملیاتی که روی سرور انجام می‌شود — از اجرای یک process گرفته تا دسترسی به یک فایل — به یک “کاربر” (User) نسبت داده می‌شود. سیستم لینوکس بر پایه یک ساختار چندکاربره طراحی شده است، به این معنی که چندین کاربر می‌توانند به‌طور هم‌زمان و مستقل از یکدیگر از یک سرور استفاده کنند، بدون آنکه به فایل‌ها یا منابع یکدیگر دسترسی داشته باشند.

درک درست مفهوم کاربران و گروه‌ها در لینوکس، پایه‌ی اصلی امنیت سرور محسوب می‌شود. تقریباً تمام مباحث پیشرفته‌تر مانند Permissions، Ownership و sudo مستقیماً روی همین ساختار بنا شده‌اند.

در این مقاله با مفهوم کاربران و گروه‌ها، انواع کاربران در لینوکس، فایل‌های مهم مرتبط با آن‌ها و دستورات اصلی مدیریت کاربران آشنا می‌شویم. مباحث تخصصی‌تر مانند Permissions و دسترسی root در مقالات جداگانه بررسی خواهند شد.


مفهوم کاربران و گروه‌ها در لینوکس

هر کاربر در لینوکس یک هویت مجزا در سیستم است که مجموعه‌ای از ویژگی‌ها به آن نسبت داده می‌شود. کاربران می‌توانند انسان (مثل شما که با SSH وارد سرور می‌شوید) یا یک سرویس سیستمی (مثل کاربر www-data برای Nginx) باشند.

گروه نیز مجموعه‌ای از کاربران است که برای ساده‌تر کردن مدیریت دسترسی‌ها استفاده می‌شود. به‌جای تعیین دسترسی برای تک‌تک کاربران، می‌توان دسترسی را به یک گروه داد و هر کاربر عضو آن گروه، به‌صورت خودکار همان دسترسی را دریافت می‌کند. به عنوان مثال گروه sudo یا wheel گروهی است که همه کاربران آن اجازه اجرای دستورات با سطح دسترسی root دارند.

هر کاربر در لینوکس شامل موارد زیر است:

  • Username — نام کاربری که برای ورود و شناسایی استفاده می‌شود.
  • UID (User ID) — یک شناسه عددی یکتا برای هر کاربر. UID برابر با 0 همیشه متعلق به کاربر root است.
  • Primary Group — گروه اصلی کاربر (هر کاربر دقیقاً یک Primary Group دارد).
  • Supplementary Groups — گروه‌های فرعی که کاربر می‌تواند علاوه بر گروه اصلی، عضو آن‌ها هم باشد.
  • Home Directory — پوشه‌ی اختصاصی کاربر، معمولاً مسیر /home/username.
  • Default Shell — برنامه‌ای که هنگام ورود کاربر اجرا می‌شود، معمولاً /bin/bash.

نکته مهم: در لینوکس، هر گروه هم یک شناسه عددی به نام GID (Group ID) دارد، دقیقاً مشابه UID برای کاربر.

این ساختار ساده اما قدرتمند، پایه‌ی کنترل دسترسی در کل سیستم لینوکس است و در مقالات بعدی (Permissions، ACL) به شکل عملی‌تری از آن استفاده خواهیم کرد.


انواع کاربران در لینوکس

کاربران در لینوکس بر اساس UID و نقش‌شان به سه دسته تقسیم می‌شوند:

1. Root User

Root، کاربر مدیریتی سیستم است که UID برابر با 0 دارد و به تمام فایل‌ها، دستورات و منابع سیستم دسترسی کامل و بدون محدودیت دارد. کار مستقیم و روزمره با کاربر root توصیه نمی‌شود؛ در مقاله‌ی جداگانه‌ای درباره‌ی root و sudo این موضوع را با جزئیات بیشتر بررسی خواهیم کرد.

2. System Users

این کاربر به‌صورت خودکار هنگام نصب سیستم‌عامل یا نصب یک سرویس (مثل Nginx، MySQL یا Postfix) ساخته می‌شوند. کاربران سیستمی معمولاً Shell لاگین ندارند (/usr/sbin/nologin) و تنها برای اجرای یک سرویس خاص استفاده می‌شوند. محدوده UID آن‌ها معمولاً بین 1 تا 999 است.

مثال: کاربر www-data که وب‌سرور با آن اجرا می‌شود.

3. Normal (Regular) Users

کاربر معمولی که برای انسان‌ها (مدیران سرور، مشتریان، اعضای تیم) ساخته می‌شوند. این کاربران معمولاً دارای Home Directory و Shell لاگین هستند. محدوده UID آن‌ها معمولاً از 1000 به بعد شروع می‌شود (در برخی توزیع‌ها مثل RHEL از 1000، در برخی دیگر ممکن است متفاوت باشد).


فایل‌های مهم مرتبط با کاربران و گروه‌ها

اطلاعات مربوط به کاربران و گروه‌ها در چند فایل متنی مشخص در مسیر /etc ذخیره می‌شود. آشنایی با این فایل‌ها برای عیب‌یابی و مدیریت دستی کاربران ضروری است.

1. /etc/passwd

این فایل، لیست تمام کاربران سیستم را نگه می‌دارد. با اینکه نامش passwd است، امروزه رمز عبور واقعی در آن ذخیره نمی‌شود.

مشاهده محتوا:

cat /etc/passwd

نمونه یک خط از این فایل:

ali:x:1001:1001:Ali Mahdie:/home/ali:/bin/bash

ساختار هر خط به ترتیب شامل: username:password:UID:GID:comment:home_directory:shell است.

نمونه این فایل در عکس زیر قرار گرفته است. بسیاری از این کاربران٬ کاربران سیستمی هستند که همگی nologin هستند. مانند mail که کاربر inboxها و فایل‌های تنظیمات مربوط به اکانت‌های ایمیل است.

users info in /etc/passwd

2. /etc/shadow

رمزهای عبور کاربران به‌صورت رمزنگاری‌شده (hashed) در این فایل نگهداری می‌شوند. این فایل فقط برای root قابل خواندن است.

sudo cat /etc/shadow

3. /etc/group

اطلاعات مربوط به تمام گروه‌ها سیستم، از جمله اعضای هر گروه، در این فایل ذخیره می‌شود.

cat /etc/group

نمونه یک خط:

developers:x:1005:ali,sara

4. /etc/gshadow

فایلی مشابه /etc/shadow که مربوط به گروه‌ها است /etc/group. هر دو این موارد در گروه shadow


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

1. useradd — ساخت کاربر جدید

این دستور برای ایجاد یک کاربر جدید در سیستم استفاده می‌شود. با استفاده از flagهای متفاوت این دستور می‌توان تنظیمات اولیه در زمان ایجاد را تغییر داد.

توضیحمثال
ساخت Home Directory به‌صورت خودکارuseradd -m ali
تعیین Shell پیش‌فرضuseradd -m -s /bin/bash ali
تعیین Primary Groupuseradd -m -g developers ali
تعیین Supplementary Groups (چندتایی، با کاما)useradd -m -G sudo,developers ali
افزودن توضیحات (Comment)useradd -m -c "Ali Mahdie" ali
تعیین UID دلخواهuseradd -m -u 1050 ali

مثال کامل:

sudo useradd -m -s /bin/bash -G sudo -c "Ali Mahdie" ali

adduser دستور جایگزین

طبق تعریف man برای adduser این دستورجایگزینی راحت تر برای دستور اصلی است. در تصویر زیر نحوه کار این دستور را مشاهده می‌کنید. در این دستور مقادیر متنوعی(جایگزین -c) به صورت prompt پرسیده می‌شوند و نیازی به وارد کردن آن‌ها در مقابل کامند نیست.

آشنایی با users، groups و ساختار مدیریت کاربران در لینوکس

2. passwd — تعیین یا تغییر رمز عبور

این دستور فرآیندهای متفاوتی را مدیریت می‌کند که عموما مرتبط به رمز عبور کاربران هستند.

sudo passwd ali

اگر کاربر بخواهد رمز خودش را تغییر دهد، کافی است بدون sudo و بدون نام کاربری اجرا کند:

passwd

کاربرد جالب دیگر passwd مشاهده وضعیت یک کاربر است. با دستور -S یا --status می‌توان از این ویژگی استفاده کرد.

root@ubuntu:~# passwd -S ali
ali L 2026-07-28 0 99999 7 -1

خروجی این دستور به این صورت قابل تحلیل است:

  • ali: نام کاربر
  • L: وضعیت password که می‌تواند یکی از موارد زیر باشد:
    • L: رمز عبور در حالت قفل وجود دارد (کاربر با دستور usermod -L ali قفل شده)
    • P: رمز عبور قابل استفاده در دسترس است
    • NP: کاربر رمز عبوری ندارد
  • 2026-07-28: تاریخ آخرین تغییر در رمز عبور
  • چهار گزینه بعد مربوط به زمان گردش رمز عبور هستند که در ادامه مقاله با نحوه تعیین آن آشنا خواهیم شد.
    • minimum age
    • maximum age
    • warning period
    • inactivity period

3. usermod — ویرایش کاربران موجود

توضیحدستور
افزودن کاربر به یک Group جدید (بدون حذف Groups قبلی)usermod -aG docker ali
تغییر Shell پیش‌فرضusermod -s /bin/zsh ali
تغییر نام کاربریusermod -l newname oldname
قفل کردن اکانت کاربر (Lock)usermod -L ali
باز کردن قفل اکانت (Unlock)usermod -U ali
تغییر Home Directoryusermod -d /home/newpath ali

نکته مهم: همیشه از -aG استفاده کنید، نه -G به‌تنهایی؛ چون -G تمام گروه‌های فرعی قبلی کاربر را با مقدار جدید جایگزین می‌کند و ممکن است کاربر را از گروه‌های مهم دیگر حذف کند.

4. userdel — حذف کاربر

توضیحدستور
حذف پوشه home و فایل‌های کاربر همراه با خود کاربرuserdel -r ali

5. id — نمایش اطلاعات کاربران

id ali

خروجی نمونه:

آشنایی با users، groups و ساختار مدیریت کاربران در لینوکس

6. whoami, who, w, last

دستورکاربرد
whoamiنمایش کاربر فعلی
whoنمایش کاربران لاگین‌شده فعلی
wنمایش کاربران لاگین‌شده + فعالیت آن‌ها
lastنمایش تاریخچه لاگین‌ها

دستورات مدیریت Groups

1. groupadd — ساخت گروه جدید

توضیحدستور
تعیین GID دلخواهgroupadd -g 2005 developers

2. groupmod — ویرایش گروه

توضیحدستور
تغییر نام Groupgroupmod -n devteam developers
تغییر GIDgroupmod -g 2010 devteam

3. groupdel — حذف Group

sudo groupdel devteam

نکته: اگر گروهی گروه اصلی یک یا چند کاربر باشد، تا زمانی که آن کاربران به گروه دیگری منتقل نشوند، قابل حذف نیست.

4. gpasswd — مدیریت اعضای Group

توضیحمثال
افزودن کاربر به گروهgpasswd -a ali developers
حذف کاربر از گروهgpasswd -d ali developers

مدیریت انقضای رمز عبور با chage

دستور chage (Change Age) برای کنترل چرخه‌ی عمر رمز عبور یک کاربر استفاده می‌شود — چیزی که در useradd یا passwd به‌طور مستقیم قابل تنظیم نیست. این ابزار مخصوصاً هنگام ساخت اکانت برای مشتریان یا اعضای موقت تیم کاربرد دارد.

chage -l ali

نمایش وضعیت فعلی انقضای رمز عبور کاربر (آخرین تغییر، تاریخ انقضا، هشدار انقضا).

آشنایی با users، groups و ساختار مدیریت کاربران در لینوکس
chage -M 90 ali

تنظیم حداکثر عمر رمز عبور به ۹۰ روز؛ بعد از آن کاربر مجبور به تغییر رمز می‌شود.

chage -E 2026-12-31 ali

تعیین تاریخ انقضای کامل اکانت (Account Expiration) — بعد از این تاریخ، اکانت به‌طور خودکار غیرفعال می‌شود. بسیار مفید برای اکانت‌های موقت یا پیمانکاران یا تنظیم دستی یک سرور مجازی استفاده شده برای هاستینگ بدون پنل مدیریتی.

chage -d 0 ali

اجبار کاربر به تغییر رمز عبور در اولین ورود بعدی؛ مناسب برای زمانی است که یک رمز موقت به کاربر جدید می‌دهید به عنوان مثال هنگامی که سرور مجازی کاربر توسط تمپلت ایجاد می‌شود.


محدود کردن منابع کاربران با ulimit و limits.conf

روی سرورهای هاستینگ که چند کاربر یا سرویس روی یک سیستم مشترک اجرا می‌شوند، کنترل مصرف منابع هر User اهمیت زیادی دارد. ulimit این محدودیت‌ها را برای Session فعلی Shell تنظیم می‌کند، اما برای تنظیم دائمی و سیستمی باید سراغ فایل /etc/security/limits.conf بروید. این در حالتی است که سرور مجازی مورد بحث دارای هیچ پنل مدیریتی‌ای نباشد.

ulimit -a

نمایش تمام محدودیت‌های فعلی Session (تعداد پردازش، فایل باز، حجم حافظه و غیره).

ulimit -u 50

محدود کردن تعداد پردازش‌های قابل اجرا برای Session فعلی (موقتی، فقط تا زمان بستن Shell).

تنظیم دائمی و مخصوص یک کاربر در /etc/security/limits.conf:

ali  hard  nproc  50
ali  hard  nofile  1024

این دو خط، حداکثر تعداد پردازش (nproc) و حداکثر فایل باز هم‌زمان (nofile) کاربر ali را برای همیشه محدود می‌کند — مستقل از اینکه او چه Shell ای باز می‌کند.

نکته: soft limit مقداری است که کاربر خودش (بدون root) می‌تواند تا سقف hard limit افزایش دهد؛ hard limit سقف مطلق و غیرقابل عبور است.

راهنمایی شیوه تنظیم محدودیت‌ها و فلگ‌ها در خود فایل /etc/security/limits.conf قرار دارد.


چک‌لیست خروج کاربر از سرور (Offboarding)

وقتی همکاری با یک کاربر (کارمند، پیمانکار یا مشتری) پایان می‌یابد، حذف عجولانه‌ی اکانت می‌تواند فرآیندهای در حال اجرا یا فایل‌های مهم را از بین ببرد. ترتیب پیشنهادی:

sudo usermod -L ali

قدم ۱: قفل کردن فوری اکانت تا از ورود مجدد جلوگیری شود، بدون حذف چیزی.

sudo pkill -u ali

قدم ۲: متوقف کردن تمام Processهای در حال اجرای این کاربر.

sudo tar -czf /backup/ali_home_$(date +%F).tar.gz /home/ali

قدم ۳: گرفتن بکاپ از Home Directory کاربر قبل از هر اقدام غیرقابل بازگشت.

sudo userdel -r ali

قدم ۴: حذف کامل اکانت و فایل‌های آن، فقط بعد از اطمینان از بکاپ.

این فرایند تا حدودی مشابه رویه برخورد با هاست‌های اشتراکی که به صورت خودکار انجام می‌شود است.


مثال‌های عملی

سناریو ۱: ساخت یک کاربر برای عضو جدید تیم توسعه

sudo useradd -m -s /bin/fish -c "Sara Ahmadi" sara
sudo passwd sara
sudo usermod -aG sudo,developers sara

سناریو ۲: بررسی اینکه یک کاربر عضو کدام Groups است

id sara
groups sara

سناریو ۳: انتقال مالکیت قبل از حذف یک Group

sudo usermod -g developers sara
sudo groupdel oldteam

سناریو ۴: غیرفعال کردن موقت یک کاربر (بدون حذف کامل)

sudo usermod -L ali

نتیجه این حذف عدم دسترسی کاربر با رمز خود به اکانت است. در حالی که همچنان کاربر root با استفاده از دستور su می‌تواند به این اکانت وارد شود.


اشتباهات رایج و عیب‌یابی

۱. استفاده از -G به‌جای -aG
این رایج‌ترین اشتباه در مدیریت Groups است. استفاده از usermod -G group تمام Supplementary Groups قبلی کاربر را پاک کرده و فقط Group جدید را جایگزین می‌کند. همیشه از -aG استفاده کنید.

۲. فراموش کردن logout/login بعد از افزودن به یک گروه
بعد از اضافه کردن یک کاربر به Group جدید (مثلاً docker)، تغییرات فوراً روی Sessionهای باز اعمال نمی‌شود. کاربر باید خارج و دوباره وارد شود، یا از دستور newgrp groupname استفاده کند.

۳. حذف کاربر بدون -r و باقی ماندن فایل‌های یتیم (orphan)
اگر از userdel بدون -r استفاده کنید، Home Directory کاربر باقی می‌ماند و فضای دیسک اشغال‌شده باقی می‌ماند. فایل یا نرم‌افزار orphan فایل یا نرم‌افزاری است که پس از حذف عواملی که به آن نیاز داشته اند بدون کاربر واقعی باقی می‌ماند.

۴. اشتباه گرفتن مشکلات Permission با مشکلات کاربر/گروه
گاهی خطای “Permission denied” به دلیل تنظیمات نادرست Ownership یا Permission فایل است، نه مشکل در خود کاربر یا گروه. برای بررسی و رفع این نوع مشکلات به مقاله‌ی Ownership و Permission مراجعه کنید.

۵. تلاش برای اجرای دستورات مدیریتی بدون دسترسی کافی
اگر با خطای “Permission denied” هنگام اجرای useradd, usermod یا groupadd مواجه شدید، به یاد داشته باشید که این دستورات نیاز به دسترسی root یا sudo دارند؛ جزئیات کامل درباره‌ی sudo و root در مقاله‌ی اختصاصی آن پوشش داده شده است.


مطالعه بیشتر

  • دستور sudo و کاربر root
  • ACL در لینوکس
  • کار با فایل sudoers, دستور visudo و مدیریت کاربران با قابلیت اجرای sudo
  • multi-user OSs

جمع‌بندی

در این مقاله با ساختار کاربران و گروه‌ها در لینوکس آشنا شدید: انواع کاربران (root, system, normal)، فایل‌های کلیدی (/etc/passwd, /etc/shadow, /etc/group)، و دستورات اصلی برای ساخت، ویرایش و حذف کاربران و گروه‌ها.

این ساختار پایه‌ی امنیت سرور است. در مقالات بعدی، روی Permissions، Ownership، sudo و ACL عمیق‌تر خواهیم شد تا بتوانید کنترل کاملی روی دسترسی‌های سرور خود داشته باشید.


چیت شیت مدیریت کاربران و گروه‌ها

کار مورد نظردستور
ساخت کاربر جدیدuseradd -m -s /bin/bash username
تعیین رمز عبورpasswd username
افزودن به گروهusermod -aG groupname username
حذف کاربر + فایل‌هاuserdel -r username
نمایش اطلاعات کاربرid username
ساخت گروهgroupadd groupname
حذف گروهgroupdel groupname
افزودن عضو به گروهgpasswd -a username groupname
قفل کردن اکانتusermod -L username
کاربران لاگین‌شده فعلیwho یا w

هنوز نیاز به کمک دارید؟

آیا سوالی دارید؟

آیا این مقاله برای شما مفید بود؟ بله خیر

مطالب اخیراً بازدیدشده

  • مهم‌ترین دستورات پایه‌ای برای هر sysadmin
  • آموزش مشاهده Loginهای اخیر در لینوکس
  • Domain Forwarding چیست؟ راهنمای کامل ریدایرکت دامنه و کاربردهای آن
  • راهنمای لاگ کلودفلر
  • پرداخت صورت‌حساب با رمز ارز در مارال کلاد
  • ساخت کاربر جدید در لینوکس
  • مشاهده بیشتر

نظرات خود را بنویسید... لغو پاسخ

اشتراک گذاری این مقاله

آشنایی با users، groups و ساختار مدیریت کاربران در لینوکس

کپی کردن لینک

Clipboard Icon

جدیدترین مقالات

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی ...
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

تقویم

آگوست 2026
شیدسچپج
1234567
891011121314
15161718192021
22232425262728
293031 
« جولای    

عضویت

جدیدترین پست‌ها

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی Ubuntu 24.04
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

سلام