
به اشتراک بگذارید
مشاهده لیست کاربران لینوکس یکی از مهمترین اطلاعاتی است که هر مدیر سرور باید به آن دسترسی داشته باشد. وقتی صحبت از امنیت سرور مجازی میشود، دانستن اینکه چه کسی، چه زمانی و از کجا به سیستم شما وارد شده، اولین خط دفاعی محسوب میشود. طبق آمار مرکز امنیت سایبری در سال 2024، بیش از 43 درصد حملات موفق به سرورها از طریق حسابهای کاربری آسیبپذیر یا Session های رها شده صورت گرفته است.
| 🎯 چرا باید کاربران سرور را رصد کنید؟ |
|---|
| ✅ شناسایی دسترسیهای غیرمجاز و نفوذگران |
| ✅ مانیتورینگ مصرف منابع توسط هر کاربر |
| ✅ مدیریت تیم و کنترل دسترسی همکاران |
| ✅ یافتن و بستن نشستهای معلق و قدیمی |
| ✅ عیبیابی مشکلات عملکردی سرور |
حتماً زمانی که این مقاله را باز کردهاید، به دنبال راهی برای بررسی کاربران VPS خود هستید. شاید سرورتان کند شده و میخواهید ببینید چه کسی منابع را مصرف میکند؛ یا شاید نگران امنیت هستید و میخواهید مطمئن شوید کسی بدون اجازه وارد نشده است. در هر صورت، جای درستی آمدهاید! در این آموزش جامع از بلاگ وبداده، تمام دستورات لازم برای مشاهده کاربران لینوکس را به صورت گامبهگام و با مثالهای عملی یاد میگیرید. پس همراه ما باشید…
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 |
| 3 | UID (شناسه کاربر) | 1000 |
| 4 | GID (شناسه گروه اصلی) | 1000 |
| 5 | توضیحات/نام کامل | Webdade Admin |
| 6 | مسیر Home Directory | /home/webdade |
| 7 | Shell پیشفرض | /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 | توضیح |
|---|---|---|
| Root | 0 | کاربر ریشه با دسترسی کامل |
| سیستمی | 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 اطلاعات بیشتری مثل میزان بیکاری و دستور در حال اجرا نمایش میدهد.
چگونه یک کاربر را از سرور Kick کنم؟
چطور بفهمم کسی بدون اجازه وارد سرور شده است؟
دستور lslogins چیست و چه کاربردی دارد؟
📌 منابع:
- Linux man pages (passwd, who, w, last)
- nixCraft – Linux List Users Command (2025)
- GeeksforGeeks – who Command in Linux (2025)




