linux中配置只读文件系统核心是mount -o ro,但需结合场景选择挂载点、lvm或chattr +i等多层防护,并搭配noexec/nosuid/nodev等选项强化安全。

Linux 中配置只读文件系统,核心是用 mount -o ro 控制挂载行为,但它不是“一刀切”的安全开关——得看对象、场景和防护目标。直接加 ro 能防普通写入,但 root 仍可 remount,rw;若要真正锁死,需结合层级(挂载点、文件属性、LVM)和配套选项(如 noexec、nosuid)。
对整块设备或挂载点启用只读(最常用)
适用于备份盘、镜像、NFS 共享等外部或归档类存储,操作轻量且即时生效。
- 临时挂载为只读:
sudo mount -o ro /dev/sdb1 /mnt/archive - 已挂载后切换(需文件系统支持 remount):
sudo mount -o remount,ro /mnt/archive;失败时先umount再重挂 - 开机自动只读:编辑
/etc/fstab,在对应行第 4 字段追加,ro,例如:UUID=abcd-1234 /mnt/archive ext4 defaults,ro 0 2
保存后运行sudo mount -a验证无报错即可
网络共享(Samba/NFS)的只读控制逻辑
客户端挂载加 ro 是辅助手段,真正权限由服务端决定。盲目加 ro 可能冗余,甚至掩盖真实权限问题。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- Samba 客户端强制只读:
//server/share /mnt/cifs cifs credentials=/etc/smb.cred,ro,multiuser,sec=ntlmssp,_netdev 0 0 - 关键前提:服务端已设
read only = yes或用户无写权限;否则客户端ro不起实际作用 - 凭证文件(如
smb.cred)必须chmod 600,否则普通用户可能窃取凭据
搭配 noexec/nosuid/nodev 构建基础安全挂载
单靠 ro 无法防脚本执行或提权,尤其在 Web 上传目录、用户共享区等高风险位置,应组合使用。
- 典型加固组合:
ro,noexec,nosuid,nodev -
noexec:阻止直接执行二进制或脚本(./a.out或sh script.sh失败),但python script.py仍可能运行——需配合目录权限与解释器限制 -
nosuid和nodev防止挂载点内 setuid 程序提权、设备节点滥用,对多用户环境尤为重要
当 ro 不够用:需要不可绕过只读时的选择
如果目标是防 root 误操作或满足合规审计(如日志归档分区、固件只读区),仅 mount -o ro 易被覆盖,应升维防护。
-
chattr +i:对单个关键文件/目录设内核级不可变属性,root 也须先chattr -i才能修改,适合证书、密钥、审计日志文件 -
lvchange -p r:在 LVM 层锁定逻辑卷为只读,比挂载层更底层,重启后仍保持,适合长期归档卷 - 注意:
chattr +i目录下无法新建/删除任何文件;批量脚本处理前务必lsattr扫描,避免中断










