一聚教程网:一个值得你收藏的教程网站

热门教程

服务器访问控制如何对敏感目录和文件设置只读属性

时间:2026-08-17 20:32:49 编辑:袖梨 来源:一聚教程网

真正起作用的是底层访问控制机制:Windows靠NTFS权限精细拒绝写入,Linux靠chmod、ACL或挂载选项锁定写能力,Web服务器需结合目录浏览开关与认证隔离。

服务器上对敏感目录和文件设置只读,不能只靠“勾选只读属性”这种表面操作——它在Windows里无效,在Linux里不生效,更无法阻止有权限的用户删除或覆盖。真正起作用的是底层访问控制机制:Windows靠NTFS权限精细拒绝写入,Linux靠chmod、ACL或挂载选项锁定写能力,Web服务器则需结合目录浏览开关与认证隔离。

Windows服务器:用NTFS权限实现强制只读

共享或本地访问都依赖NTFS权限,这是唯一能真正阻止删除、重命名、新建、修改的手段:

  1. 右键敏感文件夹 → 属性 → 安全 → 高级 → 点击“禁用继承”,选择“从此对象中删除所有已继承的权限”
  2. 点击“添加”→ 输入目标用户或组(如IUSRUsers或具体账号)→ 仅勾选三项:读取和执行列出文件夹内容读取
  3. 再次点击“添加”,为同一用户/组创建一条拒绝规则:勾选“删除”和“删除子文件夹及文件”,应用范围选“此文件夹、子文件夹和文件”
  4. 若用于IIS站点,上传目录除外;静态资源目录(如/static/docs)必须禁用“写入”“修改”“完全控制”

Linux服务器:chmod + ACL + 挂载三重防护

单靠chmod 444对目录无效(目录需执行位才能进入),正确做法是组合使用:

  1. 基础权限设为555(r-x r-x r-x):允许进入和列表,禁止任何写操作

    sudo chmod 555 /var/www/conf

  2. 需要更细粒度时启用ACL,显式拒绝特定用户写入:

    sudo setfacl -m u:backupuser:-w /var/www/conf

  3. 关键配置目录(如/etc/nginx)可考虑重新挂载为只读:

    sudo mount -o remount,ro /etc(需确认该路径独立挂载)

  4. 避免递归chmod -R 555误伤脚本执行权限;子目录中需执行的二进制文件应单独设为555755

Web服务器:关闭浏览+限制访问源+认证兜底

即使文件系统只读,如果目录浏览开启或路径可猜,攻击者仍可能拖走敏感文件。必须叠加服务层控制:

  1. Nginx:禁用autoindex on;敏感路径用location /conf/ { deny all; }直接拦截
  2. Apache:确保无Options +Indexes;用<Files ".env"> Require all denied </Files>屏蔽配置文件
  3. IIS:在IIS管理器中关闭“目录浏览”功能;绑定IP地址限制模块,白名单放行运维IP
  4. 所有服务器均建议对敏感路径加基础认证:auth_basic(Nginx)或.htaccess + htpasswd(Apache)

额外加固:防止绕过与误操作

只读设置常因权限继承、所有权残留或共享权限宽松而失效:

  1. Windows下先用takeown /f D:sensitive /r /d y获取所有权,再配NTFS权限,避免被原所有者覆盖
  2. SMB共享时,共享权限设为“读取”,NTFS权限也只给读取——二者取交集,任一宽松都会导致失控
  3. Linux下检查SELinux或AppArmor是否启用,某些策略可能覆盖chmod效果;可用ls -Z查看上下文
  4. 定期用icacls(Win)或getfacl(Linux)审计权限,避免人为误改

热门栏目