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

مفاهیم پایه

کاربران و شناسه‌ها (UID / GID)

  • در لینوکس، هر کاربر دارای یک UID (User ID) است — یک عدد یکتا که او را از دیگر کاربران متمایز می‌کند.

  • هر گروه دارای GID (Group ID) است.

  • کاربران می‌توانند متعلق به یک گروه اولیه (primary group) باشند و همچنین در گروه‌های ثانویه (secondary groups) عضو شوند.

  • فایل‌های سیستم مثل /etc/passwd شامل اطلاعاتی درباره کاربران هستند.

  • فایل /etc/group فهرست گروه‌ها و اعضای آن‌ها را نگه می‌دارد.

نقش root و sudo

  • کاربر root قدرت کامل روی سیستم دارد؛ می‌تواند هر کاری انجام دهد.

  • در اوبونتو به دلایل امنیتی، حساب root معمولاً غیرفعال است و به جای آن از sudo استفاده می‌شود. 

  • کاربران مجاز به استفاده از sudo می‌توانند دستورات مدیریتی را با پیشوند sudo اجرا کنند، با پسورد خودشان.

  • تنظیمات sudo در فایل /etc/sudoers یا زیرشاخه‌های آن تعیین می‌شود (معمولاً با ابزار visudo آن را ویرایش می‌کنند). 


مدیریت کاربران با خط فرمان

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

افزودن کاربر (Create User)

در اوبونتو، دستور رایج برای افزودن کاربر عبارت است از:

sudo adduser username 

این دستور یک فرآیند تعاملی اجرا می‌کند، از شما رمز عبور آن کاربر را می‌پرسد و اطلاعات اختیاری مثل نام کامل، شماره تلفن، آدرس را دریافت می‌کند.

اگر نخواهید آن اطلاعات را وارد کنید، کافی است Enter بزنید.

همچنین، اگر بخواهید کاربر سیستم (بدون پوشه خانگی و موارد مشابه) بسازید:

sudo adduser --system myserviceuser 

اما توجه کنید که استفاده از --system وابسته به توزیع و شرایط است.


اختصاص گروه و افزودن به گروه‌ها (Groups)

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

    sudo addgroup groupname 
  • افزودن کاربر به گروه (ثانویه) — بدون حذف عضویت‌های قبلی:

    sudo usermod -aG groupname username 

    گزینه -a برای افزودن است و -G برای تعیین گروه‌ها. 

  • دیدن گروه‌هایی که یک کاربر عضو است:

    groups username 

    یا با دستور id username نیز اطلاعات بیشتری (UID، GID و گروه‌ها) نمایش داده می‌شود.

  • حذف کاربر از یک گروه:

  •  

  • برخی توزیع‌ها از دستور deluser username groupname پشتیبانی می‌کنند (در Debian/Ubuntu) 
    یا می‌توانید با usermod گروه‌های جدید را مجدداً تعیین کنید (ولی مراقب باشید که عضویت‌های قبلی را از بین نبرید). 


تغییر ویژگی‌های کاربر (Modify User)

چند نمونه از تغییرات رایج:

  • تغییر رمز عبور:

    sudo passwd username 
  • تغییر نام کامل یا توضیحات:

    sudo usermod -c "Full Name" username 
  • تغییر دایرکتوری خانه:

    sudo usermod -d /new/home/path username 
  • تغییر Shell ورود:

    sudo usermod -s /bin/bash username 

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

    sudo usermod -s /sbin/nologin username 
  • تغییر UID کاربر (مراقب باشید، چون فایل‌ها و گروه‌ها ممکن است به هم بریزند):

    sudo usermod -u NEWUID username 
  • قفل کردن حساب:

    sudo usermod -L username 

    یا باز کردن:

    sudo usermod -U username 

حذف کاربر (Delete User)

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

sudo deluser username 

اگر می‌خواهید همراه با دایرکتوری خانگی و فایل‌هایش نیز حذف شود:

sudo deluser --remove-home username 

یا می‌توانید از:

sudo userdel -r username 

که در بسیاری از توزیع‌ها معادل deluser --remove-home است. 


مشاهده کاربران و وضعیت آنها

  • لیست کلی کاربران:

    cut -d: -f1 /etc/passwd 

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

  • مشاهده گروه‌ها:

    cut -d: -f1 /etc/group 
  • دیدن اینکه چه کاربران اکنون وارد سیستم هستند:

    w 

    یا:

    who 
    

مدیریت دسترسی‌ها: فایل‌ها و مجوزها (Permissions)

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

  • chmod — تغییر مجوزهای خواندن، نوشتن و اجرا:
    مثال:

    chmod 755 filename 
    chmod u+rwx,g+rx,o-r filename 
  • chown — تغییر مالک فایل:

    sudo chown user:group filename 

    برای بازگشت به طور بازگشتی:

    sudo chown -R user:group /path/to/directory 
  • chgrp — تغییر گروه مالک:

    sudo chgrp groupname filename 
  • استفاده از مجوز عددی (مثلاً 7 = خواندن + نوشتن + اجرا، 5 = خواندن + اجرا و غیره) برای تعیین سطح دسترسی.


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

۱. عدم استفاده مداوم از root
حتی اگر بتوانید با sudo su به root تبدیل شوید، بهتر است فقط زمانی که نیاز دارید دستورات مدیریتی را اجرا کنید.
استفاده از sudo به جای ورود مستقیم به root باعث شفافیت بیشتر و ثبت سوابق فرمان‌ها می‌شود.

۲. حداقل مجوز لازم (Principle of Least Privilege)
کاربر فقط همان دسترسی‌هایی را داشته باشد که برای انجام وظایفش لازم است، نه بیشتر.

۳. استفاده از گروه‌ها به جای کاربران تکی
وقتی نیاز دارید مجموعه‌ای از کاربران به یک منبع مشترک دسترسی داشته باشند، بهتر است آن‌ها را به یک گروه اضافه کرده و مجوزها را به گروه بدهید.

۴. قفل کردن یا غیرفعال کردن حساب‌های غیرضروری
اگر حسابی دیگر نیاز نیست، آن را قفل یا حذف کنید.

۵. رمزهای قوی و سیاست‌های انقضا رمز
کاربران را مجبور کنید از رمزهای پیچیده استفاده کنند و در فواصل زمانی مشخص آن را تغییر دهند.

۶. نظارت و بررسی لاگ‌ها
ثبت لاگ دستورات sudo، بررسی ورودها و رفتار کاربران می‌تواند به شناسایی سوء استفاده کمک کند.

۷. بروزرسانی منظم سیستم
آسیب‌پذیری‌های امنیتی در بسته‌ها ممکن است از طریق حساب‌های کاربری سوء استفاده شوند؛ بنابراین نگهداری سیستم به‌روز ضروری است.

۸. محدود کردن دسترسی SSH
فقط کاربرانی که نیاز دارند به SSH دسترسی داشته باشند، بتوانند وارد سیستم شوند. مثلاً می‌توانید در فایل /etc/ssh/sshd_config گزینه AllowUsers را تنظیم کنید.

۹. مکانیزم‌های احراز هویت چندعاملی (MFA)
اگر امکان دارد، برای دسترسی به سیستم از احراز هویت دو مرحله‌ای استفاده کنید.