真正起作用的是底层访问控制机制:Windows靠NTFS权限精细拒绝写入,Linux靠chmod、ACL或挂载选项锁定写能力,Web服务器需结合目录浏览开关与认证隔离。
服务器上对敏感目录和文件设置只读,不能只靠“勾选只读属性”这种表面操作——它在Windows里无效,在Linux里不生效,更无法阻止有权限的用户删除或覆盖。真正起作用的是底层访问控制机制:Windows靠NTFS权限精细拒绝写入,Linux靠chmod、ACL或挂载选项锁定写能力,Web服务器则需结合目录浏览开关与认证隔离。
共享或本地访问都依赖NTFS权限,这是唯一能真正阻止删除、重命名、新建、修改的手段:
/static、/docs)必须禁用“写入”“修改”“完全控制”单靠chmod 444对目录无效(目录需执行位才能进入),正确做法是组合使用:
555(r-x r-x r-x):允许进入和列表,禁止任何写操作sudo chmod 555 /var/www/conf
sudo setfacl -m u:backupuser:-w /var/www/conf
/etc/nginx)可考虑重新挂载为只读:sudo mount -o remount,ro /etc(需确认该路径独立挂载)
chmod -R 555误伤脚本执行权限;子目录中需执行的二进制文件应单独设为555或755
即使文件系统只读,如果目录浏览开启或路径可猜,攻击者仍可能拖走敏感文件。必须叠加服务层控制:
autoindex on;敏感路径用location /conf/ { deny all; }直接拦截Options +Indexes;用<Files ".env"> Require all denied </Files>屏蔽配置文件auth_basic(Nginx)或.htaccess + htpasswd(Apache)只读设置常因权限继承、所有权残留或共享权限宽松而失效:
takeown /f D:sensitive /r /d y获取所有权,再配NTFS权限,避免被原所有者覆盖ls -Z查看上下文icacls(Win)或getfacl(Linux)审计权限,避免人为误改