seccomp初探
早就听说过seccomp,只是知道他是控制syscall的。因为解一个bug,对seccomp了解多了一丢丢,记录一下。
seccomp是linux用来控制用户进程系统调用使用的。有三种模式:
SECCOMP_SET_MODE_STRICT: 严格限制系统调用的使用,只允许read,write,_exit,sigreturn。这个模式用的较少。
SECCOMP_SET_MODE_FILTER:利用bpf来过滤syscall,也就是可以让用户控制哪些syscall可以使用。这是非常合理的,给了用户较大的选择,主要使用的模式;
SECCOMP_GET_ACTION_AVAIL:不了解;
当进程使用了不被允许的syscall时会被seccomp kill掉。常见的是进程收到SIGSYS,这个信号不能屏蔽只能退出。
如果打开了audit服务,在journal log里面可以看到如下的log:
audit[3028351]: SECCOMP auid=4294967295 uid=0 gid=0 ses=4294967295 subj=unconfined pid=3028351 comm="virtiofsd" exe="/root/virtiofs/virtiofsd/virtiofsd" sig=31 arch=c00000b7 syscall=130 compat=0 ip=0x57a7cc code=0x80000000
sig 31就是SIGSYS, syscall后面的数字表明是哪个系统调用, comm和exe表示被杀掉的进程的可执行文件,pid是进程id,code是错误码。ip是被杀掉时执行的指令地址。看起来打开audit对于了解进程退出原因非常有帮助。
分类:
操作系统
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)