Ein sehr mächtiger und cooler Befehl in Bash ist Geschichte. Einfach ausgedrückt speichert Bash standardmäßig einen Verlauf aller von Ihnen eingegebenen Befehle. Der Wert der Variablen HISTSIZE bestimmt die Anzahl der Ereignisse, die während einer Sitzung in der Verlaufsliste aufbewahrt werden. Obwohl der Standardwert für HISTSIZE 500 ist, möchten Sie ihn vielleicht auf einen bequemeren Wert wie 10000 setzen ist .bash_history in Ihrem Home-Verzeichnis). Dieser Beitrag beschreibt die Schritte zum Speichern des Befehlsverlaufs eines bestimmten Benutzers in Linux.
1. Erstellen Sie einen neuen Gruppenmonitor. Das Hinzufügen von Benutzern muss als sekundäre Gruppe überwacht werden.
# groupadd monitor # usermod -a -G monitor [user]
Zum Beispiel:
# usermod -a -G monitor opc # id opc uid=1000(opc) gid=1000(opc) groups=1000(opc),1002(admins),1003(monitor)
2. Erstellen Sie das Verzeichnis /var/log/shelllogs, in dem der Shell-Verlauf gespeichert wird.
# mkdir /var/log/shelllogs # chown root:monitor /var/log/shelllogs # chmod 770 /var/log/shelllogs # chmod +t /var/log/shelllogs
3. Erstellen Sie ein Skript in /etc/profile.d mit optimiertem Verlaufsformat, sodass es bei jeder Benutzeranmeldung exportiert wird.
# cat /etc/profile.d/history.sh export HISTSIZE=10000 export HISTTIMEFORMAT='%F %T ' export HISTFILE=/var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T) export PROMPT_COMMAND='history -a'
4. Bearbeiten Sie /etc/bashrc und fügen Sie die folgende Zeile am Ende der Datei hinzu.
test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -f /var/log/shelllogs/$(who am i | awk '{print $1}';exit)-as-$(whoami)-$(date +%F-%T)_console.log)
Melden Sie sich über eine andere ssh/putty-Sitzung beim selben Server an, um sicherzustellen, dass Dateien erstellt werden.