Как отслеживать активность пользователей в Linux
Как администратор Linux, вам необходимо отслеживать действия всех пользователей. Когда на сервере что-то идет не так, вы можете проанализировать и изучить действия пользователей и попытаться найти основную причину проблемы. Существует множество способов мониторинга пользователей в Linux. В этом руководстве мы поговорим о утилитах учета GNU, которые можно использовать для мониторинга активности пользователей в Linux.
Что такое бухгалтерские утилиты?
Утилиты учета предоставляют полезную информацию об использовании системы, например о подключениях, выполняемых программах и использовании системных ресурсов в Linux. Эти утилиты учета можно установить с помощью пакета psacct или acct.
Psacct или Acct одинаковы. В системах на базе RPM он доступен как psacct, а в системах на базе DEB — как acct.
Для чего нужны утилиты psacct или acct? Вы можете задаться вопросом. Как правило, сведения об истории командной строки пользователя сохраняются в файле .bash_history
в его каталоге $HOME. Некоторые пользователи могут попытаться отредактировать, изменить или удалить историю.
Однако утилиты учета по-прежнему смогут получать данные о действиях пользователей, даже если они полностью очистили историю командной строки. Потому что все файлы учета процессов принадлежат пользователю root, и обычные пользователи не могут их редактировать.
Установите psacct или acct в Linux
Утилиты psacct/acct упакованы для популярных дистрибутивов Linux.
Чтобы установить psacct в Alpine Linux, запустите:
sudo apk add psacct
Чтобы установить acct в Arch Linux и его вариантах, таких как EndeavourOS и Manjaro Linux, запустите:
sudo pacman -S acct
В Fedora, RHEL и его клонах, таких как CentOS, AlmaLinux и Rocky Linux, выполните следующую команду для установки psacct:
sudo dnf install psacct
В RHEL 6 и более ранних версиях для установки psacct следует использовать yum
вместо dnf
.
sudo yum install psacct
В Debian, Ubuntu, Linux Mint установите acct с помощью команды:
sudo apt install acct
Чтобы установить acct в openSUSE, запустите:
sudo zypper install acct
Запустить службу psacct/acct
Чтобы включить и запустить службу psacct, запустите:
sudo systemctl enable psacct
sudo systemctl start psacct
Чтобы проверить, загружена ли и активна ли служба psacct, запустите:
sudo systemctl status psacct
В системах на базе DEB служба acct запускается автоматически после ее установки.
Проверить, запущена ли служба Acct, можно с помощью команды:
sudo systemctl status acct
Пример вывода:
● acct.service - Kernel process accounting
Loaded: loaded (/lib/systemd/system/acct.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2022-10-13 16:06:35 IST; 28s ago
Docs: man:accton(8)
Process: 3241 ExecStart=/usr/sbin/accton /var/log/account/pacct (code=exited, status=0/SUCCESS)
Main PID: 3241 (code=exited, status=0/SUCCESS)
CPU: 879us
Oct 13 16:06:35 ubuntu2204 systemd[1]: Starting Kernel process accounting...
Oct 13 16:06:35 ubuntu2204 accton[3241]: Turning on process accounting, file set to '/var/log/account/pacct'.
Oct 13 16:06:35 ubuntu2204 systemd[1]: Finished Kernel process accounting.
Загрузить – Бесплатная электронная книга: «Руководство по мониторингу Nagios»
Мониторинг активности пользователей в Linux с помощью psacct или acct
Пакет psacct (учет процессов) содержит следующие полезные утилиты для мониторинга действий пользователя и процесса.
- ac — отображает статистику о том, как долго пользователи вошли в систему.
- lastcomm — отображает информацию о ранее выполненных командах.
- accton — включает или выключает учет процессов.
- dump-acct — преобразует выходной файл из формата accton в удобочитаемый формат.
- dump-utmp — печатает файлы utmp в удобочитаемом формате.
- sa — суммирует информацию о ранее выполненных командах.
Научимся отслеживать деятельность пользователей Linux на примере каждой утилиты.
1. Примеры команд ac
Утилита ac отобразит отчет о времени подключения в часах. Он может сказать вам, как долго пользователь или группа пользователей были подключены к системе.
1.1. Отображение общего времени подключения всех пользователей
ac
Эта команда отображает общее время подключения всех пользователей в часах.
total 52.91
Отображение общего времени подключения всех пользователей
1.2. Показать общее количество подключений всех пользователей по дням
Вы можете отсортировать этот результат по дням, используя флаг -d, как показано ниже.
ac -d
Пример вывода:
May 11 total 4.29
May 13 total 3.23
May 14 total 7.66
May 15 total 8.97
May 16 total 0.52
May 20 total 4.09
May 24 total 1.32
Jun 9 total 15.18
Jun 10 total 2.97
Jun 22 total 2.61
Jul 19 total 1.95
Today total 0.29
Показать общее количество подключений всех пользователей по дням
1.3. Получите общее время подключения по пользователям
Кроме того, вы можете отобразить, как долго каждый пользователь был подключен к системе с помощью флага -p.
ac -p
Пример вывода:
ostechnix 52.85
root 0.51
total 53.36
Получите общее время подключения по пользователям
1.4. Распечатать общее время подключения конкретного пользователя
Кроме того, вы также можете отобразить общее время входа в систему отдельного пользователя.
ac ostechnix
Пример вывода:
total 52.95
1,5. Просмотр общего времени подключения определенного пользователя по дням
Чтобы отобразить время входа отдельного пользователя по дням, запустите:
ac -d ostechnix
Пример вывода:
May 11 total 4.29
May 13 total 3.23
May 14 total 7.66
May 15 total 8.97
May 16 total 0.01
May 20 total 4.09
May 24 total 1.32
Jun 9 total 15.18
Jun 10 total 2.97
Jun 22 total 2.61
Jul 19 total 1.95
Today total 0.68
Просмотр общего времени подключения определенного пользователя по дням
Более подробную информацию можно найти на страницах руководства.
man ac
2. Примеры команд Lastcomm
Утилита lastcomm отображает список ранее выполненных команд. Первыми будут перечислены самые последние выполненные команды.
2.1. Отображение ранее выполненных команд
lastcomm
Пример вывода:
systemd-hostnam S root __ 0.06 secs Thu Oct 13 17:21
systemd-localed S root __ 0.06 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
awk ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
uname ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
sed ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
grep ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
grep ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
bash F ostechni pts/1 0.00 secs Thu Oct 13 17:22
[...]
2.2. Распечатать последние выполненные команды конкретного пользователя
Приведенная выше команда отображает все команды пользователя. Вы можете отобразить ранее выполненные команды конкретным пользователем с помощью команды:
lastcomm ostechnix
Пример вывода:
less ostechni pts/1 0.00 secs Thu Oct 13 17:26
lastcomm ostechni pts/1 0.00 secs Thu Oct 13 17:26
lastcomm ostechni pts/1 0.00 secs Thu Oct 13 17:26
lastcomm ostechni pts/1 0.00 secs Thu Oct 13 17:26
gdbus X ostechni __ 0.00 secs Thu Oct 13 17:24
lastcomm ostechni pts/1 0.00 secs Thu Oct 13 17:24
ac ostechni pts/1 0.00 secs Thu Oct 13 17:24
update-notifier F ostechni __ 0.00 secs Thu Oct 13 17:23
apport-checkrep ostechni __ 0.06 secs Thu Oct 13 17:23
apport-checkrep ostechni __ 0.05 secs Thu Oct 13 17:23
systemctl ostechni __ 0.00 secs Thu Oct 13 17:23
apt-check ostechni __ 0.81 secs Thu Oct 13 17:23
dpkg ostechni __ 0.00 secs Thu Oct 13 17:23
ischroot ostechni __ 0.00 secs Thu Oct 13 17:23
dpkg ostechni __ 0.00 secs Thu Oct 13 17:23
[...]
2.3. Вывести общее количество выполненных команд
Также вы можете просмотреть, сколько раз была выполнена определенная команда.
lastcomm apt
Пример вывода:
apt S root pts/2 0.70 secs Thu Oct 13 16:06
apt F root pts/2 0.00 secs Thu Oct 13 16:06
apt F root pts/2 0.00 secs Thu Oct 13 16:06
Как видно из приведенного выше вывода, команда apt
была выполнена пользователем root
три раза.
Более подробную информацию можно найти на страницах руководства.
man lastcomm
3. Примеры команды sa
Утилита sa суммирует информацию о ранее выполненных командах.
3.1. Распечатать сводку всех команд
sa
Пример вывода:
1522 1598.63re 0.23cp 0avio 32712k
139 570.90re 0.05cp 0avio 36877k ***other*
38 163.63re 0.05cp 0avio 111445k gdbus
3 0.05re 0.04cp 0avio 12015k apt-check
27 264.27re 0.02cp 0avio 0k kworker/dying*
2 51.87re 0.01cp 0avio 5310464k Docker Desktop
5 0.03re 0.01cp 0avio 785k snap-confine
8 59.48re 0.01cp 0avio 85838k gmain
5 103.94re 0.01cp 0avio 112720k dconf worker
24 3.38re 0.00cp 0avio 2937k systemd-udevd*
7 0.01re 0.00cp 0avio 36208k 5
3 1.51re 0.00cp 0avio 3672k systemd-timedat
2 0.00re 0.00cp 0avio 10236k apport-checkrep
2 0.01re 0.00cp 0avio 4316160k ThreadPoolForeg*
2 0.00re 0.00cp 0avio 8550k package-data-do
3 0.79re 0.00cp 0avio 2156k dbus-daemon
12 0.00re 0.00cp 0avio 39631k ffmpeg
[...]
3.2. Просмотр количества процессов и минут процессора
Чтобы распечатать количество процессов и количество минут ЦП для каждого пользователя, запустите команду sa
с флагом -m
:
sa -m
Пример вывода:
1525 1598.63re 0.23cp 0avio 32651k
root 561 647.23re 0.09cp 0avio 3847k
ostechnix 825 780.79re 0.08cp 0avio 47788k
gdm 117 13.43re 0.06cp 0avio 63715k
colord 2 52.01re 0.00cp 0avio 89720k
geoclue 1 1.01re 0.00cp 0avio 70608k
jellyfin 12 0.00re 0.00cp 0avio 39631k
man 1 0.00re 0.00cp 0avio 3124k
kernoops 4 104.12re 0.00cp 0avio 3270k
sshd 1 0.05re 0.00cp 0avio 3856k
whoopsie 1 0.00re 0.00cp 0avio 8552k
3.3. Распечатать идентификатор пользователя и имя команды
Для каждой команды в файле учета выведите идентификатор пользователя и имя команды, используя флаг -u
.
sa -u
Пример вывода:
root 0.00 cpu 693k mem 0 io accton
root 0.00 cpu 3668k mem 0 io systemd-tty-ask
root 0.00 cpu 3260k mem 0 io systemctl
root 0.01 cpu 3764k mem 0 io deb-systemd-inv
root 0.00 cpu 722k mem 0 io acct.postinst
root 0.00 cpu 704k mem 0 io rm
root 0.00 cpu 939k mem 0 io cp
root 0.00 cpu 704k mem 0 io rm
root 0.00 cpu 951k mem 0 io find
root 0.00 cpu 911k mem 0 io gzip
root 0.00 cpu 722k mem 0 io sh
root 0.00 cpu 748k mem 0 io install-info
root 0.00 cpu 911k mem 0 io gzip
[...]
Более подробную информацию можно найти на страницах руководства.
man sa
4. Примеры команд dump-acct и dump-utmp
Утилита dump-acct преобразует выходной файл из формата accton в удобочитаемый формат.
dump-acct /var/account/pacct
dump-utmp отображает файлы utmp в удобочитаемом формате.
dump-utmp /var/run/utmp
Более подробную информацию можно найти на страницах руководства.
man dump-acct
man dump-utmp
5. Примеры команды accton
Команда accton позволит вам включить или выключить учет.
Чтобы включить учет процессов, запустите:
accton on
Чтобы отключить его, запустите:
accton off
Более подробную информацию можно найти на страницах руководства.
man accton
Рекомендуется прочитать:
- Как ограничить доступ пользователя к системе Linux
Заключение
Каждый администратор Linux должен знать об утилитах учета GNU, позволяющих следить за всеми пользователями. Эти утилиты будут весьма полезны при устранении неполадок.
Ресурс:
- Веб-сайт GNU Accounting Utilities