কোন প্রক্রিয়া কোনও ফাইল পরিবর্তন করছে তা সন্ধান করুন


35

আমি আমার মেশিনে কোন প্রক্রিয়াটি একটি কনফিগারেশন ফাইল পরিবর্তন করে ( /etc/hostsসুনির্দিষ্ট হওয়ার জন্য) এটির একটি নির্ভরযোগ্য উপায় সন্ধান করার চেষ্টা করছি ।

আমি জানি আমি lsof /etc/hostsবর্তমানে কোন প্রসেসের সাথে ফাইলটি খোলা আছে তা খুঁজে বের করতে ব্যবহার করতে পারি , তবে এটি কোনও লাভ করে না কারণ প্রক্রিয়াটি অবশ্যই ফাইলটি খোলার, এটিকে লেখার, এবং তারপরে এটি আবার বন্ধ করার কারণে।

আমি lsofএর পুনরাবৃত্তি বিকল্প (-আর) এর দিকেও তাকিয়েছিলাম তবে মনে হয় এটি কেবল একবারে সেকেন্ডের মতো দ্রুত গতিতে চলেছে যা সম্ভবত লেখার অগ্রগতিতে কখনই ক্যাপচার করবে না।

আমি ফাইল সিস্টেমে পরিবর্তনগুলি পর্যবেক্ষণের জন্য কয়েকটি দম্পতিকে জানি, তবে এই ক্ষেত্রে আমি জানতে চাই যে কোন প্রক্রিয়াটি দায়ী, যার অর্থ এটি আইনটিতে ধরা।

উত্তর:


52

এটি অনুসন্ধান করতে আপনি নিরীক্ষণ ব্যবহার করতে পারেন। যদি ইতিমধ্যে উপলব্ধ না থাকে তবে আপনার ডিসট্রোর জন্য নিরীক্ষণ ইনস্টল করুন এবং সক্ষম করুন।

/ ইত্যাদি / হোস্টগুলিতে অডিট ওয়াচ সেট করুন

/sbin/auditctl -w /etc/hosts -p war -k hosts-file

-w watch /etc/hosts
-p warx watch for write, attribute change, execute or read events
-k hosts-file is a search key.

হোস্ট ফাইল ফাইল পরিবর্তন না হওয়া পর্যন্ত অপেক্ষা করুন এবং তারপরে লগইন হয়েছে তা সন্ধান করার জন্য ইউসার্চ ব্যবহার করুন

/sbin/ausearch -f /etc/hosts | more

আপনি আউটপুট যেমন জনগণ পাবেন


সময়-> বুধবার অক্টোবর 12 09:34:07 2011 টাইপ করুন = পাঠ চিত্র = অডিট (1318408447.180: 870): আইটেম = 0 নাম = "/ ইত্যাদি / হোস্ট" ইনোড = 2211062 দেব = এফডি: 00 মোড = 0100644 ওউইড = 0 ওগিড = 0 আরদেব = 00: 00 অবজেক্ট = সিস্টেম_ইউ: অবজেক্ট_আর: ইত্যাদি_ত: এস0 টাইপ = সিডাব্লুডি URL = নিরীক্ষণ (1318408447.180: 870): সিডব্লু = "/ হোম / আইইন" টাইপ = এসওয়াইএসএলএল == নিরীক্ষা (1318408447.180: 870): আর্ক = c000003e প্রাপ্ত syscall = 2 সাফল্য = হ্যাঁ প্রস্থান = 0 A0 = 7fff73641c4f A1 = 941 A2 = 1b6 A3 = 3e7075310c আইটেম = 1 ppid = 7259 PID = 7294 অহ আইডি = 1001 ইউআইডি = 0 gid = 0 euid = 0 SUID = 0 fsuid = 0 উদাহরণস্বরূপ = 0 সাজিদ = 0 এফএসজিড = 0 টিটি = পিটিএস 0 এসএস = 123 কম = "স্পর্শ" উদাহরণ = "/ বিন / টাচ" সাবজ = ইউজার_ইউ: সিস্টেম_আর: আনকনফাইনড_টি: এস0 কী = "হোস্ট-ফাইল"


এই ক্ষেত্রে আমি টিডস্ট্যাম্পের ফাইলগুলি পরিবর্তন করার জন্য টাচ কমান্ডটি ব্যবহার করেছি এটির পিড 7294 এবং এটি পিপিড ছিল 7259 (আমার শেল)।


2
"আপনার ডিস্ট্রোর জন্য নিরীক্ষণ সক্ষম করুন" সম্ভবত কিছুটা প্রসারিত করা উচিত। বিরক্তিকরভাবে, উপরের কমান্ডগুলি আমাকে ত্রুটি বা ফলাফল দেয় নি। "/ sbin / audctl -e 1" এছাড়াও সাহায্য করেনি। লগিংয়ের জন্য অডিট ডিমন চালানো সাহায্য করেছিল - "/etc/init.d/auditd start" (যদিও এটি আমার বিধি মোছা হয়েছে, সুতরাং আমাকে আবার প্রবেশ করতে হয়েছিল)।
tobixen

আমার জন্য কাজ করে নি, ausearchসর্বদা ফিরে আসে<no matches>
m0skit0

1
কখনও কখনও আপনাকে প্রকৃত প্রক্রিয়াটি শুরু করার জন্য একাধিক অডিট সেট করতে হতে পারে যদি সেই প্রক্রিয়াটি উদাহরণস্বরূপ এটির জন্য কাজ করার জন্য একটি বাহ্যিক কমান্ড কল করা হয়। অর্থাৎ আমি কেন ব্যবহারকারী ক্রন্টাব এন্ট্রি ক্রমাগত পুনরায় সেট করা হচ্ছে তা জানার চেষ্টা করছিলাম। crontab কমান্ড দায়বদ্ধ ছিল তবে আমি যে পিপিডটি বেরিয়ে এসেছি তা পরীক্ষা করেছিলাম, সুতরাং আমাকেও নিরীক্ষণ করতে হবে / ইউএসআর / বিন / ক্রন্টব, তারপরে ক্রন্টব অ্যাক্সেসের টাইমস্ট্যাম্পটির সাথে ক্রোনটাবের নিরীক্ষিত এক্সিকিউটিভের সাথে মেলে এবং তারপরে চেক এটি পিপিড ... যা প্রকাশ করেছে একটি অর্কেস্ট্রেশন ডিমন একটি নির্দিষ্ট ব্যবহারকারী ক্রোন কনফিগারেশন প্রয়োগ করছে।
উইল

3

আপনি ইনোটিফাই-সরঞ্জামগুলিও ব্যবহার করতে পারেন:

  inotifywait -mq -e open -e modify /etc/hosts

14
অডিটড আপনার পছন্দসই তথ্য দিতে সক্ষম। তথাপি এটি অনুমান করা সহজ যে অনিয়মিতকরণ আপনাকে এটি করতে দেবে - এটি হবে না, যেহেতু এটি আপনাকে প্রক্রিয়া আইডি দেয় না যা এই পরিবর্তনটি করেছে।
আপত্তি

2

অনেক অনুসন্ধানের পরেও আমি সমাধানটি পেয়েছি, কেবল এই আদেশটি ব্যবহার করুন: sudo fs_usage | grep [path_to_file]


2
এটি কেবল ম্যাকোএসের জন্য ...
মার্জিক

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