लिनक्स फ़ाइल का उपयोग निगरानी


20

क्या यह पता लगाने के लिए यूनिक्स में कोई तरीका है कि पिछले 1 सप्ताह में किसने कुछ फ़ाइल एक्सेस की है? यह उपयोगकर्ता या कुछ स्क्रिप्ट इसे किसी अन्य स्थान पर ftp हो सकता है। क्या मुझे ऐसे उपयोगकर्ता नाम की सूची मिल सकती है, जिन्होंने कुछ फ़ाइल एक्सेस की हैं? मैं कैसे पता लगा सकता हूं कि कौन विशेष फ़ाइल एक्सेस कर रहा है ??

जवाबों:


39

जब तक आपके पास बहुत ही असामान्य लॉगिंग नीतियां नहीं होती हैं, तो कौन सी फ़ाइल लॉग नहीं की जाती है (यह जानकारी का एक बड़ा हिस्सा होगा)। आप पता लगा सकते हैं कि सिस्टम लॉग में किस समय लॉग इन किया गया था; lastआदेश आप इस तरह के रूप में इतिहास, और अन्य लॉग के लिए लॉग इन देता है /var/log/auth.logजो आपको बताएगा कि उपयोगकर्ताओं को प्रमाणीकृत और जहां से वे में लॉग इन किया है (जो टर्मिनल, या जो मेजबान अगर दूर से)।

जिस तिथि में किसी फ़ाइल को अंतिम बार पढ़ा गया था उसे उसका एक्सेस टाइम या शॉर्ट के लिए atime कहा जाता है । सभी यूनिक्स फाइल सिस्टम इसे स्टोर कर सकते हैं, लेकिन कई सिस्टम इसे रिकॉर्ड नहीं करते हैं, क्योंकि इसमें एक (आमतौर पर छोटा) प्रदर्शन जुर्माना है। ls -ltu /path/to/fileया stat /path/to/fileफ़ाइल के एक्सेस समय को दिखाता है।

यदि कोई उपयोगकर्ता फ़ाइल को एक्सेस करता है और अपनी पटरियों को छिपाने की कोशिश नहीं कर रहा है, तो उसके शेल इतिहास (उदाहरण ~/.bash_history) में सुराग हो सकता है।

यह जानने के लिए कि अभी क्या या कौन सी फाइल खुली है, का उपयोग करें lsof /path/to/file

भविष्य में किसी फ़ाइल का क्या होता है यह लॉग करने के लिए, कुछ तरीके हैं:

  • Inifyifywait का उपयोग करें । जब कोई पढ़ेगा तो inotifywait -e access /path/toएक लाइन प्रिंट करेगा । यह इंटरफ़ेस आपको नहीं बताएगा कि फ़ाइल किसने एक्सेस की है; जैसे ही यह रेखा दिखाई देती है, आप कॉल कर सकते हैं , लेकिन एक दौड़ की स्थिति है (एलएसओएफ के चलते समय समाप्त हो सकता है)।/path/to/ ACCESS filefilelsof /path/to/file

  • लॉगएफएस एक स्टैचेबल फाइल सिस्टम है जो एक फाइलसिस्टम ट्री का एक दृश्य प्रदान करता है, और इस दृश्य के माध्यम से सभी एक्सेस के कट्टर लॉगिंग कर सकता है। इसे कॉन्फ़िगर करने के लिए, LogFS कॉन्फ़िगरेशन फ़ाइल सिंटैक्स देखें

  • आप बड़ी संख्या में चीजों को लॉग करने के लिए लिनक्स के ऑडिट सबसिस्टम का उपयोग कर सकते हैं, जिसमें फाइल सिस्टम एक्सेस शामिल है। सुनिश्चित करें कि auditdडेमॉन शुरू हो गया है, फिर जो आप लॉग इन करना चाहते हैं उसे कॉन्फ़िगर करें auditctl। प्रत्येक लॉग ऑपरेशन को /var/log/audit/audit.log(विशिष्ट वितरण पर) दर्ज किया गया है । किसी विशेष फ़ाइल को देखना शुरू करने के लिए:

    auditctl -w /path/to/file
    

    यदि आप किसी निर्देशिका पर नजर रखते हैं, तो उसमें मौजूद फाइलें और उसके उपनिर्देशिका पुनरावर्ती रूप से भी देखे जाते हैं।


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

@ जैक: आपके सेटअप के बारे में बहुत कुछ जानने के बिना कहना मुश्किल है, लेकिन जब तक कुछ भी फाइल को हटा या नाम नहीं देता है, तब तक इसे लेने के लिए अन्य लिपियों के लिए वहां मौजूद होगा, चाहे कोई और इसे एक्सेस कर रहा हो या नहीं। आपकी टिप्पणी से, मुझे लगता है कि आपको यह देखना चाहिए कि जब आप अपनी स्क्रिप्ट चलाते हैं तो क्या होता है।
गिल्स एसओ- बुराई को रोकें '

2
अरे, आप इसके साथ एक अच्छा गोलाकार लूप बना सकते हैं:syslogd access log file /var/log/audit.log at 10:01\nsyslogd access log file /var/log/audit.log at 10:02\n...
पेंगुइन

7

Inotifywait के साथ उपरोक्त उदाहरण में से एक होना चाहिए (अधिक जानकारी के लिए मैन पेज देखें):

inotifywait /path/to/file
inotifywait -e open /pat/to/file

या निगरानी मोड और टाइमस्टैम्प के साथ:

inotifywait -m --format '%w:%e:%T' --timefmt '%F %T %Z %z'

6

पिछला जवाब वह करने के लिए सबसे अच्छा अभ्यास नहीं है जो आप पूछते हैं। लिनक्स में इसके लिए एक एपीआई है। inotifyएपीआई http://linux.die.net/man/7/inotify

  1. आप inotifyसीधे एपीआई को कॉल करने के लिए एक सी प्रोग्राम लिख सकते हैं
  2. आप kfsmd, http://www.linux.com/archive/feature/124903 एक डेमन का उपयोग कर सकते हैंinotify
  3. यदि आप कुछ ऐसा चाहते हैं जो प्लेटफ़ॉर्म पर काम करता है ( inotifyलिनक्स विशिष्ट है) और आप जावा का उपयोग कर रहे हैं, तो JNotify प्लेटफ़ॉर्म (लिनक्स, मैक, विंडोज) पर काम करता है, जो मूल OS के अंतर्निहित API को अमूर्त करता है।

3
स्टैक एक्सचेंज में आपका स्वागत है । उत्तर कालानुक्रमिक क्रम में प्रस्तुत नहीं किए जाते हैं, इसलिए "पिछला उत्तर" यह सूचित नहीं करता है कि आपका कौन सा उत्तर है। मुझे आश्चर्य है कि आप अन्य दो में से किसका भी जिक्र कर रहे हैं: किसी के पास ऐसा कुछ भी नहीं है जो अच्छा या बुरा अभ्यास जैसा दिखता है, और दूसरा जो कि एपीआई का उल्लेख करता है।
गिल्स एसओ- बुराई को रोकें '

अधिकांश शायद ग्लेन डिफ़ॉल्ट वोट छँटाई के साथ ऊपर दिए गए उत्तर को संदर्भित करता है। वास्तव में सबसे लोकप्रिय उत्तर प्रश्न का हल प्रस्तुत करने में विफल रहता है। ऐसे कई कारण हो सकते हैं जिनके लिए किसी को यह देखने की आवश्यकता हो सकती है कि दी गई समय सीमा के लिए कितनी बार किसी फ़ाइल को एक्सेस किया जाता है।
Wtower

1
जैसा कि unix.stackexchange.com/a/12251/20336 में बताया गया है कि एपीआई किसी फ़ाइल को एक्सेस करने की जानकारी नहीं देता है । इसके अलावा inotify वास्तव में यह पता लगाने में मदद नहीं करता है कि पिछले सप्ताह फाइल किसने एक्सेस की थी। आपको इसके लिए ऑडिट फीचर्स की आवश्यकता है, जिसे सॉफ्टवेयर नामक सॉफ्टवेयर का उपयोग करने की आवश्यकता होती है auditd(हालांकि, इससे यह पता लगाने में भी मदद नहीं मिलती है कि पिछले सप्ताह फाइल को किसने एक्सेस किया था, जब तक कि आप auditdपिछले सप्ताह पहले से ही नहीं चल रहे थे)।
मिकको रेंटालीनें

3

यह सामान्य रूप से संभव नहीं है। मैंने फ़ाइल सिस्टम को पर्याप्त ऑडिटिंग के साथ देखा है ताकि यह एक या दूसरे तरीके से संभव हो सके, लेकिन यह सामान्य यूनिक्स चीज़ नहीं है, नहीं।

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