কোন প্রোগ্রাম বা স্ক্রিপ্ট একটি প্রদত্ত ফাইল তৈরি করেছে তা খুঁজে পাওয়া সম্ভব?


35

তিনটি ফাইল হঠাৎ করে আমার হোম ডিরেক্টরিতে উপস্থিত হয়েছিল, যার নাম "ক্লায়েন্ট_স্টেট.এক্সএমএল", "লকফিল" এবং "টাইম_স্ট্যাটস_লগ"। শেষ দুটি খালি। আমি ভাবছি তারা সেখানে কীভাবে পেল? এটি প্রথমবার হয়নি, তবে শেষবারটি কয়েক সপ্তাহ আগে হয়েছিল; আমি ফাইলগুলি মুছে ফেলেছি এবং কিছুই ভাঙ্গা বা অভিযোগ করা হয়নি। আমি কি সময় দ্বারা রিপোর্ট এ করছিলাম মনে সক্ষম হয়েছে না stat $filename। তারা কোথা থেকে এসেছিল তা আমি খুঁজে পাওয়ার কোনও উপায় আছে?

বিকল্পভাবে, ফাইল তৈরির জন্য হোম ডিরেক্টরি (তবে সাব-ডিরেক্টরি নয়) নিরীক্ষণের কোনও উপায় আছে?


যেহেতু আমি নিশ্চিত যে কেউ এটি উল্লেখ করবে, তাই আমার অজানা নয়।
নেকড়ে

উত্তর:


18

কোন প্রোগ্রাম কোন ফাইল তৈরি করেছে তা নির্ধারণের একটি উপায় আছে বলে আমি বিশ্বাস করি না ।

আপনার বিকল্প প্রশ্নের জন্য: আপনি ফাইলটি পুনরায় তৈরি করতে দেখতে ব্যবহার করতে পারেনinotify । সাবসিস্টেমের inotifywaitজন্য একটি কমান্ড-লাইন ইন্টারফেস inotify; আপনি এটি createআপনার হোম ডিরেক্টরিতে ইভেন্টগুলি অনুসন্ধান করতে বলতে পারেন :

$ (sleep 5; touch ~/making-a-test-file) &
[1] 22526

$ inotifywait -e create ~/
Setting up watches.
Watches established.
/home/mmrozek/ CREATE making-a-test-file

আপনি সম্ভবত এটি -m(মনিটর) দিয়ে চালাতে চান যা এটি প্রথম ইভেন্টটি দেখার পরে প্রস্থান না করার কথা বলে


আমি কীভাবে পাব inotify? এটি ইনস্টল করা হয়নি (কার্নেল ২.6.৩৪) এবং নেই /dev/inotify
নেকড়ে

1
@ ওল্ফ কি ঝামেলা? যদি আপনি নিজের কার্নেল তৈরি করেন তবে এটি CONFIG_INOTIFY_USER( Filesystems-> Inotify support for userspace)। inotifywaitসম্ভবত এমন কিছু প্যাকেজে রয়েছেinotify-tools
মাইকেল মরোজেক

@ মিশেল, এটি ওপেনসুএস 11.3। আমি কখনও কার্নেল তৈরি করি নি; লিনাক্সটি প্রায় 5 মাস ব্যবহার করে আসছে এবং এটি কিছুটা দুরূহ ধারণা। তবে আমি টিউটোরিয়াল বা অন্য কিছুর সন্ধান করব।
নেকড়ে

@ ওল্ফ ওয়েল, আপনি যে কার্নেলটি নিয়ে এসেছেন তা যদি না আসে তবে ডগবনের উত্তরটি আরও সহজ হতে পারে
মাইকেল মরোজেক

2
@ মিশেল প্রকৃতপক্ষে, আরও কিছু শিকার এবং গবেষণা করার পরে, আমি একটি সম্প্রদায় ভান্ডার যুক্ত করেছি, এটি দেখা যাচ্ছে, inotify-toolsপ্যাকেজটি রয়েছে , তাই আমার এখন inotifywait(এবং inotifywatch) রয়েছে। আমি এটি পরীক্ষা করে দেখেছি এবং এটি কাজ করে বলে মনে হচ্ছে।
নেকড়ে

22

লগডএফএফএস অ্যাক্সেস করে কোনও ফাইল সিস্টেমের মধ্যে ঘটে যাওয়া সমস্ত কিছুই আপনি দেখতে পারেন । এটি একটি স্ট্যাকড ফাইল সিস্টেম যা ডিরেক্টরি ট্রিতে প্রতিটি অ্যাক্সেস লগ করে।

loggedfs -l /var/tmp/$USER-home-fs.log ~

আপনার পুরো হোম ডিরেক্টরি লগইন করা আপনার সিস্টেমে ধীর হতে পারে। আপনি কমপক্ষে কঠোর ফিল্টার সহ একটি কনফিগারেশন ফাইল লিখতে চাইবেন ।

লিনাক্সে আপনার যদি রুট অ্যাক্সেস থাকে তবে আপনি ফাইল সিস্টেম অ্যাক্সেস সহ প্রচুর পরিমাণে লগ করতে অডিট সাবসিস্টেমটি ব্যবহার করতে পারেন । auditdডেমনটি শুরু হয়েছে কিনা তা নিশ্চিত করুন , তারপরে আপনি লগইন করতে চান তা কনফিগার করুন auditctl। প্রতিটি লগ করা অপারেশন রেকর্ড করা হয় /var/log/audit/audit.log(সাধারণ বিতরণে)। একটি নির্দিষ্ট ফাইল দেখা শুরু:

auditctl -w /path/to/file

বা দীর্ঘ আকারে

auditctl -a exit,always -F path=/path/to/file

আপনি যদি কোনও ডিরেক্টরিতে ( -wবা দিয়ে -F dir=) একটি ঘড়ি রাখেন তবে এতে থাকা ফাইলগুলি এবং এর উপ-ডিরেক্টরিগুলি পুনরাবৃত্তভাবে পর্যবেক্ষণ করা হয়।


সুরক্ষা ইভেন্ট অডিটিংয়ের মাধ্যমে বিএসডি এটি সমর্থন করে। freebsd.org/doc/en_US.ISO8859-1/books/handbook/audit.html
শন জে গফ

4

আপনি একবারে নজর রাখতে চাইতে পারেন auditd, এই প্যাকেজটি আপনাকে সুরক্ষা অডিটিং করতে দেয় এবং ফাইল সিস্টেমে কারা পরিবর্তন করেছে সে সম্পর্কে প্রচুর তথ্য পাবেন।


যদি আপনার এমন কোনও সার্ভার থাকে যা একাধিক ব্যবহারকারীর জন্য শেল অ্যাক্সেস সরবরাহ করে এবং স্বতন্ত্র ক্রিয়াকলাপের জন্য কিছু স্তর জবাবদিহিতা সরবরাহ করতে পারে তবে আপনি কমান্ডের ইতিহাস লগিং সহ কয়েকটি শেল (যেমন ব্যাশ এবং টিসিএস) তৈরি করতে পারেন। আমি < টিমেনকেডিএন.এন.2020/12/07/… > এ শেলগুলি লগ ইন করার বিষয়ে একটি ব্লগ পোস্ট লিখেছিলাম । শেল লগিং কোনও বাস্তব অডিটিং সিস্টেমের প্রতিস্থাপন নয় , কারণ এটি অ-ইন্টারেক্টিভ শেল (স্ক্রিপ্ট বা প্রোগ্রামগুলির মতো) দ্বারা চালিত কমান্ডগুলি লগ করে না। এই ধরণের গ্র্যানুলারিটি পেতে আপনার সত্যই একটি ভাল অডিটিং সমাধান দরকার।
টিম কেনেডি

1
@ টিম কেনেডি - আপনার ব্লগ পোস্ট আর আসে না।
SLM

1
দুঃখিত। সাইট হ্যাক হয়ে গেছে, এবং কিছুক্ষণের জন্য ডাউন ছিল। নতুন পৃষ্ঠাটি টাইমকনেডি.এন.2020
টিম কেনেডি

3

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে কেউ যদি এটির কাজে লাগে সে ক্ষেত্রে আমি অন্য পদ্ধতির পরামর্শ দেব। আমি মূলত এটির একটি প্রশ্নের উত্তর হিসাবে পোস্ট করেছি যা এইটির সাথে ছলছল করা হয়েছিল।

একটি বিকল্প ব্যবহার করা হয় sysdig: একটি ওপেন-সোর্স সিস্টেম মনিটরিং অ্যাপ্লিকেশন। এটি ব্যবহার করে, আপনি নাম দ্বারা কোনও ফাইলে ক্রিয়াকলাপ পর্যবেক্ষণ করতে পারেন। মনে করুন যে আপনি কী প্রক্রিয়া নামের একটি ফাইল তৈরি করছেন তা দেখতে চেয়েছিলেন /tmp/example.txt:

# sysdig fd.name=/tmp/example.txt
567335 16:18:39.654437223 0 touch (5470) < openat fd=3(<f>/tmp/example.txt) dirfd=-100(AT_FDCWD) name=/tmp/example.txt flags=70(O_NONBLOCK|O_CREAT|O_WRONLY) mode=0666
567336 16:18:39.654438248 0 touch (5470) > dup fd=3(<f>/tmp/example.txt)
567337 16:18:39.654438592 0 touch (5470) < dup res=0(<f>/tmp/example.txt)
567338 16:18:39.654439629 0 touch (5470) > close fd=3(<f>/tmp/example.txt)
567339 16:18:39.654439764 0 touch (5470) < close res=0
567342 16:18:39.654441958 0 touch (5470) > close fd=0(<f>/tmp/example.txt)
567343 16:18:39.654442111 0 touch (5470) < close res=0

এই আউটপুট থেকে, আপনি দেখতে পাবেন যে touchপিড 5470 নামের একটি প্রক্রিয়া ফাইলটি খোলেনি।

আপনি যদি আরও তথ্য চান, আপনি "ক্যাপচার মোডে" চালাতে পারেন যেখানে একটি সিস্টেম কল ট্রেস সংগ্রহ করা হয়:

# sysdig -w /tmp/dumpfile.scap

তারপরে ফাইলটি তৈরি হওয়ার জন্য অপেক্ষা করুন, তারপরে থামুন sysdigএবং চালনা করুন:

# csysdig -r /tmp/dumpfile.scap

এটি আপনাকে যা কিছু ঘটেছিল তা আবিষ্কার করতে দেবে। আপনি টিপতে <F2>এবং নির্বাচন করতে পারেন Files, <F4>ফাইলটির নাম অনুসন্ধান করতে টিপুন , তারপরে <F6>"খনন" টিপুন (যা আপনাকে উপরের কমান্ডের অনুরূপ আউটপুট প্রদর্শন করবে)। এটির সাহায্যে আপনি সেই প্রক্রিয়াটি সম্পর্কে তথ্য খুঁজতে একই পন্থাটি ব্যবহার করতে পারেন যা প্রকৃতপক্ষে ফাইলটি তৈরি করেছে created

সেখানে একটি GUI সংস্করণ csysdigবলা sysdig-inspect, যদি যে আরো চা আপনার কাপ আছে।


বা হতে পারে এমন একটি ব্যস্ত লুপ যা ক্রমাগত lsof চালানোর চেষ্টা করে / কখন কোনও প্রক্রিয়া সেই ফাইলটিতে লিখছে তা দেখার চেষ্টা করে ... unix.stackexchange.com/a/13782/8337
রোজারডপ্যাক 19

2

আপনি পান নি inotifyতাই আপনি কোনও স্ক্রিপ্ট লিখতে পারেন যা একটি লুপে ফাইলটির জন্য পরীক্ষা করে:

#!/bin/sh

while [ true ]; do                     # Run for as long as nessesary
  if [ -f /path/to/file ]; then        # If fileexists
    echo "Found file"                  # Notify and stop monitoring
    exit 0
  fi
  sleep 5                             # Else wait 5 secs
done

2
এটি কোন প্রোগ্রাম এটি তৈরি করেছে তা দেখায় না
ওভারকোডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.