Как узнать, какой пользователь закрыл мою программу?

Как узнать, какой пользователь закрыл мою программу?

Я запускаю долго работающую программу на сервере Linux. Многие другие пользователи также запускают свои программы на этом сервере. У всех нас есть права sudo.

Предположим, что злонамеренный пользователь завершает мою запущенную программу, скажем, с помощью sudo killили sudo pkill. Как узнать, кто этот пользователь?

решение1

Хотя ответ Пола верен, в том, что улики можно устранить, это не значит, что улики устранены. Гораздо больше людей знают о sudo, по сравнению с количеством людей, которые знают, какие логи очищать (если они вообще потрудятся).

В моей системе, каждый раз, когда используется sudo, вся командная строка сохраняется в журнале. Я думаю, что ваша система может делать то же самое. В OpenBSD это /var/log/authlog, а в системе Debian это /var/log/auth.log

Если вы не знаете, в каком файле хранится такая информация, попробуйте выполнить команду sudo. (Неважно, что вы делаете с sudo: даже этого echoбудет достаточно. Цель — изменить журналы, которые изменяются при использовании sudo.) Затем используйте

ls -ltr /var/log/*auth*

или

ls -ltr /var/log | tail

для поиска недавно измененных файлов.

решение2

Если у вас всех есть sudo, то нет гарантированного способа сохранить доказательства завершенного процесса, поскольку любые доказательства могут быть удалены с тем же уровнем разрешения.

Вы можете использоватьauditd демон аудитадля отслеживания определенных системных вызовов, таких как kill.

Очевидно, что пользователь root может сначала остановить демон аудита, а затем удалить журналы. Поэтому вам нужно экспортировать журналы во внешнюю среду.

Лучшим подходом было бы лучше управлять sudo, предоставляя каждому пользователю только тот доступ, который ему нужен. Обычным пользователям почти никогда не нужен полный root-доступ, и вы можете использовать sudo, чтобы предоставить подмножество разрешений.

Связанный контент