千家信息网

Docker容器运行时权限和Linux系统功能简单介绍

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"Docker容器运行时权限和Linux系统功能简单介绍",在日常操作中,相信很多人在Docker容器运行时权限和Linux系统功能简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简
千家信息网最后更新 2026年11月04日Docker容器运行时权限和Linux系统功能简单介绍

这篇文章主要介绍"Docker容器运行时权限和Linux系统功能简单介绍",在日常操作中,相信很多人在Docker容器运行时权限和Linux系统功能简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Docker容器运行时权限和Linux系统功能简单介绍"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Docker容器运行时权限和Linux系统功能

相关Docker参数

--cap-add: Add Linux capabilities--cap-drop: Drop Linux capabilities--privileged=false: Give extended privileges to this container--device=[]: Allows you to run devices inside the container without the --privileged flag.

出于容器之间和容器与宿主机的安全隔离保护,在默认的Docker配置下,Docker容器是没有系统权限的。例如不能在一个Docker容器内,再运行一个Dokcer服务(译者注:或者在容器内修改系统时间)。这是因为在默认情况下,容器内的进程不允许访问任何宿主机上的设备。只有获得设备访问授权的容器,才可以访问所有设备(请参阅关于 cgroups设备的文档)。

当容器管理员执行docker run --privileged时,将允许Docker容器访问宿主机上的所有设备,并在AppArmor或SELinux中设置一些配置,使容器内的进程可以与容器外运行的进程几乎一样权限来访问宿主机。(有关运行--privileged参数的更多信息,请访问 Docker博客。)

如果想限制对特定设备的访问,可以使用--device参数。它允许您指定从容器内访问的一个或多个设备。

$ docker run --device=/dev/snd:/dev/snd ...

开启--device参数后,容器内的进程默认将获得这些设备的read、write和mknod权限。您也可以为每个--device参数,附加第三个:rwm选项来覆盖默认的设置:

$ docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk  /dev/xvdcCommand (m for help): q$ docker run --device=/dev/sda:/dev/xvdc:r --rm -it ubuntu fdisk  /dev/xvdcYou will not be able to write the partition table.Command (m for help): q$ docker run --device=/dev/sda:/dev/xvdc:w --rm -it ubuntu fdisk  /dev/xvdc    crash....$ docker run --device=/dev/sda:/dev/xvdc:m --rm -it ubuntu fdisk  /dev/xvdcfdisk: unable to open /dev/xvdc: Operation not permitted

除了--privileged之外,操作员还可以使用--cap-add和--cap-drop对功能进行细粒度控制。默认情况下,Docker有一个保留的默认功能列表。

下表列出了Linux功能选项,这些选项是默认允许的,可以删除。

功能项功能描述
SETPCAP修改进程的权限
MKNOD使用mknod(2)创建特殊文件
AUDIT_WRITE将记录写入内核审计日志
CHOWN任意更改文件UIDs和GIDs(见chown(2))
NET_RAW使用 RAW 和 PACKET 套接字
DAC_OVERRIDE绕过文件的读、写和执行权限检查
FOWNER绕过对进程的文件系统UID与文件的UID进行权限匹配的检查操作
FSETID当文件被修改时,不要清除set-user-ID和set-group-ID权限位
KILL绕过发送信号的权限检查
SETGID自定义处理进程GID和补充GID列表
SETUID自定义处理进程UID
NET_BIND_SERVICE将套接字绑定到互联网域名专用端口(端口号小于1024)。
SYS_CHROOT使用chroot(2),更改根目录
SETFCAP设置文件功能

下表显示了默认情况下未授予的功能,可以手动添加这些功能。

功能项功能描述
SYS_MODULE加载和卸载内核模块
SYS_RAWIO执行I / O端口操作(iopl(2)和ioperm(2))
SYS_PACCT使用acct(2),打开或关闭进程计数
SYS_ADMIN执行一系列系统管理操作
SYS_NICE提高进程的nice值(nice(2),setpriority(2))并更改任意进程的nice值
SYS_RESOURCE覆盖资源限制
SYS_TIME设置系统时钟(settimeofday(2),stime(2),adjtimex(2)); 设置实时(硬件)时钟
SYS_TTY_CONFIG使用vhangup(2); 在虚拟终端上使用各种特权的ioctl(2)操作
AUDIT_CONTROL启用和禁用内核审核; 更改审核过滤器规则; 检索审核状态和过滤规则
MAC_ADMIN允许MAC配置或状态更改。 为Smack LSM而实现的功能
MAC_OVERRIDE覆盖强制访问控制(MAC)。 为Smack Linux安全模块(LSM)实现
NET_ADMIN执行各种与网络相关的操作
SYSLOG执行syslog(2)的权限操作。
DAC_READ_SEARCH绕过文件读取权限检查以及目录读取和执行权限检查
LINUX_IMMUTABLE设置FS_APPEND_FL和FS_IMMUTABLE_FL i-node 标志
NET_BROADCAST使套接字可以实现广播,并监听广播包
IPC_LOCK锁定内存(mlock(2),mlockall(2),mmap(2),shmctl(2))
IPC_OWNER绕过对System V IPC对象操作的权限检查
SYS_PTRACE使用ptrace(2)跟踪任意进程
SYS_BOOT使用reboot(2)和kexec_load(2),重新引导并加载新内核以供程序执行
LEASE在任意文件上建立Lease租约(请参阅fcntl(2))
WAKE_ALARM触发唤醒系统的操作
BLOCK_SUSPEND开启可以阻止系统挂起的功能

更多的参考信息可以在 capabilities(7) - Linux man page Linux手册页中找到

--cap-add --cap-drop两个参数都支持值ALL,所以如果Docker管理员想要获得除了MKNOD以外的所有Linux功能,可以使用:

$ docker run --cap-add=ALL --cap-drop=MKNOD ...

如果想与系统的网络堆栈进行交互,应该使用--cap-add=NET_ADMIN来修改网络接口,而不是使用--privileged。

$ docker run -it --rm  ubuntu:14.04 ip link add dummy0 type dummyRTNETLINK answers: Operation not permitted$ docker run -it --rm --cap-add=NET_ADMIN ubuntu:14.04 ip link add dummy0 type dummy

要安装一个基于FUSE的文件系统,您需要结合--cap-add和--device:

$ docker run --rm -it --cap-add SYS_ADMIN sshfs sshfs sven@10.10.10.20:/home/sven /mntfuse: failed to open /dev/fuse: Operation not permitted$ docker run --rm -it --device /dev/fuse sshfs sshfs sven@10.10.10.20:/home/sven /mntfusermount: mount failed: Operation not permitted$ docker run --rm -it --cap-add SYS_ADMIN --device /dev/fuse sshfs# sshfs sven@10.10.10.20:/home/sven /mntThe authenticity of host '10.10.10.20 (10.10.10.20)' can't be established.ECDSA key fingerprint is 25:34:85:75:25:b0:17:46:05:19:04:93:b5:dd:5f:c6.Are you sure you want to continue connecting (yes/no)? yessven@10.10.10.20's password:root@30aa0cfaf1b5:/# ls -la /mnt/src/dockertotal 1516drwxrwxr-x 1 1000 1000   4096 Dec  4 06:08 .drwxrwxr-x 1 1000 1000   4096 Dec  4 11:46 ..-rw-rw-r-- 1 1000 1000     16 Oct  8 00:09 .dockerignore-rwxrwxr-x 1 1000 1000    464 Oct  8 00:09 .drone.ymldrwxrwxr-x 1 1000 1000   4096 Dec  4 06:11 .git-rw-rw-r-- 1 1000 1000    461 Dec  4 06:08 .gitignore....

默认的seccomp配置文件将根据所选的功能进行调整,以允许使用功能所允许的功能,所以从Docker1.12之后的版本,不应该对此进行调整。在Docker 1.10和1.11中没有这种情况,在添加功能时可能需要使用一个自定义的seccomp配置文件或使用--security-opt seccomp=unconfined。

到此,关于"Docker容器运行时权限和Linux系统功能简单介绍"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

功能 容器 权限 系统 文件 进程 设备 运行 参数 检查 配置 内核 宿主 情况 更多 学习 套接字 网络 管理 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 腾讯阿里互联网科技 科技与互联网发展 互联网科技小贷 齐家互联网科技 善班互联网科技有限公司 腾讯科技 互联网女皇 掌上梦互联网科技 互联网科技视频素材 新华互联网科技校企合作 太原新华互联网科技学校怎么样 科技赋能互联网健康 花神(南京)互联网科技有限公司 中国互联网公司排名锤子科技 朱啸虎曾投资哪些互联网科技企业 为客找房互联网科技公司怎么样 云南省自由互联网科技有限公司 中天科技中国工业互联网 领航科技大厦互联网公司 互联网高科技行业有哪些企业 安徽九吞吴互联网科技有限公司 湖北九亚互联网络科技有限公司 互联网科技英文 迪茉互联网科技 华中科技大学互联网 深圳艾佳互联网科技 互联网前沿科技 人人互联网科技是培训 互联网时代科技型公司的机会 广西科技产业互联网是什么 上海万顺科技互联网有限公司招聘
0