smbclient не отображает права доступа к папкам на сервере?

Вопрос или проблема

Когда я подключаюсь к серверу Windows, используя smbclient из Linux, как указано ниже:

smbclient //SERVER/FOLDER -U user%password

Это успешно подключается к серверу, но когда я использую команду stat для конкретной папки, возникают ошибки:

smb: > stat folder 
Server doesn't support UNIX CIFS calls.

Есть ли способ получить разрешения на папки общего ресурса Windows на Linux с помощью samba?

Разрешения Windows обычно регулируются ACL, которые не отображаются smbclient. Вместо этого попробуйте smbcacls //SERVER/SHARE FILENAME -U user%password. Вы должны получить что-то вроде:

REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:NT AUTHORITY\SYSTEM
GROUP:NT AUTHORITY\SYSTEM
ACL:NT AUTHORITY\SYSTEM:ALLOWED/OI|CI/FULL
ACL:BUILTIN\Administrators:ALLOWED/OI|CI/FULL
ACL:LAPTOP-CD837F\localuser:ALLOWED/OI|CI/FULL
ACL:Everyone:ALLOWED/OI|CI/READ

Вы также можете использовать smbclient, действительно. Просто используйте переключатель showacls:

smb: \> ? showacls
HELP showacls:
toggle if ACLs are shown or not

smb: \> showacls 
smb: \> ls filename_or_dirname

Пример:

smb: \> showacls 
smb: \> dir users
FILENAME:Users
MODE:DR
SIZE:0
MTIME:Fri Nov 17 09:02:31 2023
revision: 1
type: 0x9404: SEC_DESC_DACL_PRESENT SEC_DESC_DACL_AUTO_INHERITED SEC_DESC_DACL_PROTECTED SEC_DESC_SELF_RELATIVE 
DACL
    ACL Num ACEs:   6   revision:   2
    ---
    ACE
        type: ACCESS ALLOWED (0) flags: 0x03 SEC_ACE_FLAG_OBJECT_INHERIT  SEC_ACE_FLAG_CONTAINER_INHERIT 
        Specific bits: 0x1ff
        Permissions: 0x1f01ff: SYNCHRONIZE_ACCESS WRITE_OWNER_ACCESS WRITE_DAC_ACCESS READ_CONTROL_ACCESS DELETE_ACCESS 
        SID: S-1-5-18
   [...]

Ссылка: smbclient doesn’t show folder permission of server

Ответ или решение

Когда вы подключаетесь к Windows серверу с использованием smbclient из Linux, у вас может возникнуть проблема с отображением разрешений для папок, поскольку smbclient по умолчанию может не поддерживать команды для отображения таких атрибутов, как разрешения доступа. Эта проблема обычно возникает из-за различий в обработке разрешений между Windows и UNIX-подобными системами.

Теория

В Windows управление доступом в основном осуществляется через ACL (списки управления доступом), которые часто недоступны для стандартных UNIX команд, таких как stat. Этот факт объясняет, почему при попытке выполнить команду stat на Windows сервере вы получаете сообщение об ошибке "Server doesn’t support UNIX CIFS calls.".

Пример

Для получения информации о разрешениях вы можете использовать команду smbcacls, которая более приспособлена для работы с ACL на Windows серверах. Она предоставит вам подробные данные об ACL, включая владельца и группу ресурса, а также информацию о конкретных разрешениях, например:

smbcacls //SERVER/SHARE FILENAME -U user%password
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:NT AUTHORITY\SYSTEM
GROUP:NT AUTHORITY\SYSTEM
ACL:NT AUTHORITY\SYSTEM:ALLOWED/OI|CI/FULL
...

Применение

Для эффективной работы с smbclient, вы можете активировать опцию showacls, которая позволит вам просматривать информацию о ACL непосредственно через интерфейс smbclient. Вот как это можно сделать:

  1. Подключитесь к серверу с помощью smbclient.
  2. Используйте команду showacls, чтобы включить отображение ACL.
  3. Затем выполните ls или dir, чтобы просмотреть ACL для конкретного файла или директории.

Пример использования:

smb: \> showacls
smb: \> dir users
FILENAME:Users
MODE:DR
SIZE:0
[сведения об ACL, которые будут предоставлены]

Таким образом, вы сможете получить доступ к важной информации о разрешениях, используя инструменты, адекватно поддерживающие особенности Windows серверов при работе с Linux.

Оцените материал
Добавить комментарий

Капча загружается...