linux挂载权限控制核心是通过挂载参数而非chmod设定行为规则,必配noexec、nosuid、nodev、ro、noatime等选项限制执行、提权、设备解析和写入,配合umask/fmask/uid/gid/acl实现细粒度控制,并须在/etc/fstab中显式配置避免defaults隐含风险。

Linux中用mount限制目录权限,核心不是改目录本身的chmod,而是通过挂载参数控制该文件系统在挂载点上的行为。关键在于“挂载时定规则”,而不是挂载后调权限。
基础安全挂载选项(必配)
这些选项直接禁用危险能力,适合/tmp、/var/tmp、U盘、NFS共享等非系统盘:
- noexec:禁止执行任何二进制或脚本,防恶意代码落地运行;
- nosuid:忽略SUID/SGID位,阻断提权路径;
- nodev:不解析设备节点(如/dev/sda),防止伪造设备文件;
- ro:只读挂载,适用于静态资源目录(如/web/static)或备份卷;
- noatime:跳过访问时间更新,既减I/O又避免暴露文件访问痕迹。
细粒度权限控制(按需启用)
对FAT32、NTFS或某些网络文件系统,需用掩码控制新文件默认权限:
- umask=022 → 新建文件/目录默认为644/755(所有者全权,组和其他只读/可执行);
- fmask=133 + dmask=022:分别设定文件(644)和目录(755)权限,比umask更灵活;
- uid=1000,gid=1000:强制所有文件归属指定用户/组,避免挂载后出现root属主问题;
-
acl:启用POSIX ACL支持,配合
setfacl做单文件级授权(需文件系统支持)。
/etc/fstab中固化配置
临时挂载易遗漏,生产环境务必写入/etc/fstab。避免用defaults——它隐含exec,suid,dev,有安全隐患:
✅ 推荐写法:
UUID=xxx /mnt/data ext4 noexec,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=133,dmask=022 0 2
❌ 避免写法:
UUID=xxx /mnt/data ext4 defaults 0 2(默认开启exec/suid/dev)
配合系统级策略加固
挂载参数是第一道防线,但不能替代纵深防御:
- SELinux上下文:对敏感挂载点(如/web)设置
httpd_sys_rw_content_t等专用类型; - AppArmor profile:限制特定服务(如nginx)仅能读取指定挂载路径;
- Capability限制:用
setcap cap_sys_admin+ep /usr/bin/mount替代全员sudo,缩小权限面。











