7.15 命令行查看/设置指定文件的owner
https://scz.617.cn/windows/202309251425.txt
Q:
Win10命令行如何查看、设置指定文件的owner?GUI界面我会操作。
A:
查看owner:
dir /q some.ext
该命令会显示some.ext的owner,但有个缺陷
dir /q C:\Windows\System32\notepad.exe | findstr notepad.exe01/08/2021 06:37 243,200 NT SERVICE\TrustedInstanotepad.exe
倒数第二列的owner本应是"NT SERVICE\TrustedInstaller",被截断了。
wmic path Win32_LogicalFileSecuritySetting where Path="C:\\Windows\\System32\\notepad.exe" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID
… S-1-5-80-…-2271478464 … TrustedInstaller … NT SERVICE …
表示owner是"NT SERVICE\TrustedInstaller",其SID是
S-1-5-80-...-2271478464
已知SID,查询名称:
PowerShell中执行
[wmi]"Win32_SID.SID='S-1-5-80-...-2271478464'"
---------------------------------------
$sid = 'S-1-5-80-...-2271478464';
$obj = New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList $sid;
$obj.Translate([System.Security.Principal.NTAccount]).Value;
---------------------------------------
$sid = 'S-1-5-80-...-2271478464';
$obj = New-Object System.Security.Principal.SecurityIdentifier($sid);
$obj.Translate([System.Security.Principal.NTAccount]).Value;
若SID对应普通用户,而非内置SID,下列命令亦可查询名称:
wmic useraccount where sid="S-1-5-21-...-1001" get Caption
上述命令无法查询内置SID的名称
A:
设置owner:
icacls C:\temp\notepad.exe /setowner "DESKTOP-TEST\scz"
icacls C:\temp\notepad.exe /setowner "NT SERVICE\TrustedInstaller"
在管理员级cmd中执行上述命令,下列命令检验效果:
dir /q C:\temp\notepad.exe
wmic path Win32_LogicalFileSecuritySetting where Path="C:\\temp\\notepad.exe" ASSOC /RESULTROLE:Owner /ASSOCCLASS:Win32_LogicalFileOwner /RESULTCLASS:Win32_SID
A:
获取owner:
takeown /f C:\temp\notepad.exe
不同于"icacls /setowner"指定owner,takeown固定将owner改成当前用户
A:
SubInACL
https://web.archive.org/web/20190830103837/http://www.microsoft.com/en-us/download/confirmation.aspx?id=23510
https://web.archive.org/web/20190830103837/https://download.microsoft.com/download/1/7/d/17d82b72-bc6a-4dc8-bfaa-98b37b22b367/subinacl.msi
微软已经下架了该工具,上面是archive备份。
设置owner:
subinacl /file C:\temp\notepad.exe /setowner="DESKTOP-TEST\scz"
subinacl /file C:\temp\notepad.exe /setowner="NT SERVICE\TrustedInstaller"
查看owner:
subinacl /file C:\temp\notepad.exe /display=owner