Як зареєструвати всі команди оболонки UNIX, подані всіма користувачами?


8

Чи є елегантний спосіб реєстрації кожної команди, поданої у всіх оболонках на машині? Це в контексті нечасто використовуваного сервера Ubuntu, з якого я єдиний користувач людини. (Є кілька облікових записів користувачів, які використовуються автоматизованими системами.)

Я хотів би, щоб це було ненав'язливим і малопотужним, тому мені б хотілося, якби був простий метод, що передбачає щось подібне script.

Відповіді:


9

Починаючи з світанку (насправді починаючи з тих часів, коли люди мусили фактично платити реальні гроші за використаний ними комп’ютерний цикл), Unix та його клони створили систему під назвою Process Accounting ( acct). Це дозволило системним адміністраторам точно знати те, що робили їхні користувачі, і тому вони могли їх відповідно оплатити.

На сьогоднішній день acctзасоби існують у більшості систем Unix та Linux.

Цей веб-сайт: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html розповідає, як це ввімкнути.


Чи можна це також використовувати для реєстрації того, хто користувач виконує sudo і su, а які кореневі команди після цього?
Даніель Бек

Я вважаю, що він реєструє кожен запуск команди, клавіш користувача, tty і т. Д. Ви можете зіставити команди на tty з користувачем, який увійшов до цього tty, щоб простежити, через яких користувачів вони проходили чи sudo'd.
Маєнко

Дякую, я абсолютно не знав цієї функції. Швидке ознайомлення із довідковими сторінками говорить про те, що ведення журналу триває до тих пір, поки не буде досягнуто умови з обмеженим простором на диску - отже, можливо, необхідність логротатного сценарію.
jl6

Я думав, що бухгалтерський облік просто зареєстрував, яка програма запущена, а не команда з усіма її аргументами?
Sirex

2

Ось дуже приємний і швидкий спосіб реєстрації всіх команд оболонки :

Крок 1:

Використовуйте улюблений текстовий редактор, щоб відкрити / etc / bashrc та додати наступний рядок у кінці:

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

Крок 2:

Встановіть syslogger, щоб зафіксувати local6 у файлі журналу, додавши цей рядок у файл /etc/syslog.conf:

local6.*                /var/log/cmdlog.log

[Дивіться повну публікацію щоденника тут]


Я зауважую, що користувач зможе відключити це скидання змінної, і оскільки вона виконується "до видачі кожного первинного запиту", цей факт не буде записаний.
dmckee --- кошеня колишнього модератора

2

Ви можете використовувати snoopy .

Встановити та видалити дуже просто (не потрібен модуль ядра чи виправлення). Зауважте, що це не належне рішення для аудиту, і його можна легко обійти.

Розкриття: Я поточний супровідник снупи.


Bostjan Skufca також надав додаткові інструкції щодо встановлення snoopy в Ubuntu тут, а також додатковий коментар у тій же темі тут .
карел

+1 для снупи; він забезпечує хороший журнал команд та аргументів у /var/log/auth.log
Девід Гудвін

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.