Поиск по сайту:

Как отслеживать активность пользователей в 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

Статьи по данной тематике