Утилита smbstatus

Утилита smbstatus позволяет посмотреть некоторую статистику работы samba сервера на Linux, а точнее текущие соединения с сервером.

Об утилите

Утилита smbstatus является частью пакета Samba. Это означает, если вы устанавливаете и настраиваете сервер Samba, то это утилита у вас уже есть и дополнительно ничего устанавливать не нужно.

Это очень простая программа для вывода списка текущих подключений Samba. Её часто используют чтобы посмотреть кто какой файл заблокировал на сервере, или кто какую версию протокола для подключения использует. Или кто с каких компьютеров подключен.

Практика

Без опций утилита smbstatus выводит информацию:

    • В разрезе подключенных устройств. То есть с каких компьютеров и под какими пользователями висят подключения к серверу Samba.
    • В разрезе каталогов. То есть с каких компьютеров и к каким каталогам сейчас висят подключения.
    • В разрезе заблокированных файлов. С какими файлами в данный момент работают, какие редактируют, какие просматривают. Здесь же видно кто с каким файлом работает.

Пример:

# smbstatus
Samba version 4.5.16-Debian
PID     Username Group        Machine                                 Protocol Version  Encryption Signing
------------------------------------------------------------------------------------------------------------------------
31039   alex     domain users 192.168.0.2 (ipv4:192.168.0.2:52626)    SMB3_11           -          partial(AES-128-CMAC)
512     elena    domain users 192.168.0.15 (ipv4:192.168.0.15:56821)  SMB3_02           -          partial(AES-128-CMAC)
31366   mike     domain users 192.168.0.8 (ipv4:192.168.0.8:63954)    SMB3_11           -          partial(AES-128-CMAC)
29957   alex     domain users 192.168.0.7 (ipv4:192.168.0.7:52792)    SMB3_11           -          partial(AES-128-CMAC)
29957   mike     domain users 192.168.0.7 (ipv4:192.168.0.7:52792)    SMB3_11           -          partial(AES-128-CMAC)

Service     pid     Machine       Connected at                     Encryption   Signing
----------------------------------------------------------------------------------------
accounting  512     192.168.0.15  Fri Aug 25 03:07:21 PM 2023 MSK  -            -
users       29957   192.168.0.7   Fri Oct  6 09:22:59 AM 2023 MSK  -            -
marketing   31039   192.168.0.2   Fri Oct  6 04:58:13 AM 2023 MSK  -            -
marketing   512     192.168.0.15  Fri Aug 25 03:07:21 PM 2023 MSK  -            -
users       31366   192.168.0.8   Fri Oct  6 08:37:55 AM 2023 MSK  -            -

Locked files:
Pid    Uid   DenyMode   Access   R/W    Oplock     SharePath         Name                      Time
----------------------------------------------------------------------------------------------------------------------
512   100253 DENY_NONE  0x12019f RDWR   LEASE(RWH) /share/Accounting Почта/Файл1.docx          Tue Oct 3 12:39:46 2023
29957 100483 DENY_WRITE 0x120089 RDONLY LEASE(RWH) /share/users      Work/Нужный файл.xml      Fri Oct 6 10:31:09 2023
512   100143 DENY_ALL   0x12019f RDWR   LEASE(RWH) /share/users      Work/Агенты/Таблица1.xlsx Tue Oct 3 12:36:24 2023
29957 100121 DENY_WRITE 0x120089 RDONLY LEASE(RWH) /share/users      Work/Выгрузка.xml         Fri Oct 6 10:33:01 2023

 

Здесь интересно посмотреть как отображаются права доступа. Для этого лучше всего смотреть на колонку R/W, так как режимы доступа (DenyMode) иногда показывают не то.

Права к заблокированным файлам говорят о том, как открыт данный файл:

    • RDWR — файл можно и читать и редактировать;
    • RDONLY — файл открыт только для чтения.

Пример:

# smbstatus | grep Проверка
31604  100158  DENY_WRITE 0x12019f RDWR    LEASE(R)   /share/users   Alex/Проверка1.docx   Fri Oct  6 12:38:30 2023
29957  100158  DENY_NONE  0x120089 RDONLY  LEASE(RH)  /share/users   Alex/Проверка1.docx   Fri Oct  6 12:40:10 2023

 

    • Я с одного компьютера открыл файл и начал его редактировать, это первая строка (DENY_WRITE / RDWR).
    • И я же с другого компьютера открыл этот же файл, но только на чтение, это вторая строка (DENY_NONE / RDONLY).
    • Иногда, когда файл открыт в режиме на запись можно увидеть следующее (DENY_NONE / RDWR), при этом редактировать будет можно.
    • Из этого следует что правильнее смотреть на столбец R/W, а не на столбец DenyMode.

Утилиту можно выполнить с опцией -b, тогда она покажет краткую информацию, а именно версию сервера и информацию только в разрезе подключенных устройств. Пример:

# smbstatus -b
Samba version 4.5.16-Debian
PID   Username Group        Machine                                Protocol Version  Encryption  Signing
--------------------------------------------------------------------------------------------------------
31039 alex     domain users 192.168.0.2 (ipv4:192.168.0.2:52626)   SMB3_11           -           partial(AES-128-CMAC)
512   elena    domain users 192.168.0.15 (ipv4:192.168.0.15:56821) SMB3_02           -           partial(AES-128-CMAC)
31366 mike     domain users 192.168.0.8 (ipv4:192.168.0.8:63954)   SMB3_11           -           partial(AES-128-CMAC)
29957 alex     domain users 192.168.0.7 (ipv4:192.168.0.7:52792)   SMB3_11           -           partial(AES-128-CMAC)
29957 mike     domain users 192.168.0.7 (ipv4:192.168.0.7:52792)   SMB3_11           -           partial(AES-128-CMAC)

Кстати, каждый процесс обслуживает одно подключение. Под подключением я понимаю сеанс пользователя за его компьютером и подключение к серверу Samba из этого сеанса. С каждого персонального компьютера будет висеть по 1 сеансу. С терминального сервера будет висеть соединение от каждого терминального сеанса.

Если вы откроете с одного компьютера два файла на Samba сервере, то оба файла будут обрабатываться одним процессом Samba.

А если вы откроете файл с одного компьютера, а кто-то другой с другого компьютера, то эти файлы будут заблокированы разными процессами (pid).