powershell一键配置共享需同步设置smb共享权限(控制网络访问)与ntfs权限(控制具体操作),缺一导致“能连不能开”或“能开不能删”。先建目录、启防火墙规则及smb服务,再用new-smbshare设共享权限,配合get-acl/set-acl精细配置ntfs权限,并递归应用验证。
用 powershell 一键配置文件夹共享权限,核心是同步设置两层权限:smb 共享权限(控制谁可以通过网络访问)和 ntfs 文件系统权限(控制具体能做什么)。只设其中一层,容易出现“能连上但打不开”“能打开却删不掉”等问题。
准备共享目录并启用基础网络功能
先确保目标文件夹存在,且系统已开启文件共享所需的服务与防火墙规则:
- 创建目录:
New-Item -Path "D:\Shares\Public" -ItemType Directory -Force - 启用网络发现和文件共享防火墙规则:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes - 确认 SMB 服务正常:
Get-SmbServerConfiguration | Select-Object EnableSMB2Protocol, RejectUnencryptedAccess(建议保持 SMB2/3 启用、禁用未加密访问)
一步创建共享并分配共享级权限
使用 New-SmbShare 发布共享,直接指定用户组的访问级别:
- 只读共享(可浏览、打开、运行,不可修改):
New-SmbShare -Name "PublicRead" -Path "D:\Shares\Public" -ReadAccess "Everyone" - 读写共享(可新建、修改、删除子项):
New-SmbShare -Name "TeamWork" -Path "D:\Shares\Projects" -ChangeAccess "DOMAIN\Developers" - 完全控制(含更改权限、取得所有权):
New-SmbShare -Name "AdminShare" -Path "D:\Shares\Admin" -FullAccess "DOMAIN\Admins"
注意:-ReadAccess 和 -ChangeAccess 可同时使用,多个组用逗号分隔,如 "DOMAIN\Users","BUILTIN\Users"。
精确设置 NTFS 权限防止越权操作
共享权限只是“进门卡”,真正管“能不能复制、另存为、重命名”的是 NTFS 权限。以下命令让普通用户仅能查看和执行,禁止写入与删除:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 获取当前 ACL:
$acl = Get-Acl "D:\Shares\Public" - 清除旧规则(可选,谨慎执行):
$acl.SetAccessRuleProtection($true, $false)(关闭继承并清空现有规则) - 添加新规则:
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Everyone", "ReadAndExecute", "ContainerInherit,ObjectInherit", "None", "Allow") - 应用规则:
$acl.SetAccessRule($rule); Set-Acl "D:\Shares\Public" $acl
关键点:“ReadAndExecute”包含遍历文件夹、读取文件、执行程序(对文档即双击打开),但不含 Write、Delete、Modify —— 这就自然禁用了保存更改、删除文件、拖拽覆盖等行为。
递归应用权限并验证结果
新设的 NTFS 权限默认不自动下推到已有子项,需手动同步:
- 强制继承所有子项:
icacls "D:\Shares\Public" /inheritance:e /t - 或用 PowerShell 逐项设置(更可控):
Get-ChildItem "D:\Shares\Public" -Recurse | ForEach-Object { Set-Acl $_.FullName $acl } - 验证是否生效:
Get-SmbShare | Where-Object Name -eq "PublicRead"查共享;(Get-Acl "D:\Shares\Public").Access | Format-Table IdentityReference, FileSystemRights, AccessControlType查 NTFS 规则
不复杂但容易忽略










