প্রক্রিয়াটির পিড কীভাবে সন্ধান করবেন যা কোনও ফাইল মুছে ফেলেছে?


13

আমি ভিএম মাইগ্রেশন সম্পর্কিত একটি প্রকল্পে কাজ করছি। কখনও কখনও ভিএম চিত্রটি অদৃশ্য হয়ে যায় এবং আমি কেবল অপরাধী কে তা জানতে চাই। আমি সন্দেহজনক প্রক্রিয়াগুলিতে স্ট্রেস চেষ্টা করেছি কিন্তু কোনও ফলসই হয়নি।


আমি কেবলমাত্র একটি পরিবর্তে প্রতিটি প্রক্রিয়াটিতে আনলিংক সিস্টেম কলটি সনাক্ত করার একটি উপায় খুঁজে প্রত্যাশা করছিলাম তবে আমি অনুমান করি যে এটি করার সহজ উপায় নেই ...
মোহাম্মদ

উত্তর:


14

শেষ পর্যন্ত আমি এখানে উত্তর খুঁজে পেয়েছি ।

লিনাক্স অডিট ডিমন কৌশলটি করবে।

sudo auditctl -w /path/to/somefile -p wra

এবং তারপর

ausearch -f /path/to/somefile -i

দুর্দান্ত, তবে কীভাবে এটি কার্য সম্পাদনকে প্রভাবিত করে?
ভের্টেক

@vartec অত্যধিক নয়, টিউনিং পর linux-audit.com/tuning-auditd-high-performance-linux-auditing
নিকোলাই Fominyh

1

আপনি কোনও প্রক্রিয়াটির পিআইডি খুঁজে পেতে পারেন, এতে কিছু ফাইল খোলা রয়েছে lsof

একবার ফাইল বন্ধ হয়ে যায় এবং মুছে ফেলা হয়, আপনি সেই তথ্যটি পেতে পারেন না।

BTW। মনে রাখবেন, ফাইল মুছে ফেলা হচ্ছে এটি যে ডিরেক্টরিতে রয়েছে তার মধ্যে এটি অপারেশন, কোনও ফাইল নিজেই নয়।


দুর্ভাগ্যক্রমে এটি মুছে ফেলার জন্য কোনও ফাইল খোলার দরকার নেই। কমপক্ষে উদাহরণস্বরূপ "স্ট্রেস আরএম কিছু-ফাইল" আউটপুট দেখায় না যে আরএম কমান্ড প্রথমে ফাইলটি খুলুন এবং তারপরে এটি মুছুন। সুতরাং আমার ধারণা lsof সহায়ক নয় helpful
মোহাম্মদ

আমার উত্তরটির সর্বশেষ বাক্যটি পড়ুন
ভের্টেক করুন

1

উপরের উত্তরগুলি বার্ধক্যজনিত হওয়ায় আমাকে সিডডিগের সাথে বিকল্পটির পরামর্শ দিন । ফাইলটি মোছার প্রক্রিয়াগুলির pidএবং nameএর প্রদর্শন করি /tmp/test। প্রথমে আমরা ফাইলটি তৈরি করি touch /tmp/test। তারপরে আমরা sysdigনিম্নলিখিত ফিল্টারটি দিয়ে শুরু করব :

$ sudo sysdig -p'%proc.pid,%proc.name' '(evt.type=unlinkat and (evt.arg.name=test or evt.arg.name=/tmp/test)) or (evt.type=unlink and evt.arg.path=/tmp/test)'

unlinkat(2)একটি orফিল্টার প্রয়োজন যদি পথ (যেমন evt.arg.name) আপেক্ষিক হতে পারে । উভয়কে হ্যান্ডল করতে unlink(যা কল করে unlink(2)) এবং rm( unlinkat(2)এটির জিএনইউ সংস্করণে যা কল করে ), ফিল্টারটি উভয় সিস্টেমে মেলে।

sysdigএকটি প্রক্রিয়া ফাইল মুছে ফেলা হবে যখন চলমান উচিত। তারপরে যখন আমরা এই জাতীয় আদেশগুলি কার্যকর করি:

$ unlink /tmp/test
$ touch /tmp/test
$ rm /tmp/test
$ cd /tmp; touch test; rm test

এটি এমন আউটপুট প্রদর্শন করবে:

11380,unlink
11407,rm
11662,rm

ফিল্টারিং এবং আউটপুট সম্পর্কে ব্যাখ্যার জন্য দয়া করে সিসডিগ ব্যবহারকারী গাইড দেখুন

ফিল্টারটি বেশ লম্বা হওয়ায়, একটি ছিনছাটি লিখতে আমার পক্ষে সুবিধাজনক মনে হয়েছিল। এটি একটি লুয়া স্ক্রিপ্ট যা sysdigকমান্ডের সাথে সম্পর্কিত:

description = "displays processes that delete a file"
short_description = "spy file deletion"
category = "files"

args = 
{
    {
        name = "path", 
        description = "the path of the file to monitor", 
        argtype = "string"
    },
}

function on_set_arg(name, val)
    path = val
    return true
end

function on_init()
    local filename = path
    for i in string.gmatch(path, "[^/]+") do
        filename = i
    end
    chisel.set_event_formatter("%proc.pid\t%proc.name")
    chisel.set_filter(
        "(evt.type=unlinkat and (evt.arg.name=" .. path .. " or \
                             evt.arg.name=" .. filename .. ")) or \
     (evt.type=unlink and evt.arg.path=" .. path .. ")")
    return true
end

মন্তব্য করুন এবং উন্নত নির্দ্বিধায়। আপনি spy_deletes.luaডিরেক্টরিতে কোনও ফাইলের মধ্যে লুয়া স্ক্রিপ্টটি রাখতে sysdigপারেন এবং এটি ছিনিয়ে উপলভ্য করতে এই ডিরেক্টরিতে চালিত করতে পারেন। টাইপ করার সময় sudo sysdig -clআপনি এটি দেখতে পাবেন:

Category: files
---------------
spy_deletes         spy file deletion

এখন আপনি এটি কল করতে পারেন:

$ sudo sysdig -c spy_deletes /tmp/test

এবং অন্য টার্মিনাল টাইপ:

$ touch test; unlink test
$ touch test; unlink /tmp/test
$ touch test; rm test
$ touch test; rm /tmp/test

এটি আউটপুট দেবে:

16025   unlink
16033   unlink
16041   rm
16049   rm

unlinkatফিল্টার আরো সঠিক হতে হবে এবং শুধুমাত্র সুনির্দিষ্ট পাথ মেলে প্রাপ্য হবে। এর জন্য প্রদত্ত ডিরেক্টরিটির fd পুনরুদ্ধার করতে হবে unlinkat(2)


আপনার কমান্ডের সাথে আমার কোনও আউটপুট নেই।
এবি

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