Windows

將 HEX ACL 轉換為權限

  • October 17, 2019

我正在嘗試編寫一個腳本來從我的 Ubuntu 伺服器機器上抓取 Samba 共享 ACL。我一直在使用smbcacls讀取每個文件/文件夾的權限。當使用者只有RXWX權限時,這很好,但只要使用者有任何標記為“特殊權限”的東西,它就會以十六進制顯示。

例子:

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意思?它看起來像 binary flags 00000000111100000000111111111,但我找不到任何關於這些含義的文件。

任何提示/文件連結?

SDDL 的含義記錄在這裡,例如: https ://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/f4296d69-1c0f-491f-9587-a960b292d070

例如的含義0x001F01FF是“文件完全訪問”

0x001F01FF = 0x001E01FF + 0x00010000(這是刪除-> 參見連結)。這意味著您的計算結果中缺少刪除權限。通過添加原子十六進制權限來建構逐位權限

Falco 的答案通常會更有用,但為了完整起見,單個文件權限標誌記錄在Windows 開發中心的文件訪問權限常量下,標準和通用標誌記錄在ACCESS_MASK下。

分解 0x001E01FF,我們有:

  • 0x00100000 = SYNCHRONIZE(被核心使用?不太清楚這是做什麼的!)
  • 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 = DELETE(刪除文件)

引用自:https://serverfault.com/questions/988385