اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

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

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

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

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

    ما می توانیم دستور lsof را برای فهمیدن اینکه کسی از فایلی استفاده میکند و دقیقا چه کاربری، اجرا کنیم. این دستور در سرچ خودش برای فایلهای باز، kernel memory را می خواند و به شما کمک میکند همه ی فایل های باز را لیست کنید. در این چنین شرایطی یک فایل باز ممکن است یک فایل خاص، یک دایرکتوری، یک block special file، یک character special file، یک stream، یک فایل network و موارد بیشمار دیگری باشد زیرا در لینوکس همه چیز تنها یک فایل است.

    ابزار lsof در یک فایل سیستم تنها برای شناسایی کسی که در حال استفاده از فایلی که رو آن سیستم عامل است، استفاده می شود. شما می توانید دستور lsof را روی فایل سیستم لینوکس اجرا کنید و خروجی مشخص کننده ی اطلاعات process و owner مربوط به پروسس هایی است که از فایل استفاده می کنند. خروجی زیر را مشاهده کنید :
    کد PHP:
    lsof /dev/null 
    کد PHP:
    COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    systemd    1843 mohammad    0r   CHR    1
    ,3      0t0    6 /dev/null
    dbus
    -daem  1925 mohammad    0u   CHR    1,3      0t0    6 /dev/null
    gnome
    -ses  1928 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    at
    -spi-bu  2041 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    dbus
    -daem  2046 mohammad    0u   CHR    1,3      0t0    6 /dev/null
    at
    -spi2-r  2048 mohammad    0u   CHR    1,3      0t0    6 /dev/null
    gnome
    -she  2066 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    gvfsd      2073 mohammad    0r   CHR    1
    ,3      0t0    6 /dev/null
    gvfsd
    -fus  2078 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    pulseaudi  2088 mohammad    0r   CHR    1
    ,3      0t0    6 /dev/null
    ibus
    -daem  2096 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    ibus
    -dcon  2100 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    ibus
    -dcon  2100 mohammad    1w   CHR    1,3      0t0    6 /dev/null
    ibus
    -dcon  2100 mohammad    2w   CHR    1,3      0t0    6 /dev/null
    ibus
    -exte  2101 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    ibus
    -exte  2101 mohammad    1w   CHR    1,3      0t0    6 /dev/null
    ibus
    -exte  2101 mohammad    2w   CHR    1,3      0t0    6 /dev/null
    ibus
    -x11   2103 mohammad    0r   CHR    1,3      0t0    6 /dev/null
    ... 
    برای لیست کردن فایلهای باز شده ی خاص، دستور زیر را اجرا کنید و به جای mohammad از username خود استفاده کنید :
    کد PHP:
    lsof -u mohammad 
    کد PHP:
    COMMAND    PID    USER    FD       TYPE             DEVICE  SIZE/OFF       NODE NAME
    systemd   1480 mohammad  cwd       DIR                8
    ,3      4096          2 /
    systemd   1480 mohammad  rtd       DIR                8,3      4096          2 /
    systemd   1480 mohammad  txt       REG                8,3   1595792    3147496 /lib/systemd/systemd
    systemd   1480 mohammad  mem       REG                8
    ,3   1700792    3150525 /lib/x86_64-linux-gnu/libm-2.27.so
    systemd   1480 mohammad  mem       REG                8
    ,3    121016    3146329 /lib/x86_64-linux-gnu/libudev.so.1.6.9
    systemd   1480 mohammad  mem       REG                8
    ,3     84032    3150503 /lib/x86_64-linux-gnu/libgpg-error.so.0.22.0
    systemd   1480 mohammad  mem       REG                8
    ,3     43304    3150514 /lib/x86_64-linux-gnu/libjson-c.so.3.0.1
    systemd   1480 mohammad  mem       REG                8
    ,3     34872    2497970 /usr/lib/x86_64-linux-gnu/libargon2.so.0
    systemd   1480 mohammad  mem       REG                8
    ,3    432640    3150484 /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1
    systemd   1480 mohammad  mem       REG                8
    ,3     18680    3150450 /lib/x86_64-linux-gnu/libattr.so.1.1.0
    systemd   1480 mohammad  mem       REG                8
    ,3     18712    3150465 /lib/x86_64-linux-gnu/libcap-ng.so.0.0.0
    systemd   1480 mohammad  mem       REG                8
    ,3     27112    3150489 /lib/x86_64-linux-gnu/libuuid.so.1.3.0
    systemd   1480 mohammad  mem       REG                8
    ,3     14560    3150485 /lib/x86_64-linux-gnu/libdl-2.27.so
    ... 
    استفاده مهم دیگر دستور lsof، یافتن process ی است که روی یک پورت خاص در حال listen کردن است. بطور مثال برای تشخیص پروسسی که روی پورت 80 در حال listen کردن است باید دستور زیر را اجرا کرد :
    کد PHP:
    sudo lsof -i TCP:80 
    کد PHP:
    COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    httpd    903   root    4u  IPv6  20222      0t0  TCP 
    *:http (LISTEN)
    httpd   1320 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   1481 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   1482 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   1493 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   1763 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   2027 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   2029 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   2044 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   3199 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN)
    httpd   3201 apache    4u  IPv6  20222      0t0  TCP *:http (LISTEN
    نکته : از آنجاییکه lsof در سرچ خودش برای فایلهای باز، kernel memory را می خواند، تغییرات سریع در kernel memory ممکن است منجر به خروجی غیر قابل پیشبینی شود که یکی از اصلی ترین علل حرکت نزولی استفاده از دستور lsof است.

    برای اطلاعات بیشتر به صفحه ی راهنمای دستور lsof مراجعه کنید.
    کد PHP:
    man lsof 

    همچنین توصیه میشود مطالعه کنید.

    دستور lsof در لینوکس به همراه 10 مثال عملی

    ابزار fswatch - مانیتور کردن تغییرات فایل ها و دایرکتوری ها در لینوکس

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

    دستور chattr برای ایجاد فایل های مهم و غیر قابل تغییر در لینوکس



    در این پست ما نحوه ی تشخیص کاربری که در حال استفاده از فایل خاصی در لینوکس است را شرح دادیم و نحوه ی شناسایی اطلاعات مربوط به owner و process هایی که در حال استفاده از یک فایل باز هستند را نمایش دادیم. سوال و نطرات خود را با ما به اشتراک بگدارید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-07-2021, 03:47 PM.

    #2
    پس میشه با sudo lsof -i TCP:80 یک نوعی تست آسیب پذیری انجام بدیم ؟ و برنامه های مخرب رو پیدا کرد البته تست چندین هزار پورت کار سختی خواستم یپرسم میشه کامنتی نوشت که مثلا از پورت 22تا 80 رو بررسی کنه ؟
    آخرین ویرایش توسط parsa-33; در تاریخ/ساعت 05-12-2019, 04:59 PM.

    کامنت


      #3
      سلام بله میتونید براش یک اسکریپت بنویسید. برای چک کردن چندین پورت هم میتونید از آپشن -i استفاده کنید. بخش شماره 5 آموزش زیر را برای کسب اطلاعات بیشتر بخونید.
      دستور lsof در لینوکس به همراه 10 مثال عملی

      کامنت

      درباره انجمن منطقه لینوکسی ها

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

      شبکه های اجتماعی
      در حال انجام ...
      X