我如何将 linux 系统调用映射到功能

Posted

技术标签:

【中文标题】我如何将 linux 系统调用映射到功能【英文标题】:How do i map linux system calls to capabilities 【发布时间】:2019-03-02 00:12:58 【问题描述】:

我想在非特权模式下运行容器。这是为了使其更安全并更好地控制。我从我的容器中记录了一些系统调用。 以下是系统调用:

recvfrom

mmap

阅读

fstat

recvmsg

保护

munmap

插座

fcntl

io_submit

io_getevents

选择

epoll_ctl

寻找

发送消息

ioctl

统计

发送到

sched_yield

系统事件

rt_sigaction

如何将上述系统调用映射到功能? 我想在运行容器时添加这些功能

【问题讨论】:

就这么做吧。 docs.docker.com/engine/reference/run/… 我不认为你可以,Linux 功能在单个系统调用的基础上不起作用,它可以增加对非特权事物的更多访问权限,但这些系统调用已经可以通过非特权进程。 我怎样才能知道我的容器需要哪些功能才能在非特权模式下运行? 您可以使用能力跟踪,如能力,请参阅***.com/a/47991611/3147123 【参考方案1】:

除了我无法识别的sysdigevent,其余的看起来都像是基本的系统调用。除非您在特权套接字、原始块设备或任何其他固有特权上进行操作,否则您不需要任何功能。

【讨论】:

以上是关于我如何将 linux 系统调用映射到功能的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理内存管理系统调用 ① ( mmap 创建内存映射 | munmap 删除内存映射 | mprotect 设置虚拟内存区域访问权限 )

使用mmap(linux系统调用)追加文件内容

32位系统调用表入口点如何映射到x86_64中的SYSCALL_DEFINE

Linux内存从0到1学习笔记(七,用户空间虚拟内存之三 - 内存映射)

什么时候在ARM板上安装操作系统?调用端口的地址会映射到真实地址还是虚拟地址?

Linux 内核 内存管理内存管理系统调用 ⑤ ( 代码示例 | 多进程共享 mmap 内存映射示例 )