Как в Ubuntu узнать, какие действия выполняли пользователи?

Добрый день. <br/> Можете подсказать, как в Ubuntu выполнить следующие задачи: <br/> 1. Как узнать, какой пользователь и в какое время входил в систему? <br/> 2. Как отследить действия конкретного пользователя? <br/> 3. Как проверить, что делал пользователь, использующий команды sudo -i, sudo -s или sudo su? <br/> 4. Как выяснить, какой пользователь взаимодействовал с определённым репозиторием и какие действия он выполнял?
  • 21 января 2025 г. 10:54
Ответы на вопрос 3
Добрый день! Вот основные способы выполнения указанных вами задач в Ubuntu.

### 1. Как узнать, какой пользователь и в какое время входил в систему?

Для просмотра истории входов пользователей можно использовать команду `last`. Она выводит информацию о последних входах в систему:

```bash
last
```

Эта команда покажет список пользователей, которые входили в систему, вместе с временем и датами входа, а также длительностью сессии.

### 2. Как отследить действия конкретного пользователя?

Для отслеживания действий конкретного пользователя можно просмотреть системные журналы. Вся информация о выполненных командах пользователя записывается в файл `~/.bash_history` в домашней директории пользователя. Вы можете открыть этот файл:

```bash
cat /home/username/.bash_history
```

Замените `username` на имя нужного пользователя. Учтите, что этот файл может быть очищен или изменен пользователем.

Также можно просмотреть системные журналы, такие как `/var/log/auth.log`, для отслеживания входов и неудачных попыток входа. Чтобы просмотреть журнал, вы можете использовать команду `grep`:

```bash
grep username /var/log/auth.log
```

### 3. Как проверить, что делал пользователь, использующий команды sudo -i, sudo -s или sudo su?

Действия пользователей, использующих `sudo`, записываются в лог-файл `/var/log/auth.log`. Вы можете выполнить следующую команду для фильтрации записей, связанных с конкретным пользователем:

```bash
grep 'sudo' /var/log/auth.log | grep username
```

Эта команда покажет все команды, которые пользователь запускал через `sudo`.

Чтобы просмотреть команды, выполненные с помощью `sudo`, вы также можете проверить файл истории команд `~/.bash_history` всех пользователей, но в этом случае необходимо убедиться, что команда была выполнена в сессии с использованием `sudo`.

### 4. Как выяснить, какой пользователь взаимодействовал с определённым репозиторием и какие действия он выполнял?

Если ваш репозиторий находится под управлением системы контроля версий, такой как Git, вы можете просмотреть историю коммитов с указанием того, какой пользователь и когда выполнял определенные действия. Используйте следующую команду:

```bash
git log
```

Эта команда покажет список коммитов с автором, датой и сообщением коммита. Если вам нужно узнать более конкретную информацию о действиях, выполненных пользователями, вы можете использовать:

```bash
git blame filename
```

Эта команда покажет, кто и когда изменял каждую строку в указанном файле.

Для серверов с доступом через SSH и если вы также ведете логи, стоит проверить логи SSH (`/var/log/auth.log`), чтобы увидеть информацию о том, кто получал доступ к репозиторию.

### Общие советы

- Убедитесь, что у вас есть соответствующие права доступа для просмотра логов и файлов истории.
- Знайте, что пользователи могут изменять свои файлы логов или истории команд, если у них есть соответствующие права. 

Соблюдайте все меры предосторожности и уважение к конфиденциальности пользователей при выполнении мониторинга их активности.
<blockquote>1. Какой пользователь в какое время заходил?</blockquote> <br/> - <code>last</code> - история входов пользователей. <br/> - <code>last zver</code> - история входов пользователя с логином - зверь. <br/> - <code>lastb zver</code> - история неудачных входов пользователя с логином - зверь. <br/> - <code>last zver | grep "Jan 21"</code> - история входов пользователя с логином - зверь за 21 января. <br/> - <code>last -s -7days zver</code> - история входов пользователя с логином - зверь за последние 7 дней. <br/> <blockquote>2. Действия того или иного пользователя?</blockquote> <br/> - <code>cat /home/zver/.bash_history</code> - история команд пользователя с логином - зверь. <br/> - <code>who -u</code> - показывает активных пользователей, их терминалы и время входа. <br/> - <code>ps -u zver</code> - показывает список активных процессов пользователя с логином - зверь. <br/> - <code>sudo iotop -u zver</code> - история входа-выхода пользователя с логином - зверь. <br/> - <code>sudo iftop -f "src user zver"</code> - показывает сетевой трафик пользователя с логином - зверь. <br/> - <code>sudo tail -f /var/log/syslog | grep zver</code> - просмотр действий пользователя с логином - зверь в реальном времени. <br/> <blockquote>3. Если пользователь пользовался sudo -i, sudo -s, sudo su, как посмотреть, что он делал под этими оболочками?</blockquote> <br/> - <code>sudo grep zver /var/log/auth.log</code> - история команд пользователя с логином - зверь под sudo. <br/> - <code>sudo aureport -x --summary</code> - показывает сводку команд пользователей, втч. под sudo. <br/> <br/> Расширенный мониторинг зверей - <a href="https://sematext.com/glossary/auditd/" rel="nofollow">auditd</a> и <a href="https://www.redhat.com/en/blog/configure-linux-auditing-auditd" rel="nofollow">еще</a> .
для полноценного логирования действий пользователей использовать демона <a href="https://habr.com/ru/articles/553036/" rel="nofollow">auditd</a> <br/> в остальном как повезет. <br/> <br/> 1. sshd пишет соответвующую строчку в системный лог. tty кажись тоже. <br/> 2. оболочка никаких команд не логирует.  по идее, команды пользователя оболочка сохраняет в history, но он доступен пользователю на очистку и удаление. плюс пишутся не все команды, к примеру, наличие пробела в начале команды или несколько сессий оболочки одновременно. <br/> 3. никак. sudo в принципе запишет запуск оболочки в сислог. однако команды он уже не видит, ну а оболочка смотри пункт 2. <br/> 4. смотри /var/log/apt/history.log
Похожие вопросы