nosuid是Linux挂载关键安全选项,使SUID/SGID位失效,防止普通用户执行特权程序提权;必须用于/tmp、/var/tmp、Web上传目录、独立数据盘、外部设备挂载点及/dev/shm,禁用于系统根目录;临时启用用sudo mount -o remount,nosuid,永久配置需在/etc/fstab对应行options字段添加nosuid并执行mount -a。
nosuid 是 Linux 文件系统挂载中一道关键防线,它不阻止程序运行,而是让所有 setuid/setgid 权限位彻底失效——普通用户执行 root 所有、带 s 位的程序时,依然只是普通用户身份,无法切换 UID/GID,从而切断最常见的一类本地提权路径。
哪些位置必须加 nosuid
只对“用户可写 + 不该继承特权”的非系统路径启用,加错地方会导致系统瘫痪:
/tmp 和 /var/tmp:服务与用户共用的临时区,极易被植入 SUID shell 或恶意工具 /var/www/uploads):上传文件可能含伪造的 SUID 二进制 /mnt/data、/mnt/backup):纯存储用途,无需特权继承 /mnt/usb):U 盘插入后自动挂载,防范 autorun 类提权载荷 /dev/shm:内存 tmpfs,常被用于无文件攻击链中的 SUID 利用环节 怎么快速验证是否生效
别等重启,先临时启用并测试:
sudo mount -o remount,nosuid /tmp(替换为你的目标挂载点) cp /bin/bash /tmp/mysh && chmod u+s /tmp/mysh ./tmp/mysh -p:若提示符仍是 $(不是 #),且 id 显示 uid/gid 未提升,说明 nosuid 已起效 findmnt -o TARGET,OPTIONS /tmp,输出中应明确包含 nosuid
永久配置要写进 /etc/fstab
临时挂载重启即失效,生产环境必须固化:
/dev/sdb1 /mnt/data ext4 defaults 0 2 nosuid 并用逗号分隔:/dev/sdb1 /mnt/data ext4 defaults,nosuid,noexec,nodev 0 2 sudo mount -a 测试语法是否合法,无报错即生效 为什么不能单用 nosuid
它只管“权限位”,不管“能不能跑”和“有没有设备”:
./exploit),需 noexec 拦住 /mnt/data/evil_dev 设备节点绕过权限控制,需 nodev 封堵 ro(只读)能彻底杜绝写入+执行+提权三连风险 特别注意适用边界
/、/usr、/bin、/sbin、/lib 等系统目录加 nosuid,否则 sudo、ping、passwd 等命令将无法正常工作 nosuid 对已加载进内存的进程无效,只作用于新执行的程序 chattr +i 锁定 /etc/shadow 等核心文件 不复杂但容易忽略