用户与权限

返回 Windows

Windows 本地用户、组管理、NTFS 权限(ACL)、UAC 及特权控制。


用户管理

net user

net user                          :: 列出所有本地用户
net user username                 :: 查看用户详情
net user username password /add   :: 新建用户
net user username password        :: 修改密码
net user username /active:no      :: 禁用账户
net user username /active:yes     :: 启用账户
net user username /delete         :: 删除用户
net user username /expires:never  :: 密码永不过期

PowerShell

Get-LocalUser                     # 列出所有本地用户
Get-LocalUser -Name "Alice"       # 查看指定用户
New-LocalUser -Name "Alice" `
    -Password (ConvertTo-SecureString "P@ss123" -AsPlainText -Force) `
    -FullName "Alice Smith" -Description "开发账户"
Set-LocalUser -Name "Alice" -Password (ConvertTo-SecureString "NewP@ss" -AsPlainText -Force)
Disable-LocalUser -Name "Alice"
Enable-LocalUser  -Name "Alice"
Remove-LocalUser  -Name "Alice"

组管理

net localgroup

net localgroup                               :: 列出所有本地组
net localgroup "Administrators"              :: 查看组成员
net localgroup "Administrators" Alice /add   :: 将用户加入组
net localgroup "Administrators" Alice /delete :: 从组移除
net localgroup Developers /add               :: 创建新组
net localgroup Developers /delete            :: 删除组

PowerShell

Get-LocalGroup
Get-LocalGroupMember -Group "Administrators"
Add-LocalGroupMember    -Group "Administrators" -Member "Alice"
Remove-LocalGroupMember -Group "Administrators" -Member "Alice"
New-LocalGroup  -Name "Developers" -Description "开发团队"
Remove-LocalGroup -Name "Developers"

内置账户与组

账户/组说明
Administrator内置管理员(默认禁用)
Guest来宾账户(默认禁用)
SYSTEM操作系统级别账户,权限最高
NetworkService网络服务账户,低权限
LocalService本地服务账户,低权限
Administrators管理员组,成员拥有完全控制权
Users标准用户组

NTFS 权限(ACL)

权限类型

权限说明
完全控制读、写、执行、修改权限、取得所有权
修改读、写、执行、删除(不含修改权限)
读取和执行查看内容、运行文件
列出文件夹内容仅目录:列出子项
读取查看文件内容和属性
写入创建文件/子目录、修改内容

icacls

icacls C:\folder                          :: 查看权限
icacls C:\folder /grant Alice:(OI)(CI)F   :: 授予完全控制(含子项)
icacls C:\folder /grant Alice:M           :: 授予修改权限
icacls C:\folder /grant Alice:R           :: 授予读取权限
icacls C:\folder /deny  Alice:(OI)(CI)W   :: 拒绝写入
icacls C:\folder /remove Alice            :: 移除权限条目
icacls C:\folder /inheritance:d           :: 禁用继承(保留现有)
icacls C:\folder /inheritance:r           :: 禁用继承(删除继承条目)
icacls C:\folder /reset /t                :: 递归重置为继承权限
icacls C:\folder /save perms.txt /t       :: 导出权限
icacls C:\        /restore perms.txt      :: 恢复权限
 
:: 继承标志:(OI)=文件继承  (CI)=子目录继承  (IO)=仅继承不应用于当前对象

PowerShell ACL

# 查看
Get-Acl C:\folder | Format-List
 
# 授予权限
$acl  = Get-Acl "C:\folder"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule(
    "Alice", "FullControl",
    "ContainerInherit,ObjectInherit", "None", "Allow"
)
$acl.SetAccessRule($rule)
Set-Acl "C:\folder" $acl
 
# 删除权限条目
$acl = Get-Acl "C:\folder"
$acl.Access |
    Where-Object { $_.IdentityReference -eq "BUILTIN\Users" } |
    ForEach-Object { $acl.RemoveAccessRule($_) }
Set-Acl "C:\folder" $acl
 
# 修改所有者
$acl = Get-Acl "C:\folder"
$acl.SetOwner([System.Security.Principal.NTAccount]"Administrators")
Set-Acl "C:\folder" $acl

UAC(用户账户控制)

runas /user:Administrator cmd.exe     :: 以管理员身份运行
runas /user:DOMAIN\admin notepad.exe
# 检查当前是否为管理员
([Security.Principal.WindowsPrincipal]
 [Security.Principal.WindowsIdentity]::GetCurrent()
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
 
# 以管理员身份重启 PowerShell
Start-Process powershell -Verb RunAs

UAC 级别注册表位置: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

ConsentPromptBehaviorAdmin行为
0不提示直接提升(关闭 UAC)
2同意提示(默认)
5非 Windows 二进制文件提示(最高)

查看当前权限

whoami              :: 当前用户名
whoami /priv        :: 当前会话特权列表
whoami /groups      :: 所属组
whoami /all         :: 完整信息

常见特权

特权说明
SeDebugPrivilege调试其他进程
SeBackupPrivilege绕过文件权限读取
SeRestorePrivilege绕过文件权限写入
SeTakeOwnershipPrivilege取得文件所有权
SeShutdownPrivilege关机权限

取得文件所有权

takeown /f C:\lockedfile /r /d y
icacls  C:\lockedfile /grant administrators:F /t

相关文档