Velmi silný a skvělý příkaz v Bash je historie. Jednoduše řečeno, ve výchozím nastavení bude Bash ukládat historii všech příkazů, které zadáte. Hodnota proměnné HISTSIZE určuje počet událostí uchovaných v seznamu historie během relace. Ačkoli výchozí hodnota pro HISTSIZE je 500, možná ji budete chtít nastavit na pohodlnější hodnotu, například 10 000. Když opustíte shell, poslední provedené příkazy se uloží do souboru daného proměnnou HISTFILE (výchozí je .bash_history ve vašem domovském adresáři). Tento příspěvek popisuje kroky k uložení historie příkazů konkrétního uživatele v Linuxu.
1. Vytvořte nový skupinový monitor. Přidání uživatelů do něj musí být monitorováno jako sekundární skupina.
# groupadd monitor # usermod -a -G monitor [user]
Například:
# usermod -a -G monitor opc # id opc uid=1000(opc) gid=1000(opc) groups=1000(opc),1002(admins),1003(monitor)
2. Vytvořte adresář /var/log/shelllogs, kam se bude ukládat historie shellu.
# mkdir /var/log/shelllogs # chown root:monitor /var/log/shelllogs # chmod 770 /var/log/shelllogs # chmod +t /var/log/shelllogs
3. Vytvořte skript v /etc/profile.d s upraveným formátem historie, aby byl exportován při každém přihlášení uživatele.
# 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. Upravte /etc/bashrc a přidejte následující řádek na konec souboru.
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)
Přihlaste se ke stejnému serveru prostřednictvím jiné relace ssh/putty, abyste zajistili vytváření souborů.