مشاهده لیست کاربران لینوکس یکی از مهم‌ترین اطلاعاتی است که هر مدیر سرور باید به آن دسترسی داشته باشد. وقتی صحبت از امنیت سرور مجازی می‌شود، دانستن اینکه چه کسی، چه زمانی و از کجا به سیستم شما وارد شده، اولین خط دفاعی محسوب می‌شود. طبق آمار مرکز امنیت سایبری در سال 2024، بیش از 43 درصد حملات موفق به سرورها از طریق حساب‌های کاربری آسیب‌پذیر یا Session های رها شده صورت گرفته است.

🎯 چرا باید کاربران سرور را رصد کنید؟
✅ شناسایی دسترسی‌های غیرمجاز و نفوذگران
✅ مانیتورینگ مصرف منابع توسط هر کاربر
✅ مدیریت تیم و کنترل دسترسی همکاران
✅ یافتن و بستن نشست‌های معلق و قدیمی
✅ عیب‌یابی مشکلات عملکردی سرور

حتماً زمانی که این مقاله را باز کرده‌اید، به دنبال راهی برای بررسی کاربران VPS خود هستید. شاید سرورتان کند شده و می‌خواهید ببینید چه کسی منابع را مصرف می‌کند؛ یا شاید نگران امنیت هستید و می‌خواهید مطمئن شوید کسی بدون اجازه وارد نشده است. در هر صورت، جای درستی آمده‌اید! در این آموزش جامع از بلاگ وب‌داده، تمام دستورات لازم برای مشاهده کاربران لینوکس را به صورت گام‌به‌گام و با مثال‌های عملی یاد می‌گیرید. پس همراه ما باشید…

svgexport 58 نحوه مشاهده کلیه کاربران فعال سیستم در سرور مجازی لینوکسسرورهای مجازی وب‌داده
VPSهای وب‌داده با پشتیبانی 24/7، دسترسی کامل و فضای بکاپ رایگان
برای مشاهده پلن‌های
VPS وب‌داده
روی دکمه زیر کلیک کنید

آنچه در این مقاله می‌خوانید:

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

اولین قدم در مدیریت و مشاهده کاربران لینوکس، دانستن لیست کامل تمام کاربرانی است که روی سیستم تعریف شده‌اند. این شامل کاربران معمولی (انسانی) و کاربران سیستمی (سرویس‌ها) می‌شود. لینوکس اطلاعات تمام کاربران را در فایل‌های متنی ساده ذخیره می‌کند که به راحتی قابل خواندن هستند.

📌 تمام دستورات این آموزش روی همه توزیع‌های لینوکس (اوبونتو، دبیان، آلما لینوکس، CentOS، راکی و فدورا) کار می‌کنند.

فایل etc/passwd/ چیست؟

فایل /etc/passwd قلب سیستم مدیریت کاربران در لینوکس است. هر خط در این فایل، اطلاعات یک کاربر را با فرمت مشخصی نگه می‌دارد. این فایل توسط تمام کاربران قابل خواندن است (اما فقط root می‌تواند آن را ویرایش کند). نگران نباشید؛ رمزهای عبور در فایل جداگانه /etc/shadow با رمزنگاری قوی ذخیره می‌شوند.

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

cat /etc/passwd

خروجی نمونه:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
webdade:x:1000:1000:Webdade Admin:/home/webdade:/bin/bash

هر خط شامل 7 فیلد است که با دو نقطه (:) از هم جدا شده‌اند:

فیلدتوضیحمثال
1نام کاربریwebdade
2رمز عبور (x یعنی در shadow است)x
3UID (شناسه کاربر)1000
4GID (شناسه گروه اصلی)1000
5توضیحات/نام کاملWebdade Admin
6مسیر Home Directory/home/webdade
7Shell پیش‌فرض/bin/bash

📌 نکته: اگر فقط نام کاربران را می‌خواهید (بدون جزئیات اضافی)، از این دستور استفاده کنید:

cut -d: -f1 /etc/passwd

یا با awk:

awk -F':' '{print $1}' /etc/passwd

دستور getent passwd برای مشاهده کاربران لینوکس

دستور getent قدرتمندتر از cat است، چون علاوه بر فایل محلی /etc/passwd، کاربران شبکه‌ای (مثل LDAP یا Active Directory) را هم نمایش می‌دهد. اگر سرور شما به دایرکتوری سرویس متصل است، حتماً از این دستور استفاده کنید:

getent passwd

برای جستجوی یک کاربر خاص:

getent passwd webdade

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

getent passwd | wc -l

دستور compgen برای لیست یورزهای لینوکس

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

compgen -u

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

compgen -u | column
⚠️ توجه: دستور compgen فقط در Bash کار می‌کند و در Shell های دیگر مثل sh یا zsh در دسترس نیست.

تفاوت یوزرهای سیستمی و معمولی در Linux

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

محدوده UID کاربران لینوکس

هر کاربر در لینوکس یک شناسه عددی منحصربه‌فرد به نام UID (User ID) دارد:

نوع کاربرمحدوده UIDتوضیح
Root0کاربر ریشه با دسترسی کامل
سیستمی1-999سرویس‌ها مثل www-data، mysql، nginx
معمولی1000+کاربران انسانی واقعی

برای دیدن فقط کاربران معمولی (انسانی):

awk -F':' '$3 >= 1000 && $3 < 65534 {print $1}' /etc/passwd

یا با getent:

getent passwd | awk -F':' '$3 >= 1000 && $3 < 65534 {print $1}'

🔸 نکته فنی: در اوبونتو و دبیان، حداقل UID برای کاربران معمولی در فایل /etc/login.defs تعریف شده:

grep "^UID_MIN" /etc/login.defs

خروجی معمولاً UID_MIN 1000 است.

نحوه مشاهده کاربران آنلاین و فعال سرور در لینوکس

حالا به بخش مهم می‌رسیم: چگونه ببینیم چه کسی الان به سرور لاگین کرده؟ این اطلاعات برای امنیت و مانیتورینگ حیاتی است.

دستور who برای نمایش کاربران لاگین شده

دستور who ساده‌ترین راه برای دیدن کاربران آنلاین است:

who

خروجی نمونه:

root     pts/0        2025-01-15 10:23 (192.168.1.100)
webdade  pts/1        2025-01-15 14:45 (185.22.33.44)

هر خط شامل این اطلاعات است:

  • نام کاربر
  • نوع ترمینال (pts = SSH، tty = کنسول محلی)
  • زمان ورود
  • آدرس IP مبدأ

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

# نمایش با هدر ستون‌ها
who -H

# نمایش تعداد کاربران
who -q

# نمایش زمان آخرین بوت سیستم
who -b

# نمایش همه اطلاعات
who -a

دستور w برای اطلاعات جامع یوزرهای فعال

دستور w اطلاعات بیشتری نسبت به who نمایش می‌دهد، از جمله فعالیت فعلی هر کاربر و میزان بیکاری:

w

خروجی نمونه:

 15:30:45 up 48 days, 23:38,  3 users,  load average: 0.79, 0.58, 0.56
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.100    10:23    2:45m  0.15s  0.00s -bash
webdade  pts/1    185.22.33.44     14:45    0.00s  0.33s  0.08s vim config.php
admin    pts/2    89.35.22.11      15:28    1.00s  0.02s  0.01s w

توضیح ستون‌ها:

ستونتوضیح
USERنام کاربر
TTYنوع ترمینال
FROMآدرس IP مبدأ
LOGIN@زمان ورود
IDLEمدت بیکاری
JCPUزمان CPU کل پروسه‌ها
PCPUزمان CPU پروسه فعلی
WHATدستور در حال اجرا

📌 کاربرد امنیتی: اگر کاربری با IP ناشناس یا در ساعت غیرعادی لاگین کرده، باید بررسی کنید!

دستور Users برای لیست سریع

اگر فقط نام کاربران آنلاین را می‌خواهید:

users

خروجی: root webdade admin

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

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

دستور last برای آخرین ورودها

دستور last تاریخچه کامل لاگین‌ها را از فایل /var/log/wtmp می‌خواند:

last

خروجی نمونه:

webdade  pts/1    185.22.33.44     Wed Jan 15 14:45   still logged in
root     pts/0    192.168.1.100    Wed Jan 15 10:23   still logged in
admin    pts/2    89.35.22.11      Tue Jan 14 18:30 - 19:45  (01:15)
reboot   system boot  5.15.0-91-generic Tue Jan 14 08:00   still running

آپشن‌های مهم:

# نمایش 10 مورد آخر
last -n 10

# فقط یک کاربر خاص
last webdade

# نمایش با IP کامل
last -a

# نمایش تلاش‌های ناموفق (نیاز به root)
sudo lastb

⚠️ هشدار امنیتی: دستور lastb تلاش‌های ناموفق لاگین را نشان می‌دهد. اگر تعداد زیادی تلاش ناموفق از یک IP می‌بینید، احتمالاً تحت حمله Brute Force هستید!

دستور lastlog برای آخرین ورود هر کاربر

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

lastlog

برای یک کاربر خاص:

lastlog -u webdade

دستور lslogins برای اطلاعات جامع

دستور lslogins (از بسته util-linux) اطلاعات کاملی درباره تمام کاربران ارائه می‌دهد:

lslogins

برای فقط کاربران معمولی (با قابلیت لاگین):

lslogins -u

این دستور UID، GID، آخرین ورود، تعداد لاگین‌ها و Shell هر کاربر را نمایش می‌دهد.

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

در لینوکس، کاربران می‌توانند عضو چندین گروه باشند و دسترسی‌هایشان بر اساس عضویت در گروه‌ها تعیین می‌شود.

فایل etc/group/

اطلاعات گروه‌ها در این فایل ذخیره می‌شود:

cat /etc/group

فرمت هر خط: نام‌گروه:x:GID:اعضا

sudo:x:27:webdade,admin
www-data:x:33:
docker:x:998:webdade

دستور id برای اطلاعات کاربر فعلی

id

خروجی: uid=1000(webdade) gid=1000(webdade) groups=1000(webdade),27(sudo),998(docker)

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

id username

دستور groups

groups webdade

خروجی: webdade : webdade sudo docker

آموزش نحوه بستن session کاربر در لینوکس

گاهی نیاز دارید یک session مشکوک یا معلق را ببندید. این کار با چند دستور ساده انجام می‌شود. برای این کار مراحل زیر را طی کنید.

مرحله 1: شناسایی session

ابتدا با دستور w می توانید session مورد نظر را پیدا کنید:

w
USER     TTY      FROM             LOGIN@   IDLE   
hacker   pts/3    45.33.22.11      03:00    5:00m

مرحله 2: یافتن PID

ps -ft pts/3
UID        PID  PPID  C STIME TTY          TIME CMD
hacker   15234 15100  0 03:00 pts/3    00:00:00 -bash

مرحله 3: بستنsession

روش 1 – با دستور kill:

sudo kill -9 15234

روش 2 – با pkill (بر اساس ترمینال):

sudo pkill -KILL -t pts/3

روش 3 – بستن تمام sessionهای یک کاربر با pkill:

sudo pkill -KILL -u hacker

و یا از طریق دستور killall:

sudo killall -KILL -u hacker

📌 نکته: قبل از بستن session، مطمئن شوید که session خودتان را نمی‌بندید! همیشه ترمینال فعلی را با tty چک کنید.

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

بر اساس تجربه تیم فنی وب‌داده در مدیریت صدها سرور، این نکات را رعایت کنید:

1- چک‌لیست امنیتی مشاهده کاربران لینوکس

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

نکته امنیتی
بررسی روزانه کاربران لاگین شده با w
بررسی هفتگی lastb برای تلاش‌های ناموفق
غیرفعال کردن لاگین مستقیم root (استفاده از sudo)
تنظیم Timeout برای نشست‌های بیکار
استفاده از کلید SSH به جای رمز عبور
حذف کاربران غیرضروری
بررسی کاربران با Shell فعال

2- تنظیم Timeout خودکار برای SSH

در فایل /etc/ssh/sshd_config دستور زیر را اضافه کنید:

ClientAliveInterval 300
ClientAliveCountMax 2

این تنظیم sessionهای بیکار را بعد از 10 دقیقه (300×2 ثانیه) قطع می‌کند.

3- اسکریپت مانیتورینگ خودکار کاربران

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

#!/bin/bash
# save as /usr/local/bin/check-logins.sh
ADMIN_EMAIL="admin@webdade.com"
NEW_LOGINS=$(last -n 5 | head -5)
echo "$NEW_LOGINS" | mail -s "Server Login Report" $ADMIN_EMAIL

جمع‌بندی: خلاصه دستورات مشاهده کاربران لینوکس

در این مقاله از بلاگ وب‌داده، تمام روش‌های مشاهده کاربران لینوکس را یاد گرفتید. از دستورات پایه‌ای مثل who و w برای دیدن کاربران آنلاین، تا ابزارهای پیشرفته مثل lslogins و lastlog برای ممیزی امنیتی. همچنین نحوه بستن sessionهای مشکوک با pkill و kill را آموختید.

جدول خلاصه دستورات

هدفدستور
لیست تمام کاربرانcat /etc/passwd یا getent passwd
فقط نام کاربرانcompgen -u یا cut -d: -f1 /etc/passwd
کاربران آنلاین (ساده)who یا users
کاربران آنلاین (جامع)w
تاریخچه ورودهاlast
آخرین ورود هر کاربرlastlog
اطلاعات کامل کاربرانlslogins
گروه‌های یک کاربرid username یا groups username
بستن نشستpkill -KILL -t pts/X

به یاد داشته باشید که مدیریت کاربران در لینوکس یک کار مداوم است، نه یک‌بار مصرف. بررسی منظم کاربران و sessionها، اولین خط دفاعی در برابر نفوذ است.

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

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

چگونه ببینم چه کسی الان به سرور لینوکس وصل است؟

با دستور w یا who می‌توانید لیست کاربران آنلاین را همراه با IP و زمان ورود ببینید. دستور w اطلاعات بیشتری مثل میزان بیکاری و دستور در حال اجرا نمایش می‌دهد.

📌 منابع:

  • Linux man pages (passwd, who, w, last)
  • nixCraft – Linux List Users Command (2025)
  • GeeksforGeeks – who Command in Linux (2025)
سارا صالحی ریحانی
سارا صالحی ریحانی

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

مقاله‌ها: 115
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *