我正在尋找一種方法來從連接到共享的 Windows 機器匯出 SMB/CIFS 共享的 ACL(不要與 NTFS ACL 混淆)。到目前為止,我可以在共享的高級安全屬性中看到權限,但除了 AutoIT 怪物之外,無法匯出或決議它們。

我想以我可以決議的格式獲取此資訊,無論是 CSV、JSON、XML 等。
我已經檢查了這個建議使用 Powershell 的問題Get-SmbShareAccess:使用 Powershell檢索遠程檔案共享“共享權限”和這個使用 Get-WmiObject 的 TechNet 問題:Get-wmiobject Win32_Share 不顯示共享權限,但兩者都假設我們可以在托管共享的服務器:這對我來說不是這種情況,因為共享不是托管在 Windows 上,而且我沒有對機器的 shell 訪問權限。
我對任何語言都持開放態度,但如果可以選擇的話,我更喜歡 Powershell。
uj5u.com熱心網友回復:
Windows 資源管理器通過 win32 API 方法NetShareGetInfo()使用 RPC ,但直接從 Powershell 呼叫它并不容易。
FileShareUtils是一個很棒的圖庫模塊,可以為您完成所有這些作業,也是我能找到的最佳選擇:
$share = Get-NetShare -Name 'MyShare' -Server 'MyFileServer01'
Server : MyServer01
Name : MyShare
Path : E:\Folder\Path
Description :
ABE : Enabled
CachingMode : Manual
ShareACLText : BUILTIN\Administrators|FullControl,Everyone|FullControl
CurrentUses : 4
ConcurrentUserLimit : -1
BranchCache : Disabled
Flags : 2051
Type : Disk Drive
ShareSDDL : D:(A;;FA;;;WD)(A;;FA;;;BA)
ShareACL : System.Security.AccessControl.DirectorySecurity
$share.ShareACL.Access
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : Everyone
IsInherited : False
InheritanceFlags : None
PropagationFlags : None
FileSystemRights : FullControl
AccessControlType : Allow
IdentityReference : BUILTIN\Administrators
IsInherited : False
InheritanceFlags : None
PropagationFlags : None
我無法測驗整個是否Get-NetShare以非管理員用戶身份運行,但是如果您可以在檔案資源管理器中看到“共享”權限,那么這應該適合您。如果您仍然收到拒絕訪問的訊息,那么您可以按照自己的方式處理模塊代碼并查看位置/原因。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384898.html
