Назад | Перейти на главную страницу

Преобразование HEX ACL в разрешения

Я пытаюсь написать сценарий для очистки списков управления доступом Samba с моего сервера Ubuntu. Я использовал smbcacls для чтения разрешений на файл / папку. Когда у пользователя есть только RX или WX разрешений, это нормально, но как только у пользователя есть что-то помеченное как «особое разрешение», оно отображается в шестнадцатеричном виде.

Пример:

user@machine: ~$ smbcacls //server/share folder_1/ --authentication=.credentials

Печать:

REVISION:1
CONTROL:SR|PD|DP
OWNER:SERVER\Admin
GROUP:SERVER\everyone
ACL:SERVER\Admin:ALLOWED/0x0/0x001e01ff

В 0x0 связано с наследованием, но что это значит 0x001e01ff значит? Похоже на бинарные флаги 00000000111100000000111111111, но я не могу найти никакой документации о том, что они означают.

Какие-нибудь советы / ссылки на документацию?

значения SDDL задокументированы, например Вот: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/f4296d69-1c0f-491f-9587-a960b292d070

значение 0x001F01FF например, "полный доступ к файлу"

0x001F01FF = 0x001E01FF + 0x00010000 (удаление-> см. Ссылку). это означает, что в результатах вычислений отсутствует разрешение на удаление. побитовые разрешения создаются путем добавления атомных шестнадцатеричных разрешений

Ответ Фалько обычно будет более полезным, но для полноты картины отдельные флаги разрешений для файлов задокументированы в Константы прав доступа к файлам в Центре разработки Windows, а стандартные и общие флаги задокументированы в ACCESS_MASK.

Разбивая 0x001E01FF, получаем:

  • 0x00100000 = СИНХРОНИЗИРОВАТЬ (используется ядром? Не совсем уверен, что это делает!)
  • 0x00080000 = WRITE_OWNER (стать владельцем файла)
  • 0x00040000 = WRITE_DAC (изменить права доступа к файлу)
  • 0x00020000 = READ_CONTROL (см. Существующие разрешения для файла)

А также

  • 0x00000100 = FILE_WRITE_ATTRIBUTES (изменить атрибуты файла)
  • 0x00000080 = FILE_READ_ATTRIBUTES (см. Атрибуты файла)
  • 0x00000040 = FILE_DELETE_CHILD (удалить всех дочерних элементов - применяется только к папкам)
  • 0x00000020 = FILE_EXECUTE (запустить файл / пройти по папке)
  • 0x00000010 = FILE_WRITE_EA (писать расширенные атрибуты)
  • 0x00000008 = FILE_READ_EA (чтение расширенных атрибутов)
  • 0x00000004 = FILE_APPEND_DATA (добавить данные в файл или создать подпапку)
  • 0x00000002 = FILE_WRITE_DATA (записать данные в файл или создать файл в папке)
  • 0x00000001 = FILE_READ_DATA (прочитать данные из файла или просмотреть содержимое папки)

Но у нас заметно нет

  • 0x00010000 = УДАЛИТЬ (удалить файл)