मैं सभी उपयोगकर्ताओं द्वारा प्रस्तुत सभी UNIX शेल कमांड कैसे लॉग कर सकता हूं?


8

क्या मशीन पर सभी गोले में प्रस्तुत हर कमांड को लॉग करने का एक सुंदर तरीका है? यह एक बार-बार उपयोग किए जाने वाले उबंटू सर्वर के संदर्भ में है, जिनमें से मैं केवल मानव उपयोगकर्ता हूं। (स्वचालित सिस्टम द्वारा उपयोग किए जाने वाले कई उपयोगकर्ता खाते हैं।)

मैं इसे विनीत और कम-ओवरहेड होना चाहूंगा, इसलिए मुझे अच्छा लगेगा अगर इसमें एक सरल विधि शामिल हो, जैसे कि कुछ script

जवाबों:


9

समय की सुबह के बाद से (वास्तव में उस समय से वापस डेटिंग जब लोगों को वास्तव में कंप्यूटर चक्र प्रति वास्तविक पैसे का भुगतान करना पड़ता था) यूनिक्स और यह क्लोन में एक सिस्टम है जिसका नाम प्रोसेस अकाउंटिंग ( acct) में बनाया गया है। इसने सिस्टम प्रशासकों को सटीक रूप से जानने की अनुमति दी। उनके उपयोगकर्ता क्या कर रहे थे और इसलिए उन्हें तदनुसार बिल दे सकते थे।

यह acctसुविधाएं आज भी अधिकांश यूनिक्स और लिनक्स प्रणालियों में मौजूद हैं।

यह साइट: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html आपको बताता है कि इसे कैसे सक्षम किया जाए।


क्या यह लॉग इन करने के लिए भी किया जा सकता है कि कौन सा उपयोगकर्ता sudo और su करता है, और बाद में रूट की कौन सी कमांड करता है।
डैनियल बेक

मेरा मानना ​​है कि यह उपयोगकर्ता द्वारा टाइप किए गए हर कमांड रन को लॉग करता है , tty, आदि। आप उस उपयोगकर्ता के साथ एक tty पर कमांड का मिलान कर सकते हैं जिसे उस tty में लॉग इन किया गया था ताकि यह पता लगाया जा सके कि वे किन उपयोगकर्ताओं के माध्यम से सुसाइड या सुडोल करेंगे।
माजेंको

धन्यवाद, मैं इस सुविधा से पूरी तरह से अनजान था। मैन पेजों का एक त्वरित पढ़ने से पता चलता है कि लॉगिंग तब तक जारी रहती है जब तक कि कम-डिस्क-स्पेस स्थिति तक नहीं पहुंच जाती है - इसलिए शायद लॉगऑन स्क्रिप्ट की आवश्यकता है।
jl6

मैंने सोचा कि अकाउंटिंग की प्रक्रिया अभी लॉग हुई है कि कौन सा कार्यक्रम चला, उसके सभी तर्कों के साथ कमांड नहीं?
सेरेक्स

2

यहाँ सभी शेल कमांड को लॉग करने का एक बहुत अच्छा और त्वरित तरीका है :

चरण 1:

अपने पसंदीदा टेक्स्ट एडिटर का उपयोग / bashrc खोलने / करने के लिए करें और अंत में निम्नलिखित लाइन को जोड़ें:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

चरण 2:

इस लाइन को /etc/syslog.lf फ़ाइल में जोड़कर स्थानीय फ़ाइल को लॉग फ़ाइल में भेजने के लिए syslogger सेट करें:

local6.*                /var/log/cmdlog.log

[पूरा ब्लॉग पोस्ट यहाँ देखें]


मैं सचेत करता हूं कि उपयोगकर्ता इसे अक्षम कर सकेगा क्योंकि यह चर को रीसेट कर देगा और क्योंकि इसे "प्रत्येक प्राथमिक संकेत जारी करने से पहले" निष्पादित किया जाएगा " यह तथ्य लॉग नहीं किया जाएगा।
dmckee --- पूर्व-संचालक बिल्ली का बच्चा

2

आप स्नूपि का उपयोग कर सकते हैं ।

यह स्थापित करने और हटाने के लिए बहुत आसान है (कोई कर्नेल मॉड्यूल या पैचिंग आवश्यक नहीं है)। ध्यान दें कि यह एक उचित ऑडिटिंग समाधान नहीं है और इसे आसानी से दरकिनार किया जा सकता है।

प्रकटीकरण: मैं वर्तमान स्नूपी मेंटेनर हूं।


बोस्ज़ान स्कुफ़का ने उबंटू में स्नोपॉपी स्थापित करने के लिए अतिरिक्त निर्देश भी दिए हैं और यहाँ एक ही सूत्र में एक अतिरिक्त टिप्पणी भी की है
कैरेल 6'14

स्नूपी के लिए +1; यह /var/log/auth.log में कमांड और दलीलों का एक अच्छा लॉग प्रदान करता है
डेविड गुडविन

1

आप सूद को शेल आवरण के रूप में उपयोग कर सकते हैं । इसमें आपके द्वारा की जाने वाली हर चीज का स्वचालित लॉगिंग शामिल है, और लॉग फ़ाइलों को वापस चला सकता है। अधिक जानकारी के लिए इसकी वेबसाइट देखें

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