دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • 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 در لینوکس؛ مدیریت دسترسی گروه‌ها و اجرای برنامه‌ها
لینوکس

ساخت کاربر جدید در لینوکس

ساخت کاربر جدید در لینوکس

مقدمه

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

استفاده روزمره از حساب root توصیه نمی‌شود؛ زیرا هر دستور اشتباه با بالاترین سطح دسترسی اجرا خواهد شد. روش مناسب این است که برای هر مدیر یا کاربر یک حساب مستقل ایجاد کرده و فقط در صورت نیاز، دسترسی مدیریتی محدودی از طریق sudo به او بدهید.

در این مقاله روش ساخت، بررسی، ویرایش، غیرفعال‌سازی و حذف کاربر در توزیع‌های مختلف لینوکس، به‌خصوص Ubuntu و AlmaLinux، آموزش داده می‌شود.


کاربر در لینوکس چیست؟

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

هر کاربر معمولاً مشخصات زیر را دارد:

  • نام کاربری
  • UID
  • گروه اصلی
  • گروه‌های جانبی
  • پوشه خانگی
  • Login Shell
  • رمز عبور یا روش احراز هویت
  • تاریخ انقضای حساب
  • سیاست انقضای رمز عبور

اطلاعات حساب‌های محلی در فایل‌هایی مانند /etc/passwd، /etc/shadow، /etc/group و /etc/gshadow نگهداری می‌شود. ابزارهایی مانند useradd و usermod این فایل‌ها را به‌صورت کنترل‌شده تغییر می‌دهند.


فایل‌های مهم مدیریت کاربران

مهم‌ترین فایل‌های مرتبط با کاربران عبارت‌اند از:

/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/login.defs
/etc/default/useradd
/etc/skel/

کاربرد هرکدام:

  • /etc/passwd: اطلاعات عمومی حساب مانند UID، GID، Home و Shell
  • /etc/shadow: Hash رمز عبور و تنظیمات انقضای آن
  • /etc/group: اطلاعات گروه‌ها و اعضای آن‌ها
  • /etc/gshadow: اطلاعات امنیتی گروه‌ها
  • /etc/login.defs: تنظیمات پیش‌فرض ساخت و مدیریت کاربران
  • /etc/default/useradd: مقادیر پیش‌فرض دستور useradd
  • /etc/skel: فایل‌هایی که هنگام ساخت Home در پوشه کاربر کپی می‌شوند

فایل /etc/shadow فقط باید در اختیار کاربر root باشد. این فایل‌ها را به‌صورت دستی ویرایش نکنید، مگر اینکه دقیقاً با ساختار آن‌ها آشنا باشید.


پیش‌نیازهای ساخت کاربر

برای اجرای دستورات این مقاله باید:

  • با کاربر root وارد شده باشید؛
  • یا کاربر فعلی دسترسی sudo داشته باشد؛
  • یک نام کاربری مناسب انتخاب کرده باشید.

برای بررسی کاربر فعلی:

whoami

برای بررسی دسترسی sudo:

sudo -v

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


انتخاب نام کاربری مناسب

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

نمونه‌های مناسب:

mohammad
support
serveradmin
database
backupadmin

بهتر است در نام کاربری:

  • از حروف کوچک انگلیسی استفاده شود.
  • فاصله قرار داده نشود.
  • از نام‌های سیستمی مانند root، mail یا www-data استفاده نشود.
  • نام وظیفه یا شخص قابل تشخیص باشد.
  • از نام‌های بسیار عمومی مانند user یا test روی سرور Production خودداری شود.

در ادامه مقاله از نام serveradmin به‌عنوان نمونه استفاده می‌کنیم. آن را با نام موردنظر خود جایگزین کنید.


ساخت کاربر در Ubuntu

در Ubuntu و توزیع‌های مبتنی بر Debian، استفاده از دستور adduser برای ساخت کاربران معمولی توصیه می‌شود. adduser رابط ساده‌تری برای ابزار سطح پایین‌تر useradd است و به‌صورت پیش‌فرض Home، گروه خصوصی کاربر و فایل‌های اولیه را ایجاد می‌کند.

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

دستور زیر را اجرا کنید:

sudo adduser serveradmin

پس از اجرای دستور، ابتدا از شما خواسته می‌شود رمز عبور کاربر را وارد کنید:

New password:
Retype new password:

سپس اطلاعات اختیاری مانند نام کامل، شماره اتاق و شماره تماس نمایش داده می‌شود:

Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:

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

در پایان تأیید نهایی نمایش داده می‌شود:

Is the information correct? [Y/n]

برای تأیید، حرف Y را وارد کنید.


نتیجه اجرای adduser

دستور adduser معمولاً اقدامات زیر را انجام می‌دهد:

  • ایجاد حساب کاربری
  • اختصاص UID
  • ایجاد گروهی هم‌نام با کاربر
  • ایجاد پوشه /home/serveradmin
  • کپی فایل‌های /etc/skel
  • تعیین Shell پیش‌فرض
  • دریافت و تنظیم رمز عبور

برای بررسی نتیجه:

id serveradmin

نمونه خروجی:

uid=1001(serveradmin) gid=1001(serveradmin) groups=1001(serveradmin)

ساخت کاربر در AlmaLinux

در AlmaLinux و سیستم‌های مبتنی بر RHEL معمولاً از دستور useradd استفاده می‌شود. Red Hat نیز useradd را ابزار اصلی ایجاد کاربران محلی معرفی می‌کند.

ساخت کاربر همراه با Home Directory

دستور زیر را اجرا کنید:

sudo useradd -m -s /bin/bash serveradmin

گزینه‌ها:

  • -m: ایجاد Home Directory
  • -s /bin/bash: انتخاب Bash به‌عنوان Login Shell
  • serveradmin: نام کاربر جدید

پوشه خانگی کاربر در مسیر زیر ایجاد می‌شود:

/home/serveradmin

پس از ساخت کاربر باید برای آن رمز عبور تعیین کنید:

sudo passwd serveradmin

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

New password:
Retype new password:

در صورت موفقیت، پیام مشابه زیر نمایش داده می‌شود:

passwd: all authentication tokens updated successfully

ساخت کاربر با دستور useradd در تمام توزیع‌ها

دستور useradd در Ubuntu، AlmaLinux و بسیاری از توزیع‌های دیگر وجود دارد. برای اینکه رفتار آن در توزیع‌های مختلف قابل پیش‌بینی باشد، بهتر است Home و Shell را صریحاً مشخص کنید:

sudo useradd -m -s /bin/bash serveradmin

سپس رمز عبور را تنظیم کنید:

sudo passwd serveradmin

در Ubuntu، useradd یک ابزار سطح پایین محسوب می‌شود و برای ساخت کاربران معمولی، adduser انتخاب ساده‌تری است. رفتار ایجاد خودکار Home توسط useradd می‌تواند تحت تأثیر تنظیمات توزیع قرار داشته باشد؛ بنابراین استفاده از گزینه -m از ایجادشدن Home مطمئن می‌شود.


بررسی ایجاد Home Directory

برای مشاهده Home کاربر:

getent passwd serveradmin

نمونه خروجی:

serveradmin:x:1001:1001::/home/serveradmin:/bin/bash

بخش‌های مهم خروجی:

serveradmin    نام کاربر
1001           UID
1001           GID گروه اصلی
/home/serveradmin    پوشه خانگی
/bin/bash      Login Shell

برای بررسی خود پوشه:

ls -ld /home/serveradmin

نمونه خروجی:

drwx------ 2 serveradmin serveradmin 4096 Jul 25 10:20 /home/serveradmin

مالک پوشه باید همان کاربر جدید باشد.


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

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

sudo passwd serveradmin

در زمان واردکردن رمز عبور هیچ کاراکتری روی صفحه نمایش داده نمی‌شود. این رفتار طبیعی است.

برای بررسی وضعیت رمز عبور:

sudo passwd -S serveradmin

نمونه خروجی:

serveradmin P 2026-07-25 0 99999 7 -1

مقدار ستون دوم می‌تواند یکی از موارد زیر باشد:

  • P: کاربر دارای رمز قابل استفاده است.
  • L: رمز عبور قفل شده است.
  • NP: حساب رمز عبور ندارد.

اطلاعات وضعیت نمایش‌داده‌شده توسط passwd -S شامل وضعیت رمز، آخرین تغییر و سیاست انقضای رمز عبور است.


اجبار کاربر به تغییر رمز در ورود بعدی

برای اینکه کاربر هنگام اولین ورود مجبور به تغییر رمز شود:

sudo passwd --expire serveradmin

شکل کوتاه دستور:

sudo passwd -e serveradmin

روش دیگر:

sudo chage -d 0 serveradmin

این تنظیم برای حساب‌هایی مناسب است که مدیر سیستم یک رمز موقت برای آن‌ها تعیین کرده است.

اگر کاربر فقط از SSH Key استفاده می‌کند و ورود با رمز عبور غیرفعال است، قبل از اجبار به تغییر رمز، روش ورود و تنظیمات PAM را بررسی کنید.


افزودن کاربر به گروه مدیریتی

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

افزودن کاربر به گروه sudo در Ubuntu

sudo usermod -aG sudo serveradmin

در Ubuntu، اعضای گروه sudo به‌صورت پیش‌فرض امکان اجرای دستورات مدیریتی با sudo را دارند.


افزودن کاربر به گروه wheel در AlmaLinux

sudo usermod -aG wheel serveradmin

در AlmaLinux و RHEL دسترسی مدیریتی معمولاً از طریق گروه wheel ارائه می‌شود. فایل /etc/sudoers باید دارای قانون فعال مربوط به این گروه باشد.

برای بررسی تنظیمات:

sudo visudo

خط زیر را پیدا کنید:

%wheel ALL=(ALL) ALL

این خط نباید با علامت # غیرفعال شده باشد.


اهمیت گزینه‌های -aG

در دستور زیر:

sudo usermod -aG sudo serveradmin

گزینه‌ها به این معنا هستند:

  • -G: تعیین گروه‌های جانبی کاربر
  • -a: افزودن گروه جدید بدون حذف عضویت‌های قبلی

اگر از -G بدون -a استفاده شود، کاربر از گروه‌های جانبی قبلی که در دستور ذکر نشده‌اند حذف خواهد شد.

بنابراین دستور زیر می‌تواند خطرناک باشد:

sudo usermod -G sudo serveradmin

از شکل زیر استفاده کنید:

sudo usermod -aG sudo serveradmin

اعمال عضویت جدید در گروه

عضویت جدید معمولاً پس از خروج و ورود مجدد کاربر اعمال می‌شود.

برای تغییر کاربر:

su - serveradmin

یا با دسترسی مدیریتی:

sudo -iu serveradmin

سپس گروه‌ها را بررسی کنید:

groups

برای آزمایش دسترسی sudo:

sudo whoami

خروجی صحیح:

root

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

مشاهده UID و گروه‌ها

id serveradmin

نمونه خروجی:

uid=1001(serveradmin) gid=1001(serveradmin) groups=1001(serveradmin),27(sudo)

در AlmaLinux ممکن است خروجی مشابه زیر باشد:

uid=1001(serveradmin) gid=1001(serveradmin) groups=1001(serveradmin),10(wheel)

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

groups serveradmin

یا:

id -nG serveradmin

مشاهده اطلاعات حساب

getent passwd serveradmin

برای مشاهده فقط کاربران محلی:

cut -d: -f1 /etc/passwd

دستور getent علاوه بر فایل‌های محلی می‌تواند اطلاعات کاربران ارائه‌شده توسط سرویس‌هایی مانند LDAP یا Active Directory را نیز نمایش دهد.


مشاهده Home کاربر

getent passwd serveradmin | cut -d: -f6

خروجی:

/home/serveradmin

مشاهده Shell کاربر

getent passwd serveradmin | cut -d: -f7

خروجی:

/bin/bash

مشاهده زمان آخرین ورود

lastlog -u serveradmin

برای مشاهده ورودهای اخیر:

last serveradmin

مشاهده کاربران آنلاین

who

یا:

w

افزودن کاربر به گروه‌های دیگر

برای افزودن کاربر به یک گروه موجود:

sudo usermod -aG developers serveradmin

برای افزودن هم‌زمان به چند گروه:

sudo usermod -aG developers,docker,backup serveradmin

بین نام گروه‌ها فاصله قرار ندهید.

ابتدا بررسی کنید گروه وجود دارد:

getent group developers

اگر گروه وجود ندارد، آن را ایجاد کنید:

sudo groupadd developers

سپس کاربر را اضافه کنید:

sudo usermod -aG developers serveradmin

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

در Ubuntu و AlmaLinux می‌توانید از دستور زیر استفاده کنید:

sudo gpasswd -d serveradmin developers

برای حذف دسترسی مدیریتی در Ubuntu:

sudo gpasswd -d serveradmin sudo

برای حذف دسترسی مدیریتی در AlmaLinux:

sudo gpasswd -d serveradmin wheel

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

id serveradmin

ساخت کاربر با تنظیمات دلخواه

تعیین نام کامل یا توضیحات

sudo useradd -m -s /bin/bash \
-c "Server Administrator" serveradmin

برای تغییر توضیحات کاربر موجود:

sudo usermod -c "Linux Support Administrator" serveradmin

اطلاعات در بخش Comment فایل /etc/passwd ثبت می‌شود.


تعیین UID مشخص

برای ایجاد کاربر با UID مشخص:

sudo useradd -m -u 1500 -s /bin/bash serveradmin

قبل از استفاده، بررسی کنید UID تکراری نباشد:

getent passwd 1500

اگر خروجی خالی باشد، این UID در منبع کاربری قابل مشاهده سیستم استفاده نشده است.

از UID یکسان برای دو کاربر استفاده نکنید؛ زیرا مجوزها و مالکیت فایل‌ها براساس UID تشخیص داده می‌شوند.


تعیین Home Directory سفارشی

sudo useradd -m \
-d /srv/users/serveradmin \
-s /bin/bash serveradmin

بررسی:

getent passwd serveradmin

تعیین Shell متفاوت

لیست Shellهای مجاز را مشاهده کنید:

cat /etc/shells

ساخت کاربر با Bash:

sudo useradd -m -s /bin/bash serveradmin

ساخت کاربر با Zsh:

sudo useradd -m -s /bin/zsh serveradmin

قبل از انتخاب Zsh مطمئن شوید نصب است:

command -v zsh

تعیین گروه اصلی

ابتدا گروه را ایجاد کنید:

sudo groupadd support

سپس کاربر را با گروه اصلی موردنظر بسازید:

sudo useradd -m \
-g support \
-s /bin/bash serveradmin

گزینه -g گروه اصلی و گزینه -G گروه‌های جانبی را تعیین می‌کند.


تعیین گروه‌های جانبی هنگام ساخت

sudo useradd -m \
-s /bin/bash \
-G developers,backup serveradmin

گروه‌های developers و backup باید از قبل وجود داشته باشند.


تنظیم SSH Key برای کاربر جدید

برای ورود امن‌تر می‌توان به‌جای رمز عبور از SSH Key استفاده کرد.

ابتدا پوشه .ssh را ایجاد کنید:

sudo install -d \
-m 700 \
-o serveradmin \
-g "$(id -gn serveradmin)" \
/home/serveradmin/.ssh

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

sudo nano /home/serveradmin/.ssh/authorized_keys

Public Key کاربر را داخل فایل قرار دهید. Public Key معمولاً با یکی از عبارت‌های زیر شروع می‌شود:

ssh-ed25519
ssh-rsa
ecdsa-sha2-nistp256

سپس مالکیت فایل را اصلاح کنید:

sudo chown \
serveradmin:"$(id -gn serveradmin)" \
/home/serveradmin/.ssh/authorized_keys

مجوز فایل را تنظیم کنید:

sudo chmod 600 \
/home/serveradmin/.ssh/authorized_keys

مجوز پوشه را نیز بررسی کنید:

sudo chmod 700 /home/serveradmin/.ssh

اکنون از یک Terminal جدید اتصال را آزمایش کنید:

ssh serveradmin@SERVER_IP

تا قبل از موفقیت ورود کاربر جدید، Session مدیریتی فعلی را نبندید.

در صورت استفاده از Home سفارشی، مسیر دستورات را متناسب با Home واقعی کاربر تغییر دهید.


تغییر مشخصات کاربر موجود

تغییر Login Shell

sudo usermod -s /bin/bash serveradmin

بررسی:

getent passwd serveradmin

تغییر Home Directory

sudo usermod \
-d /srv/users/serveradmin \
-m serveradmin

گزینه -d مسیر جدید و گزینه -m محتوای Home قبلی را به مسیر جدید منتقل می‌کند. هنگام تغییر نام، UID یا Home، کاربر نباید پردازش فعالی داشته باشد و ممکن است مالکیت فایل‌های خارج از Home نیازمند اصلاح دستی باشد.


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

ابتدا مطمئن شوید کاربر وارد سیستم نیست:

who

پردازش‌های کاربر را بررسی کنید:

ps -u serveradmin -f

سپس نام Login را تغییر دهید:

sudo usermod -l newadmin serveradmin

این دستور فقط Login Name را تغییر می‌دهد و Home را خودکار تغییر نام نمی‌دهد.

برای تغییر Home:

sudo usermod \
-d /home/newadmin \
-m newadmin

اگر گروه خصوصی کاربر نیز serveradmin نام دارد، در صورت نیاز آن را تغییر دهید:

sudo groupmod -n newadmin serveradmin

در پایان:

id newadmin
getent passwd newadmin

قبل از تغییر نام کاربران Production، Cron Jobها، مجوز فایل‌ها، تنظیمات SSH و سرویس‌هایی را که از نام قدیمی استفاده می‌کنند بررسی کنید.


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

دستور chage برای مشاهده و تغییر سیاست انقضای رمز عبور استفاده می‌شود.

مشاهده وضعیت انقضا

sudo chage -l serveradmin

نمونه خروجی:

Last password change                    : Jul 25, 2026
Password expires                        : never
Password inactive                       : never
Account expires                         : never
Minimum number of days between change   : 0
Maximum number of days between change   : 99999
Number of days of warning before expiry : 7

تعیین حداکثر عمر رمز عبور

برای انقضای رمز پس از 90 روز:

sudo chage -M 90 serveradmin

تعیین حداقل فاصله تغییر رمز

برای جلوگیری از تغییر چندباره رمز در یک روز:

sudo chage -m 1 serveradmin

هشدار قبل از انقضا

برای نمایش هشدار از 7 روز قبل:

sudo chage -W 7 serveradmin

تنظیم هم‌زمان سیاست رمز عبور

sudo chage \
-m 1 \
-M 90 \
-W 7 serveradmin

تعیین تاریخ انقضای حساب

ساختار دستور:

sudo chage -E YYYY-MM-DD serveradmin

نمونه:

sudo chage -E 2027-12-31 serveradmin

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

برای حذف تاریخ انقضا:

sudo chage -E -1 serveradmin

قفل و غیرفعال‌سازی کاربر

گاهی لازم است دسترسی یک کاربر موقتاً مسدود شود، بدون اینکه اطلاعات او حذف شود.

قفل‌کردن رمز عبور

sudo passwd -l serveradmin

یا:

sudo usermod -L serveradmin

این دستور رمز عبور را قفل می‌کند؛ اما حساب را به‌طور کامل غیرفعال نمی‌کند. کاربر ممکن است همچنان با روش دیگری مانند SSH Key وارد شود.


غیرفعال‌سازی کامل حساب

برای مسدودکردن حساب:

sudo usermod --expiredate 1 serveradmin

برای اطمینان، رمز عبور را نیز قفل کنید:

sudo passwd -l serveradmin

سپس Sessionهای فعال را بررسی کنید:

w

پردازش‌های کاربر:

ps -u serveradmin -f

در صورت نیاز Sessionهای کاربر را خاتمه دهید:

sudo loginctl terminate-user serveradmin

قبل از خاتمه پردازش‌ها مطمئن شوید کاربر مسئول اجرای سرویس مهمی نیست.


فعال‌سازی مجدد حساب

ابتدا تاریخ انقضای حساب را حذف کنید:

sudo usermod --expiredate -1 serveradmin

سپس رمز را از حالت قفل خارج کنید:

sudo passwd -u serveradmin

بررسی وضعیت:

sudo passwd -S serveradmin
sudo chage -l serveradmin

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

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

مسیر nologin را پیدا کنید:

command -v nologin

سپس کاربر سیستمی را ایجاد کنید:

sudo useradd \
--system \
--user-group \
--no-create-home \
--shell "$(command -v nologin)" \
appservice

گزینه‌ها:

  • --system: ساخت حساب سیستمی
  • --user-group: ایجاد گروه هم‌نام
  • --no-create-home: عدم ساخت Home
  • --shell nologin: جلوگیری از ورود تعاملی

بررسی:

getent passwd appservice

این نوع حساب برای سرویس‌ها مناسب است و نباید به گروه sudo یا wheel اضافه شود.


حذف کاربر در لینوکس

قبل از حذف کاربر باید مشخص کنید:

  • آیا Home باید باقی بماند؟
  • آیا فایل‌های کاربر باید Backup شوند؟
  • آیا کاربر پردازش فعال دارد؟
  • آیا Cron Job دارد؟
  • آیا مالک فایل‌هایی خارج از Home است؟
  • آیا SSH Key یا دسترسی مدیریتی دارد؟

بررسی پردازش‌های کاربر

ps -u serveradmin -f

بررسی Sessionهای فعال:

who

یا:

w

ابزار userdel معمولاً اجازه حذف کاربری را که پردازش فعال دارد نمی‌دهد. استفاده از گزینه Force می‌تواند سیستم را در وضعیت ناسازگار قرار دهد.


بررسی Cron Job کاربر

sudo crontab -u serveradmin -l

برای تهیه نسخه پشتیبان:

sudo crontab -u serveradmin -l \
> /root/serveradmin-crontab.txt

اگر Cron Job وجود ندارد، ممکن است پیام زیر نمایش داده شود:

no crontab for serveradmin

بررسی فایل‌های متعلق به کاربر

برای جست‌وجو در فایل‌سیستم فعلی:

sudo find / \
-xdev \
-user serveradmin \
-ls 2>/dev/null

گزینه -xdev مانع ورود به فایل‌سیستم‌های Mount شده دیگر می‌شود.

برای بررسی تمام فایل‌سیستم‌ها می‌توان -xdev را حذف کرد؛ اما جست‌وجو ممکن است طولانی باشد و وارد Storageهای شبکه‌ای یا Mountهای حجیم شود.


تهیه Backup از Home

sudo tar \
-C /home \
-czf /root/serveradmin-home-$(date +%F).tar.gz \
serveradmin

بررسی فایل Backup:

ls -lh \
/root/serveradmin-home-*.tar.gz

Backup را ترجیحاً به فضایی خارج از همان سرور منتقل کنید.


حذف کاربر بدون حذف Home

sudo userdel serveradmin

در Ubuntu می‌توانید از دستور زیر نیز استفاده کنید:

sudo deluser serveradmin

در این حالت حساب حذف می‌شود، اما Home ممکن است باقی بماند.

بررسی:

getent passwd serveradmin

اگر خروجی نمایش داده نشود، حساب حذف شده است.


حذف کاربر همراه با Home

دستور عمومی:

sudo userdel -r serveradmin

در Ubuntu:

sudo deluser --remove-home serveradmin

گزینه -r پوشه خانگی و Mail Spool کاربر را حذف می‌کند؛ اما فایل‌های متعلق به کاربر در مسیرها یا فایل‌سیستم‌های دیگر باید جداگانه پیدا و مدیریت شوند.

قبل از اجرای حذف همراه با Home، از اطلاعات موردنیاز Backup تهیه کنید.


خاتمه پردازش‌ها قبل از حذف

ابتدا پردازش‌ها را بررسی کنید:

ps -u serveradmin -f

برای درخواست خاتمه معمولی پردازش‌ها:

sudo pkill -TERM -u serveradmin

دوباره بررسی کنید:

ps -u serveradmin -f

فقط اگر پردازش‌ها متوقف نشدند و مطمئن هستید سرویس مهمی اجرا نمی‌شود:

sudo pkill -KILL -u serveradmin

سپس کاربر را حذف کنید:

sudo userdel -r serveradmin

حذف گروه باقی‌مانده کاربر

بعد از حذف، گروه هم‌نام را بررسی کنید:

getent group serveradmin

اگر گروه وجود دارد و کاربر دیگری از آن استفاده نمی‌کند:

sudo groupdel serveradmin

قبل از حذف گروه اصلی بررسی کنید کاربر دیگری از آن به‌عنوان Primary Group استفاده نکند.


بررسی صحت ساخت کاربر

پس از ساخت کاربر، دستورات زیر را اجرا کنید.

بررسی وجود حساب

getent passwd serveradmin

بررسی UID و گروه‌ها

id serveradmin

بررسی Home

ls -ld /home/serveradmin

بررسی Shell

getent passwd serveradmin | cut -d: -f7

بررسی وضعیت رمز

sudo passwd -S serveradmin

بررسی سیاست انقضا

sudo chage -l serveradmin

آزمایش تغییر کاربر

su - serveradmin

آزمایش sudo

sudo whoami

آزمایش SSH

از یک Terminal جداگانه:

ssh serveradmin@SERVER_IP

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


رفع خطاهای رایج

خطای user already exists

نمونه خطا:

useradd: user 'serveradmin' already exists

بررسی کنید:

getent passwd serveradmin

اگر حساب از قبل وجود دارد، نیازی به ساخت مجدد آن نیست.


Home Directory ایجاد نشده است

بررسی:

getent passwd serveradmin

اگر مسیر Home ثبت شده ولی پوشه وجود ندارد:

sudo mkdir -p /home/serveradmin

فایل‌های پیش‌فرض را کپی کنید:

sudo cp -a /etc/skel/. \
/home/serveradmin/

مالکیت را اصلاح کنید:

sudo chown -R \
serveradmin:"$(id -gn serveradmin)" \
/home/serveradmin

مجوز Home را تنظیم کنید:

sudo chmod 700 /home/serveradmin

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

در Ubuntu:

id serveradmin

باید گروه sudo نمایش داده شود.

در صورت نبود:

sudo usermod -aG sudo serveradmin

در AlmaLinux باید گروه wheel وجود داشته باشد:

sudo usermod -aG wheel serveradmin

سپس کاربر باید Logout و دوباره Login کند.

تنظیمات sudo را بررسی کنید:

sudo visudo

خطای user is not in the sudoers file

نمونه خطا:

serveradmin is not in the sudoers file

کاربر را به گروه مدیریت اضافه کنید.

Ubuntu:

sudo usermod -aG sudo serveradmin

AlmaLinux:

sudo usermod -aG wheel serveradmin

عضویت جدید پس از ورود مجدد اعمال می‌شود.


کاربر از طریق SSH وارد نمی‌شود

ابتدا بررسی کنید کاربر وجود دارد:

getent passwd serveradmin

Shell را بررسی کنید:

getent passwd serveradmin | cut -d: -f7

حساب نباید دارای Shell زیر باشد:

/usr/sbin/nologin

یا:

/sbin/nologin

وضعیت انقضا:

sudo chage -l serveradmin

وضعیت رمز:

sudo passwd -S serveradmin

لاگ SSH در Ubuntu:

sudo journalctl -u ssh -n 50 --no-pager

در AlmaLinux:

sudo journalctl -u sshd -n 50 --no-pager

مجوزهای SSH Key:

sudo ls -ld \
/home/serveradmin \
/home/serveradmin/.ssh
sudo ls -l \
/home/serveradmin/.ssh/authorized_keys

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

عضویت را بررسی کنید:

id serveradmin

سپس کاربر باید Session فعلی را ببندد و دوباره وارد شود.

برای آزمایش سریع:

su - serveradmin

یا:

sudo -iu serveradmin

امکان حذف کاربر وجود ندارد

نمونه خطا:

userdel: user serveradmin is currently used by process

پردازش‌ها را مشاهده کنید:

ps -u serveradmin -f

Sessionهای کاربر را خاتمه دهید:

sudo loginctl terminate-user serveradmin

سپس دوباره بررسی کنید:

ps -u serveradmin -f

از userdel -f فقط در شرایط خاص استفاده کنید؛ زیرا Force Delete ممکن است باعث باقی‌ماندن پردازش‌ها یا ایجاد ناسازگاری در سیستم شود.


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

  • برای هر مدیر یا اپراتور حساب جداگانه ایجاد کنید.
  • استفاده روزمره از حساب root را محدود کنید.
  • فقط کاربران ضروری را عضو sudo یا wheel کنید.
  • پس از افزودن کاربر به گروه مدیریتی، دسترسی او را آزمایش کنید.
  • برای ورود SSH از کلید Ed25519 استفاده کنید.
  • برای هر کاربر Public Key مجزا در نظر بگیرید.
  • رمز عبور را داخل Script یا Command Line قرار ندهید.
  • برای کاربران موقت تاریخ انقضا تعیین کنید.
  • حساب‌های بلااستفاده را ابتدا غیرفعال و سپس حذف کنید.
  • قبل از حذف کاربر، Home، Cron Jobها و فایل‌های متعلق به او را بررسی کنید.
  • برای حساب‌های سرویس از Shell نوع nologin استفاده کنید.
  • کاربر سرویس را عضو گروه مدیریتی نکنید.
  • فایل‌های /etc/passwd و /etc/shadow را بدون دلیل به‌صورت دستی تغییر ندهید.
  • پس از ساخت کاربر مدیریتی، ورود او را در یک Session جداگانه آزمایش کنید.
  • قبل از بستن دسترسی root، از عملکرد SSH Key و sudo مطمئن شوید.
  • دسترسی‌ها را براساس اصل کمترین سطح دسترسی تعریف کنید.

اشتباهات رایج

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

  • فراموش‌کردن گزینه -m هنگام استفاده از useradd
  • ایجاد کاربر بدون تعیین رمز یا SSH Key
  • استفاده از usermod -G بدون گزینه -a
  • اعطای دسترسی sudo به تمام کاربران
  • استفاده مشترک چند نفر از یک حساب
  • استفاده مشترک از یک SSH Key
  • قفل‌کردن رمز و تصور اینکه کل حساب غیرفعال شده است
  • حذف کاربر بدون Backup گرفتن از Home
  • حذف کاربر دارای پردازش فعال
  • استفاده بی‌دلیل از userdel -f
  • حذف Home بدون بررسی فایل‌های موردنیاز
  • تغییر UID بدون بررسی مالکیت فایل‌های خارج از Home
  • تغییر نام کاربر در حالی که وارد سیستم است
  • بستن Session مدیریتی قبل از آزمایش کاربر جدید
  • ساخت حساب سرویس با Shell قابل ورود
  • ویرایش مستقیم /etc/shadow

چک‌لیست نهایی ساخت کاربر

پس از ساخت کاربر موارد زیر را بررسی کنید:

  • نام کاربری مناسب انتخاب شده است.
  • کاربر با موفقیت ایجاد شده است.
  • UID و GID معتبر هستند.
  • Home Directory وجود دارد.
  • مالک Home همان کاربر است.
  • Login Shell صحیح تنظیم شده است.
  • رمز عبور یا SSH Key تنظیم شده است.
  • رمز موقت در اولین ورود منقضی می‌شود.
  • گروه اصلی کاربر صحیح است.
  • گروه‌های جانبی بررسی شده‌اند.
  • دسترسی sudo فقط در صورت نیاز داده شده است.
  • ورود با su آزمایش شده است.
  • ورود SSH در یک Session جداگانه آزمایش شده است.
  • دستور sudo whoami نتیجه صحیح دارد.
  • تاریخ انقضای حساب در صورت نیاز تنظیم شده است.
  • دسترسی مدیریتی قبلی تا پایان آزمایش حفظ شده است.

دستورات سریع ساخت کاربر مدیریتی

Ubuntu

sudo adduser serveradmin
sudo usermod -aG sudo serveradmin
id serveradmin
su - serveradmin
sudo whoami

AlmaLinux

sudo useradd -m -s /bin/bash serveradmin
sudo passwd serveradmin
sudo usermod -aG wheel serveradmin
id serveradmin
su - serveradmin
sudo whoami

کاربر معمولی بدون sudo

sudo useradd -m -s /bin/bash normaluser
sudo passwd normaluser
id normaluser

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

sudo useradd \
--system \
--user-group \
--no-create-home \
--shell "$(command -v nologin)" \
appservice

جمع‌بندی

برای ساخت کاربر در Ubuntu بهتر است از دستور adduser استفاده شود؛ زیرا Home، گروه خصوصی و رمز عبور را طی یک فرآیند ساده ایجاد می‌کند. در AlmaLinux و توزیع‌های مبتنی بر RHEL، دستور useradd ابزار اصلی ساخت کاربران است و بهتر است گزینه‌های Home و Shell به‌صورت صریح تعیین شوند.

بعد از ساخت کاربر باید وضعیت Home، رمز عبور، گروه‌ها و Login Shell بررسی شود. برای اعطای دسترسی مدیریتی، کاربر در Ubuntu به گروه sudo و در AlmaLinux به گروه wheel اضافه می‌شود.

قفل‌کردن رمز عبور به‌تنهایی حساب را کاملاً غیرفعال نمی‌کند؛ زیرا ورود با SSH Key ممکن است همچنان امکان‌پذیر باشد. همچنین قبل از حذف کاربر باید پردازش‌ها، Cron Jobها، Home و فایل‌های متعلق به او بررسی شوند.

مدیریت صحیح حساب‌ها، استفاده از کاربران مستقل و اعطای حداقل دسترسی لازم، نقش مهمی در امنیت و قابلیت پیگیری فعالیت‌ها در سرور لینوکسی دارد.

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

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

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

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

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

ساخت کاربر جدید در لینوکس

کپی کردن لینک

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

سلام