خانه » دستور lsof در لینوکس، ابزاری قدرتمند برای مشاهده فایل‌ها و ارتباطات باز در سیستم
آموزش لینوکس

دستور lsof در لینوکس، ابزاری قدرتمند برای مشاهده فایل‌ها و ارتباطات باز در سیستم

lsof-commands-in-linux

مقدمه

در سیستم‌عامل لینوکس، هر چیزی یک فایل محسوب می‌شود: از اسناد متنی گرفته تا سوکت‌های شبکه، دستگاه‌های سخت‌افزاری و حتی پورت‌ها.
مدیریت و بررسی این فایل‌های باز برای تشخیص مشکلات، عیب‌یابی، یا حتی بررسی‌های امنیتی اهمیت بسیار زیادی دارد.
یکی از ابزارهای کلیدی برای انجام این کار، دستور lsof است که نام آن مخفف عبارت List Open Files می‌باشد.

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

بخش اول: مفهوم و کاربرد اصلی دستور lsof

دستور lsof اطلاعاتی جامع درباره فایل‌ها و سوکت‌های باز در سیستم ارائه می‌دهد.
هر برنامه‌ای که در حال اجراست، فایل‌هایی را باز نگه می‌دارد:

  • فایل‌های متنی یا پیکربندی
  • سوکت‌های شبکه (TCP و UDP)
  • pipeها، deviceها، و libraryها

به‌طور ساده، lsof ابزاری است برای پاسخ به پرسش‌هایی مانند:

  • کدام برنامه در حال استفاده از پورت 80 است؟
  • چه کاربری فایل خاصی را باز کرده است؟
  • چرا یک درایو یا فایل نمی‌تواند unmount شود؟

بخش دوم: ساختار کلی دستور

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

lsof [options] [filename|directory|port]

نمونه ساده:

lsof /var/log/syslog

نمایش می‌دهد که چه فرآیندهایی فایل syslog را باز کرده‌اند.

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

1. نمایش تمام فایل‌های باز در سیستم

lsof

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

2. نمایش فایل‌های باز توسط یک کاربر خاص

lsof -u mahdi

فقط فایل‌هایی که توسط کاربر «mahdi» باز شده‌اند را نمایش می‌دهد.

3. مشاهده فایل‌های باز توسط یک فرآیند خاص (PID)

lsof -p 1234

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

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

lsof -i :80

نمایش برنامه‌ای که از پورت 80 (HTTP) استفاده می‌کند.
در حالت کلی:

lsof -i

تمام اتصالات شبکه‌ای فعال را نمایش می‌دهد.

5. نمایش فایل‌های باز در یک مسیر خاص

lsof +D /home/mahdi/projects

تمام فایل‌های باز در مسیر مشخص‌شده را (به صورت بازگشتی) نشان می‌دهد.

6. نمایش فرآیندهایی که مانع unmount یک دیسک شده‌اند

lsof /mnt/usb

اگر سیستم اجازه unmount نمی‌دهد، با این دستور می‌توان فهمید چه برنامه‌ای هنوز از آن استفاده می‌کند.

بخش چهارم: تحلیل خروجی lsof

خروجی lsof شامل چند ستون کلیدی است:

ستونتوضیح
COMMANDنام برنامه یا دستور
PIDشناسه فرآیند
USERکاربری که فرآیند را اجرا کرده
FDنوع ارتباط (مثلاً cwd، txt، mem، 1u و …)
TYPEنوع فایل (REG برای فایل معمولی، CHR برای کاراکتری، IPv4 برای سوکت‌ها و غیره)
DEVICEشماره دستگاه یا شناسه فایل سیستم
SIZE/OFFاندازه یا offset فایل
NODEشماره inode فایل
NAMEمسیر یا نام فایل یا سوکت

مثلاً خروجی زیر:

COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    1042  root   10u  IPv4  32451      0t0  TCP *:80 (LISTEN)

به ما می‌گوید فرآیند nginx با PID=1042 در حال گوش دادن روی پورت 80 است.

بخش پنجم: کاربردهای امنیتی و مدیریتی lsof

۱. بررسی پورت‌های باز و ارتباطات مشکوک

lsof -i -n -P

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

۲. شناسایی فایل‌هایی که توسط فرآیندهای ناشناخته باز شده‌اند

lsof | grep deleted

گاهی فایل‌هایی حذف شده‌اند اما هنوز توسط فرآیندی در حال استفاده‌اند. این فایل‌ها می‌توانند فضای زیادی از دیسک را اشغال کنند.

۳. مانیتورینگ فعالیت کاربران

مدیر سیستم می‌تواند بررسی کند که کدام کاربران به چه فایل‌هایی دسترسی دارند:

lsof -u user1

یا بالعکس:

lsof -u ^root

(علامت ^ به معنی “به جز” است؛ یعنی تمام کاربران به‌جز root.)

۴. ترکیب با سایر ابزارها

lsof به‌راحتی با دستورات دیگر ترکیب می‌شود:

lsof -i :22 | awk '{print $9}'

برای استخراج فقط ستون مربوط به آدرس‌های IP متصل به SSH.

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

  • اجرای کامل lsof معمولاً نیاز به دسترسی root دارد، چون باید بتواند به همه‌ی فرآیندها و فایل‌ها دسترسی پیدا کند.
  • اجرای آن روی سیستم‌هایی با تعداد زیاد فایل باز می‌تواند سنگین و زمان‌بر باشد.
  • بهتر است در اسکریپت‌های نظارتی، از فیلترهای دقیق‌تر (-u, -p, -i) استفاده شود تا عملکرد بهینه بماند.

جمع‌بندی

lsof یکی از ابزارهای کلیدی لینوکس است که برای عیب‌یابی سیستم، مانیتورینگ امنیتی و مدیریت منابع کاربرد دارد.
این ابزار دیدی عمیق از آنچه در پس‌زمینه سیستم در حال وقوع است ارائه می‌دهد؛ از جمله فایل‌هایی که در حال استفاده‌اند، پورت‌هایی که بازند، و ارتباطاتی که میان برنامه‌ها برقرار است.
در دنیای امنیت سایبری، lsof یکی از سلاح‌های سبک ولی مؤثر برای کشف فعالیت‌های پنهان و تحلیل رفتار سیستم به شمار می‌رود.

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم. هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

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

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم.
هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

افزودن نظر

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

طراحی سایت شما