सर्वर पर सभी उपयोगकर्ताओं द्वारा सभी बैश कमांड कैसे लॉग इन करें?


21

हमारी छोटी कंपनी उबंटू सर्वर 11.10 चलाती है, जिसमें कुछ लोगों के पास एसएसएच पहुंच है। वास्तविक टर्मिनलों का उपयोग कभी-कभी किया जाता है। उपयोगकर्ता और टाइम स्टैम्प के साथ हम स्थानीय रूप से सभी बैश कमांड को कैसे चला सकते हैं?

हम मान सकते हैं कि कोई भी दकियानूसी नहीं है और सक्रिय रूप से लॉगिंग से बचने की कोशिश कर रहा है, लेकिन हम अभी भी उन उपयोगकर्ताओं को पसंद करेंगे जो उनकी लॉग फ़ाइलों में डायरेक्ट राइट-ऐक्सेस न करें। एक साथ सत्र सही ढंग से नियंत्रित किया जाना चाहिए।

जवाबों:


32

BASH गोले के लिए, सिस्टम-वाइड BASH रनटाइम कॉन्फ़िग फ़ाइल को संपादित करें:

sudo -e /etc/bash.bashrc

उस फ़ाइल के अंत में आवेदन करें:

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

एक नई फ़ाइल के साथ "लोकल 6" के लिए लॉगिंग सेट करें:

sudo -e /etc/rsyslog.d/bash.conf

और सामग्री ...

local6.*    /var/log/commands.log

पुनः आरंभ करें:

sudo service rsyslog restart

लोग आउट। लॉग इन करें। वोइला!

लेकिन मैं लॉग रोटेशन के बारे में भूल गया:

sudo -e /etc/logrotate.d/rsyslog

उसी तरह घुमाने के लिए लॉग फ़ाइलों की एक सूची है ...

/var/log/mail.warn
/var/log/mail.err
[...]
/var/log/message

तो उस सूची में नई bash- कमांड लॉग फ़ाइल जोड़ें:

/var/log/commands.log

बचाना।


लॉग रोटेशन के बारे में भूल गया जो मैंने उत्तर में जोड़ा था।

1
यह तरीका काम करता है, लेकिन मैं इसके चारों ओर एक विधि का आविष्कार कर सकता था (csh के साथ, .bash_logout शायद)। मैं सबाकॉन के एसक्ट के समाधान के साथ जाऊंगा। ये उत्कृष्ट लेख थे: linuxjournal.com/article/6144 और Beginlinux.com/blog/2010/01/…

2
मेरा मानना ​​है कि इसे उपयोगकर्ता द्वारा आसानी से रीसेट किया जा सकता है या PROMPT_COMMANDगैर-बैश शेल को रीसेट या अनसेट या निष्पादित किया जा सकता है ।
स्टीफन लासिवस्की

1
@Benubird ऐसा लगता है कि कुछ प्रीसेट सुविधा स्तर हैं, उनमें से 8 लोकल-लोकल 7 हैं: en.wikipedia.org/wiki/Syslog । ० का अर्थ है आपातकाल, ug का अर्थ है डीबग, और ६ का अर्थ केवल means है, "सामान्य परिचालन संदेश।"
मंचबंच

1
@yukashima क्योंकि लॉग्स बड़ी फाइलें बन सकती हैं अगर डिलीट नहीं की गई तो रोटेट करने का मतलब लॉग फाइलों को घुमाना और लॉग्स को छोटा रखने के लिए पुराने को डिलीट करना है ...
Badr Elmers

4

एक प्रक्रिया लेखा प्रणाली इस संबंध में, विशेष रूप में सहायक हो सकता खाते पर पैकेज कि lastcomm और एसी आदेशों प्रदान करता है।

एसी कमांड घंटों में, उपयोगकर्ताओं के कनेक्शन समय के बारे में आंकड़े प्रिंट करता है। यह उस समय की राशि है जब उपयोगकर्ता सिस्टम से जुड़ा हुआ है, या तो एसएसएच या सीरियल टर्मिनल के माध्यम से दूरस्थ रूप से या कंसोल पर है।

Lastcomm कमांड पहले निष्पादित कमांड के बारे में जानकारी प्रदर्शित करता है। सबसे हाल की प्रविष्टियाँ सूची के शीर्ष पर दी गई हैं। यह भी प्रदर्शित सीपीयू समय की कुल राशि है जो प्रत्येक प्रक्रिया का उपयोग किया जाता है।

एक पुराना ट्यूटोरियल जो मददगार हो सकता है, वह यहां है:

http://www.linuxjournal.com/article/6144?page=0,1

अन्य लेखांकन आदेश जैसे अंतिम और इसी तरह इस ट्यूटोरियल में देखे जा सकते हैं:

http://www.techrepublic.com/article/system-accounting-in-linux/1053377


lastcomm कमांड लकड़हारे के रूप में बहुत बेकार है। यह केवल निष्पादित निष्पादन योग्य रिकॉर्ड करता है। कोई तर्क, स्विच या पथ लॉग नहीं हैं।
फिल_1984_

3

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

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

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


कृपया उत्तर में इसे स्थापित करने और उपयोग करने के लिए निर्देश प्रदान करें।
मूरू

1
स्नूपॉपी जीथब पृष्ठ पर विस्तृत इंस्टॉलेशन निर्देश उपलब्ध हैं, जो अभी मुख्य स्नोपॉपी संसाधन है: github.com/a2o/snoopy । मैं फिर से अन्य स्थानों पर स्थापना निर्देश प्रदान कर रहा हूं क्योंकि प्राथमिक स्थान डिजाइन द्वारा बनाए रखा गया है और अन्य नहीं हैं। BTW Readme को अभी और अधिक संरचित होने के लिए अद्यतन किया गया था।
बोत्सजान स्कुफ़का

1
संभावित हो। लेकिन इसका उपयोग करने के लिए आवश्यक चरणों के सारांश के बिना, यह एक लिंक-केवल उत्तर है और हटाए जाने की संभावना है।
मूरू

1
खैर, मैंने एक वैकल्पिक और व्यवहार्य समाधान के लिए एक संकेतक प्रदान किया। यदि वह नहीं है जो इस साइट के बारे में है, तो हर तरह से इसे हटा दिया जाना चाहिए, साथ में मेरे खाते के साथ।
बोत्सजान स्कुफ़का

2
@BostjanSkufca को नाराज होने की जरूरत नहीं है। यह कम से कम यथोचित जवाब देने के लिए सिर्फ एक स्टैक एक्सचेंज बात है। यदि आप कदम जोड़ने के लिए बहुत दृढ़ता से विरोध कर रहे हैं, तो यह आपकी इच्छा है। मेरी नीचता बनी हुई है। शायद कोई इसे उखाड़ लेगा।
मुरु

3

आप यहाँ एक पास् ट या विशेष निष्पादन योग्य उपकरण का उपयोग किए बिना सभी बैश कमांड / बिल-इन को एक टेक्स्ट-फाइल या एक syslog सर्वर में लॉग करने के लिए एक स्क्रिप्ट पा सकते हैं ।

तैनात करने में बहुत आसान है, क्योंकि यह एक सरल शेल स्क्रिप्ट है जिसे बैश के आरंभ में एक बार बुलाया जाना चाहिए ।

यह मुफ़्त है और मुझे आशा है कि यह आपकी आवश्यकताओं के अनुरूप है।


1
यह एक अच्छा उत्तर है, लेकिन अपने ब्लॉग से लिंक करने के बजाए, उत्तर की बॉडी में स्टेप्स और स्क्रिप्ट को शामिल करना बेहतर है। क्या आप इसे शामिल करने के लिए अपना उत्तर संपादित कर सकते हैं?
टॉम बर्मन

2
अब साइट अनुपलब्ध है
Gaia

0

कई सत्रों की देखभाल करने के लिए इतिहास की फाइल को ओवर-राइट नहीं करना है, आपको बैश स्टार्टअप फ़ाइल में "शॉप्स-हिस्टैपेंडेंड" डालना होगा। देखिए, उसी समस्या पर भी यह सवाल


0

इसे आज़माएं (उपरोक्त समाधान बश 4.3 के साथ 100% काम नहीं करेगा):

export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'

यह लॉगिंग करता है और यह टाइमस्टैम्प को लॉग करने से रोकता है जो बैश इतिहास फ़ाइल के लिए उपयोग किया जाता है। जाल की जरूरत है, क्योंकि चाबुक कई बार स्ट्रॉग + सी दबाने के बाद "सबजोब" को संकेत भेजेगा (बैश 4.3 के साथ परीक्षण किया गया)। यह वर्तमान उपयोगकर्ता के लॉगआउट को मजबूर करेगा (जैसे sudo के साथ लॉग इन)


0

तुम भी acct स्थापित करने की कोशिश कर सकते हैं। Acct आपके लिनक्स सिस्टम पर क्या हो रहा है, इसका एक विस्तृत ऑडिट ट्रेल रखता है।

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