问题现象
在修改 kernel.yama.ptrace_scope 内核参数时,系统报错:
错误信息:sysctl: cannot stat /proc/sys/kernel/yama/ptrace_scope: No such file or directory。
直接表现:
/proc/sys/kernel/yama/目录不存在。
问题原因
Yama LSM 模块未初始化:Yama 作为一个 Linux 安全模块(LSM),其内核参数路径是由内核启动时加载该模块产生的。如果内核启动参数中未包含 yama,该路径将不会在 /proc 中创建。
解决方案
请先执行以下命令确认内核支持:
grep CONFIG_SECURITY_YAMA /boot/config-$(uname -r)若返回 y 或 m:请按以下场景进行修复。
若无返回:当前内核不支持 Yama,请升级内核或更换镜像。
场景一:Alibaba Cloud Linux / CentOS / RHEL
使用 grubby 工具快速修改启动参数。
添加 yama 到启动序列:
执行以下命令。注意:为保证兼容性,通过追加方式确保 yama 被加载。# 检查当前启动参数 grubby --info=DEFAULT # 添加安全模块参数 grubby --args="security=yama" --update-kernel=ALL注意:如果系统依赖 SELinux,建议咨询技术支持确认内核是否支持 LSM 堆叠。
重启实例:
reboot配置持久化:
echo "kernel.yama.ptrace_scope = 1" >> /etc/sysctl.conf sysctl -p
场景二:Ubuntu / Debian
通过手动编辑 GRUB 配置文件修复。
编辑 GRUB 配置:
修改/etc/default/grub文件:vim /etc/default/grub找到
GRUB_CMDLINE_LINUX_DEFAULT行,在引号内添加security=yama。例如:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash security=yama"更新 GRUB 并重启:
update-grub reboot配置持久化:
sysctl -w kernel.yama.ptrace_scope=1 echo "kernel.yama.ptrace_scope = 1" >> /etc/sysctl.conf
后续建议
内核堆叠检查:在 Kernel 5.1 及以上版本中,建议使用
lsm=capability,yama,selinux替代security=yama以获得更好的多模块支持。验证状态:重启后通过
cat /sys/kernel/security/lsm查看当前已激活的安全模块列表。