要实现smb共享真正只读防误删,必须同步配置共享权限与ntfs权限并设拒绝删除:共享层仅允读取;ntfs层仅允读取/执行/列出内容,并显式拒绝“删除”及“删除子文件夹及文件”,同时禁用继承确保无例外。
要让smb共享真正实现只读、防误删,关键不是只设“共享权限为读取”,而是必须同步收紧ntfs权限,并利用拒绝权限堵住漏洞。共享权限只管网络入口,ntfs权限才真正决定文件能不能被删、改、写——两者取交集,缺一不可。
一、先关掉共享层的写入口
右键共享文件夹 → 属性 → 共享 → 高级共享 → 勾选“共享此文件夹” → 点击“权限”:
- 删除默认的 Everyone 或 Users 组
- 仅添加需要访问的用户或组(如 Domain Users、ShareReaders)
- 对该用户/组,只勾选“允许-读取”,其他全不勾
二、重点:NTFS权限必须禁写+拒删
回到同一文件夹的属性 → 安全 → 编辑 → 添加目标用户/组 → 设置以下允许项:
- 允许:读取和执行
- 允许:列出文件夹内容
- 允许:读取
- 取消所有“写入”“修改”“完全控制”“删除”相关勾选
接着点“高级” → 找到该用户 → 点击“编辑” → 勾选“拒绝”:
- 删除
- 删除子文件夹及文件
这两项拒绝权限优先级最高,即使后续继承了上级权限,也能确保删不了。
三、关闭继承,防止子项被绕过
在NTFS“高级”权限设置里:
- 点击“禁用继承” → 选择“将继承的权限转换为对此对象的显式权限”
- 再逐个检查子文件夹和文件的权限,确认没有意外出现“写入”或“修改”
- 可右键 → “有效权限” → 输入用户名,验证最终是否真的无删除、无写入
四、Linux Samba环境补充(如用Ubuntu/CentOS)
若后端是Samba服务器,需在 /etc/samba/smb.conf 中明确限制:
- writable = no(禁止任何写操作)
- create mask = 0444(新上传文件默认只读)
- directory mask = 0555(新建目录不可写)
- 避免使用 inherit owner = yes,否则上传者可能获得父目录控制权
配完记得重启服务:systemctl restart smbd nmbd











