So nähern Sie sich dem Problem nicht. Sobald Sie einem Benutzer Shell-Zugriff gewähren, vertrauen Sie diesem Benutzer an, alles zu tun, wofür er die erforderlichen Berechtigungen besitzt. Vergessen Sie die Befehlsprotokollierung, es gibt viel zu viele Möglichkeiten, einen Befehl in einem Unix-System auszuführen.
Zum Beispiel kann der Benutzer einen Mail-Client starten (der einzige protokollierte Befehl ist pine
zum Beispiel), dort wählt er "Compose" (Verfassen), um das VI zu starten, und startet von VI aus einen beliebigen Befehl, den er ausführen möchte :!cmd
. Dieser Befehl wird nirgendwo protokolliert und ist aus Sicht des Systems mit jeder von VI aufgerufenen Hilfsanwendung wie grep oder sort vergleichbar. Der einzige Befehl, der von der Shell protokolliert wurde, war pine
.
Anscheinend heißt das, was Sie tatsächlich wollen, Auditing . Aktivieren Sie die Überwachungssubsystem und verwenden Sie den auditctl
Befehl und den auditd
Dämon aus dem Audit - Paket zu kontrollieren , was protokolliert. Weitere Informationen finden Sie in der Manpage auditctl (8) .
Beachten Sie, dass die Protokollierung jeder Prozessinstanziierung möglicherweise auch nicht optimal ist. Das einfache ./configure
für ein Softwarepaket (das mit Autotools erstellt wurde) zeichnet sich beispielsweise durch die Erstellung von Tausenden von Prozessinstanzen aus. Dadurch wird das Überwachungsprotokoll mit so viel Rauschen überflutet, dass es später sehr schwierig wird, es zu analysieren.
Klingt für mich so, als suchst du etwas wie rootsh ( Manpage ). So zitieren Sie die Manpage:
Trotz des Namens kann dies für jeden Benutzer verwendet werden.
quelle
Wahrscheinlich ist es besser, wenn Benutzer sudo (oder ähnliches) verwenden, um Befehle auszuführen, die Ihnen wichtig sind, und den Benutzern auf einer bestimmten Ebene zu vertrauen. Je näher Sie der "vollständigen Kontrolle" der Dinge kommen, desto schwieriger ist es, herauszufinden, was sie tun. Ich habe mir zum Beispiel kürzlich solche Tools angesehen. Meistens erstellen sie nur Protokolle, die schwierig zu verwalten sind, wenn Sie über genügend Benutzer und Computer verfügen, damit sich so etwas lohnt. :)
Berücksichtigen Sie alle Informationen, die Sie generieren. Wie viel kümmert es dich? Wahrscheinlich sehr wenig - Sie generieren also Protokolle, die größtenteils wertlos sind. Wenn Sie die Dinge prüfen, die Ihnen wirklich am Herzen liegen, wie andere vorschlagen, werden Sie wahrscheinlich in einen besseren Endzustand versetzt.
quelle
Bash kann seit 4.1 mit Syslog-Unterstützung kompiliert werden.
Es ist nicht kinderleicht (Prozessabrechnung ist vielleicht besser dafür), aber es ist meistens eine Benutzerinteraktion. Die Lautstärke sollte überschaubarer sein und Sie können auf etwas Detaillierteres umschalten, wenn Sie den Verdacht haben, dass etwas nicht normal ist.
Dies ist jedoch sehr aufdringlich und als Benutzer würde ich eine sehr spezifische Datenschutzwarnung erwarten, bevor Sie damit beginnen.
quelle
Es gibt auch sudosh ( http://sudosh.sourceforge.net ), das die Sitzungsprotokollierung durchführt. Sie haben die Möglichkeit, es als definierte Shell für einen Benutzer oder über sudo auszuführen. Außerdem werden die Timings für jede Sitzung protokolliert, sodass Sie die Sitzung erneut abspielen und ansehen können (einschließlich Sitzungen bearbeiten und so weiter).
quelle