最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
服务器访问控制如何对敏感目录和文件设置只读属性
时间:2026-08-17 20:32:49 编辑:袖梨 来源:一聚教程网
真正起作用的是底层访问控制机制:Windows靠NTFS权限精细拒绝写入,Linux靠chmod、ACL或挂载选项锁定写能力,Web服务器需结合目录浏览开关与认证隔离。
服务器上对敏感目录和文件设置只读,不能只靠“勾选只读属性”这种表面操作——它在Windows里无效,在Linux里不生效,更无法阻止有权限的用户删除或覆盖。真正起作用的是底层访问控制机制:Windows靠NTFS权限精细拒绝写入,Linux靠chmod、ACL或挂载选项锁定写能力,Web服务器则需结合目录浏览开关与认证隔离。
Windows服务器:用NTFS权限实现强制只读
共享或本地访问都依赖NTFS权限,这是唯一能真正阻止删除、重命名、新建、修改的手段:
- 右键敏感文件夹 → 属性 → 安全 → 高级 → 点击“禁用继承”,选择“从此对象中删除所有已继承的权限”
- 点击“添加”→ 输入目标用户或组(如IUSR、Users或具体账号)→ 仅勾选三项:读取和执行、列出文件夹内容、读取
- 再次点击“添加”,为同一用户/组创建一条拒绝规则:勾选“删除”和“删除子文件夹及文件”,应用范围选“此文件夹、子文件夹和文件”
- 若用于IIS站点,上传目录除外;静态资源目录(如
/static、/docs)必须禁用“写入”“修改”“完全控制”
Linux服务器:chmod + ACL + 挂载三重防护
单靠chmod 444对目录无效(目录需执行位才能进入),正确做法是组合使用:
- 基础权限设为
555(r-x r-x r-x):允许进入和列表,禁止任何写操作sudo chmod 555 /var/www/conf - 需要更细粒度时启用ACL,显式拒绝特定用户写入:
sudo setfacl -m u:backupuser:-w /var/www/conf - 关键配置目录(如
/etc/nginx)可考虑重新挂载为只读:sudo mount -o remount,ro /etc(需确认该路径独立挂载) - 避免递归
chmod -R 555误伤脚本执行权限;子目录中需执行的二进制文件应单独设为555或755
Web服务器:关闭浏览+限制访问源+认证兜底
即使文件系统只读,如果目录浏览开启或路径可猜,攻击者仍可能拖走敏感文件。必须叠加服务层控制:
-
Nginx:禁用
autoindex on;敏感路径用location /conf/ { deny all; }直接拦截 -
Apache:确保无
Options +Indexes;用<Files ".env"> Require all denied </Files>屏蔽配置文件 - IIS:在IIS管理器中关闭“目录浏览”功能;绑定IP地址限制模块,白名单放行运维IP
- 所有服务器均建议对敏感路径加基础认证:
auth_basic(Nginx)或.htaccess + htpasswd(Apache)
额外加固:防止绕过与误操作
只读设置常因权限继承、所有权残留或共享权限宽松而失效:
- Windows下先用
takeown /f D:sensitive /r /d y获取所有权,再配NTFS权限,避免被原所有者覆盖 - SMB共享时,共享权限设为“读取”,NTFS权限也只给读取——二者取交集,任一宽松都会导致失控
- Linux下检查SELinux或AppArmor是否启用,某些策略可能覆盖chmod效果;可用
ls -Z查看上下文 - 定期用
icacls(Win)或getfacl(Linux)审计权限,避免人为误改