Иногда возникает желание или приходит решение сделать возможность логирования доступа к файлам на файловом сервере, где запущена samba.
В сети много таких мануалов (раз, два, три, четыре) и в общем-то в них написано всё правильно и верно, только в моём случае пришлось дёргать полезные настройки из разных статей.
Поэтому сразу перейду к тому что есть и что надо:
Есть
- Ubuntu 18.04 Server
- Samba 4.7 (доступна в репозитории)
Надо
- Поддержка логирования разных шар
- Для каждой шары свой файл лога
- Ротация логов, чтобы не забивать место
Приступим.
Настройки шары
- В каждое описание шары надо добавить следующий текст
log level = 0 vfs:2 vfs objects = full_audit full_audit:prefix = [Share Name] %u|%I full_audit:failure = none full_audit:success = mkdir rmdir open read pread write pwrite sendfile rename unlink lock full_audit:facility = local5 full_audit:priority = notice
где
full_audit:prefix — формат логов. Можно указать имя шары, если логирование ведётся в один файл для всех шар, и настроить свой формат логирования операция. Форматы смотрите тут.
full_audit:success — критерии логирования, такие как создание папки, удаление файла, переименование и многое другое. Их можно менять. Список всех критериев тут.
full_audit:facility — именованный канал syslog’а. Его имя должно быть уникальным, если планируете писать в разные файлы. Можно называть local5, local6, local7 и т.д. Используется для службы rsyslog. Рассмотрим ниже.
Настройка логирования
2. Отредактировать файл /etc/rsyslog.d/50-default.conf, заменив строку
*.*;auth,authpriv.none -/var/log/syslog
на
*.*;local5,local6,local7,auth,authpriv.none -/var/log/syslog
где local5\6\7 — именованные потоки данных, которые не должны попадать в syslog. Иначе в syslog будет каша данных, как от всех системных событий, так и от логов самбы. А оно вам надо?
3. Создать файл /etc/rsyslog.d/00-samba-audit.conf с содержимым
local5.notice /var/log/samba/auditShare5.log local6.notice /var/log/samba/auditShare6.log local7.notice /var/log/samba/auditShare7.log
где local5, local6, local7 — названия потоков данных, которые должны попадать в файлы логов аудита.
Настройка ротации логов
4. В /etc/logrotate.d/samba дописать для каждой шары
/var/log/samba/auditShare5.log { weekly missingok rotate 7 postrotate reload rsyslog > /dev/null 2>&1 || true endscript compress notifempty }
Дополнительные настройки
5. Создать файлы логов аудита для каждой логируемой шары и дать каждому права на запись для пользователя syslog
touch auditShare5.log && chown syslog. auditShare5.log
6. Перезапустить службы
systemctl restart smbd rsyslog
В общем-то и всё. Потоки логов должны начать наполнять файлы.