Bir sunucudaki tüm kullanıcılar tarafından tüm Bash komutları nasıl kaydedilir?

19

Küçük şirketimiz, birkaç kişinin SSH erişimine sahip olduğu Ubuntu Sunucusu 11.10'u çalıştırıyor. Gerçek terminaller bazen de kullanılır. Kullanıcı ve zaman damgasıyla birlikte tüm Bash komutlarını yerel olarak nasıl kaydedebiliriz?

Hiç kimsenin nefret etmediğini ve aktif olarak günlüğe kaydetmekten kaçınmaya çalıştığını varsayabiliriz, ancak yine de kullanıcıların günlük dosyalarına doğrudan yazma erişimine sahip olmamasını tercih ederiz. Eşzamanlı oturumlar doğru şekilde ele alınmalıdır.

    
sordu Tin 07.01.2012 16:19

7 cevap

28

BASH kabukları için, sistem genelinde BASH çalışma zamanı yapılandırma dosyasını düzenleyin:

sudo -e /etc/bash.bashrc

Söz konusu dosyanın sonuna ekle:

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

Yeni bir dosyayla "local6" için günlük oluşturmayı ayarlayın:

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

Ve içeriği ...

local6.*    /var/log/commands.log

rsyslog'u yeniden başlat:

sudo service rsyslog restart

Oturumu kapatın. Giriş yap Voila!

Ancak günlük rotasyonunu unuttum:

sudo -e /etc/logrotate.d/rsyslog

Aynı şekilde döndürmek için günlük dosyalarının bir listesi var ...

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

Yani yeni bash-komutları log dosyasını bu listeye ekleyin:

/var/log/commands.log

Kaydet.

    
verilen cevap user8290 07.01.2012 16:45
4

Bir süreç muhasebesi sistemi, bu bağlamda, özellikle, soncomm ve ac komutlarını sağlayan acct paketinde yardımcı olabilir.

Ac komutları, kullanıcıların bağlantı süreleriyle ilgili istatistikleri saat cinsinden yazdırır. Bu, kullanıcının sisteme, ya SSH ya da bir seri terminal üzerinden ya da konsolda iken, bağlı olduğu süredir.

Lastcomm komutu, daha önce yürütülen komutlar hakkında bilgi görüntüler. En son girişler listenin en üstünde yer almaktadır. Ayrıca, görüntülenen her işlemin toplam CPU zamanı miktarı görüntülenir.

Yardımcı olabilecek eski bir öğretici şudur:

İşte

Son ve benzeri diğer muhasebe komutları bu eğiticide bulunabilir:

İşte

    
verilen cevap Sabacon 07.01.2012 18:17
3

Tüm günlüğünü kaydetmek için buradan bir komut dosyası bulabilirsiniz. bash komutları / yerleşik dosyaları bir yama dosyasına veya özel bir yürütülebilir araç kullanmadan bir metin dosyasına veya syslog sunucusuna.

Dağıtımı çok kolaydır, çünkü bash 'ın başlatılmasında bir kez çağrılması gereken basit bir kabuk betiğidir.

Ücretsiz ve umarım ihtiyaçlarınızı karşılar.

    
verilen cevap Francois Scheurer 13.09.2012 13:35
2

snoopy 'yi kullanabilirsiniz.

Snoopy kaydedici amacınıza uygun olabilir. Bu, kaçınılmaz bir oturum açma çözümü değil, kendi eylemlerini takip etmeyi tercih eden çalışkan yöneticiler için yararlı bir araç değildir.

Açıklama: Snoopy düzenleyiciyim.

    
verilen cevap Bostjan Skufca 06.11.2014 00:15
0

Geçmiş dosyasının üzerine yazmayan birden fazla oturumla ilgilenmek için, Bash başlangıç ​​dosyasına "shopt -s histappend" yazmanız gerekir. Aynı sorun hakkında bu soruyu da görün.

    
verilen cevap pdp 05.03.2014 16:28
0

bunu deneyin (yukarıdaki çözümler, bash 4.3 ile% 100 çalışmaz):

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;'

Bu, günlüğe kaydetme işlemini yapar VE bash geçmiş dosyası için kullanılan zaman damgalarının günlüğe kaydedilmesini engeller. tuzak gereklidir, çünkü bash strg + c tuşlarına birkaç kez basıldıktan sonra sinyalleri "alt-işeme" gönderecektir (bash 4.3 ile test edilmiştir). Bu, geçerli kullanıcının çıkışını zorlar (örneğin, sudo ile oturum açar)

    
verilen cevap Hans-Joachim Kliemeck 12.10.2014 23:26
0

Ayrıca acct yüklemeyi de deneyebilirsiniz. Acct, Linux sistemlerinizde neler yapıldığına dair ayrıntılı bir denetim izi tutar.

sudo apt-get install acct
    
verilen cevap user571354 08.08.2016 02:01

Etiketlerdeki diğer soruları oku