लिनक्स सर्वर पर गायब होने वाली फाइलें


13

मुझे 4 विशिष्ट फाइलें मिली हैं जो किसी उपयोगकर्ता के होम डायरेक्टरी से गायब होती रहती हैं। जहां तक ​​हम जानते हैं, कोई क्रोनोजर या अन्य स्वचालित कार्य नहीं हैं जो उन्हें हटाएंगे। मैंने उन पर सेटअप ऑडिट किया है, लेकिन लॉग वास्तव में कुछ भी दिलचस्पी नहीं दिखा रहे हैं। मैं हमारी बैकअप उपयोगिता को हर रात उन्हें देख सकता हूं जब तक कि वे अब वहां नहीं हैं, लेकिन कुछ और नहीं। क्या ऐसा कुछ है जो उन फ़ाइलों को हटाने का कारण होगा जो ऑडिट के आसपास मिलेगा?

विचाराधीन फाइलें ये हैं:

/home/username/.bashrc
/home/username/.bash_profile

साथ ही उस उपयोगकर्ता .ssh निर्देशिका में फ़ाइलों के एक जोड़े। "रखवाले" नामक एक सबफ़ोल्डर में रखी गई इन फ़ाइलों की प्रतियां उसी समय डिलीट हो जाती हैं। 000 पर अनुमतियों को बदलने और रूट के स्वामित्व में होने से उन्हें मदद नहीं मिली है।

मुझे वर्तमान में लॉग इन बनाने, हटाने, उस सबफ़ोल्डर पर जाने के लिए इनोटिफ़ाइवाइट सेटअप मिला है, इसलिए उम्मीद है कि यह कुछ हो जाएगा, हालांकि यह तब हुआ जब यह नहीं हुआ, इससे बहुत अधिक लॉग इन नहीं हुआ।


1
कृपया अपने पोस्ट में उनके नाम और रास्ते जोड़ें, इससे मदद मिल सकती है।
Shadok

2
साथ ही ऑडिट लॉग पोस्ट करना सहायक हो सकता है।
जने पिक्कारेनैन

3
इसके अलावा, आप रूट और chmod 000 के रूप में स्वामित्व वाली फ़ाइलों को बनाने की कोशिश कर सकते हैं यह देखने के लिए कि क्या वे अभी भी हटाए गए हैं (या यदि कुछ और शिकायत / त्रुटि का कारण बनता है)।
बहुपद

5
Chmod 0000 के अलावा, आप + मैं इसे हटाने से भी जड़ को रोकने के लिए प्रयास करने के लिए chattr की कोशिश कर सकते
मेर

1
ज्ञात हो कि चैटट्रॉ सिर्फ एक्सट्रीम फाइल सिस्टम पर मदद करता है। लेकिन एक बकवास मदद करनी चाहिए। :-) आप उन फ़ाइलों को संशोधित होने से रोकने के लिए चैटट्रॉट के बजाय SELINUX का उपयोग कर सकते हैं। लेकिन IMHO विलोपन एक प्रक्रिया या उपयोगकर्ता से आना चाहिए।
जेएमडब्ल्यू

जवाबों:


20

समाधान 1 : systemtap
आप उन सभी PID को दिखाने के लिए systemtap का उपयोग कर सकते हैं, जो इनकोड और फ़ाइलों के अनलिंक () का उपयोग करने का प्रयास कर रहे हैं ।.bashrc.bash_profile

अपने कर्नेल के लिए सिस्टमटैप और डीबग प्रतीकों को स्थापित करें ।

unlink.stapनिम्नलिखित सामग्री के साथ नाम के साथ एक फ़ाइल बनाएँ :

probe syscall.unlink
{
    printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

फिर इसे साथ चलाएं sudo stap unlink.stap

समाधान 2 : inotify
तुम भी उपयोग कर सकते हैं inotify को देखने के लिए जब फाइल हटाया जाता है।

समाधान 3 : ftrace
एक और समाधान ftrace का उपयोग करना है :

trace-cmd record -e \*unlink\*

फ़ाइल के नष्ट होने की प्रतीक्षा करें, बंद करने के लिए CTRL + C दबाएँ trace-cmd record ..., फिर चलाएँ:

trace-cmd report

समाधान 4 : bpftrace
स्थापित करें bpftrace, फिर चलाएँ:

bpftrace -e 'tracepoint:syscalls:sys_enter_unlink* { printf("%s %s\n", comm, str(args->pathname)); }'

5

मीका के जवाब के अलावा, आप फ़ाइलों को रूट के रूप में + i + चैट कर सकते हैं और देख सकते हैं कि उन्हें हटाने की कोशिश करते समय कुछ भी त्रुटि आती है या नहीं।


4

क्या आप पूरी तरह से आश्वस्त हैं कि उपयोगकर्ता स्वयं (गलती से) उन्हें हटा नहीं रहा है?

मेरे पास उसी समस्या वाले कुछ क्लूलेस (विंडोज) उपयोगकर्ता थे। यह पता चला कि वे उन फ़ाइलों को स्वयं हटा देते हैं, जब वे एक FTP क्लाइंट के साथ अपने घर-डीआर पर जाते हैं। उन्होंने .xxxx फ़ाइलों पर ध्यान दिया (ftp क्लाइंट ने उन्हें छिपाया नहीं) और "अव्यवस्था" को हटा दिया।

यह मेरे साथ कभी नहीं हुआ था जब तक कि उनमें से एक ने फिर से दिखने वाली फाइलों के बारे में शिकायत नहीं की, जब तक कि उन्होंने कई दिन पहले डिलीट नहीं की।


2
मेरा विश्वास करो, मुझे यह आसान लग रहा है।
चाड पी।

यह हास्यास्पद था :)
स्नैप करें

3
अब यह मजाकिया है .... इतना नहीं जब यह हो रहा था और मैं समझ नहीं पा रहा था कि क्या हो रहा है। @Chad P: कृपया हमें बताएं कि आप क्या पाते हैं। मुझे यह काफी उत्सुक लगता है।
टन

3

हम लॉगआउट पर कुछ फ़ाइलों को साफ करने के लिए बैश लॉगआउट स्क्रिप्ट्स (~ / .bash_logout) का उपयोग करते हैं - आप यह देख सकते हैं कि क्या आपके पास वह सेटअप है, शायद उसमें वसा युक्त ग्लोब है।


2

अधिक एक घुसपैठिए की तरह लगता है, जो एक खोज / घर / उपयोगकर्ता-नाम फ़ाइलनाम -exec rm -f {}} कर रहा है; आखिरकार उसकी छींटाकशी :)। केवल अनुमान लगा रहे हैं, क्योंकि आपने उल्लेख किया है कि बैकअप फाइलें भी नष्ट हो रही हैं।


1

फ़ाइलों और उनकी सामग्री को खोने से बचाने के लिए आप LD_PRELOAD के माध्यम से libtrash सेटअप कर सकते हैं । Libtrash का उपयोग करके आप कई चीजों को कर सकते हैं लेकिन जो आपके लिए दिलचस्प हो सकते हैं

INTERCEPT_UNLINK
INTERCEPT_RENAME
INTERCEPT_FOPEN
INTERCEPT_OPEN

Libtrash के बारे में अच्छा लेख यहां पाया जा सकता है

दूसरी बात जिसका आप उल्लेख करते हैं, कि आपने फाइलों को जड़ से काट दिया है और वे अभी भी हटा दी गई हैं। यह है क्योंकि / घर / उपयोगकर्ता नाम उपयोगकर्ता के स्वामित्व में है; और अगर dir ने मॉड 755 कहा है; फिर कोई भी फ़ाइल या डायर उस डायर के स्वामित्व में है, जिसे कोई भी उपयोगकर्ता द्वारा हटाया नहीं जा सकता है; भले ही वह रूट फाइल या डीआईआर हो। यह मूल रूप से इस तथ्य के कारण है कि dir में फ़ाइल हटाने का अर्थ है dir सामग्री को बदलना और उपयोगकर्ता के पास उस dir का 7 (755) है ताकि वह जो चाहे कर सके।

फ़ाइलों को अपरिवर्तनीय (+ i) के रूप में सेट करने के लिए ext फ़ाइल सिस्टम पर chattr के माध्यम से पहले से सुझाए गए अन्य लोगों के रूप में इसे ब्लॉक करने के तरीके हैं। फिर किसी को फ़ाइल / डीआईआर में परिवर्तन करने से पहले अपरिवर्तनीय ध्वज को खोलना होगा। अपरिवर्तनीय ध्वज / गपशप केवल रूट द्वारा उपयोग किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.