欢迎来到阿里云授权服务中心典名科技有限公司!咨询电话:023-66887777 18623333330

微信
手机版
网站地图

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

2021-09-15 15:32:42 投稿人 : admin 围观 : 111 次 0 评论

“Docker容器运行时权限和Linux系统功能简单介绍”,在日常操作中,相信很多人在Docker容器运行时权限和Linux系统功能简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker容器运行时权限和Linux系统功能简单介绍”的疑惑有所帮助!

未标题-1.jpg

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参数后,容器内的进程默认将获得这些设备的readwritemknod权限。您也可以为每个--device参数,附加第三个:rwm选项来覆盖默认的设置:

$ docker run --device=/dev/sda:/dev/xvdc --rm -it ubuntu fdisk  /dev/xvdc
Command (m for help): q
$ docker run --device=/dev/sda:/dev/xvdc:r --rm -it ubuntu fdisk  /dev/xvdc
You 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/xvdc
fdisk: 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 dummy
RTNETLINK 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 /mnt
fuse: failed to open /dev/fuse: Operation not permitted
$ docker run --rm -it --device /dev/fuse sshfs sshfs sven@10.10.10.20:/home/sven /mnt
fusermount: 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 /mnt
The 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)? yes
sven@10.10.10.20's password:
root@30aa0cfaf1b5:/# ls -la /mnt/src/docker
total 1516
drwxrwxr-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.yml
drwxrwxr-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

版权声明:本站部分文章内容、图片来源于网友推荐、互联网收集整理而来,仅供大家学习参考,不代表本站立场,如有侵权,请联系站长,我们会第一时间处理!本站原创内容未经允许不得转载,或转载时需注明出处:典名科技资讯门户

相关文章

  • 怎样弄linux查看进程的线程数?
    怎样弄linux查看进程的线程数?

      Linux系统的进程是由线程组成的,当然Linux进程下的线程数是不固定的,可以是一个进程,也可以是多个进程。下面就由和大家讲一讲linux查看进程。进程是一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源。一般来说,Li...

    2021-11-17 11:35:33
  • 云服务器的优势
    云服务器的优势

      基于云主机平台构建的一款新型云主机产品,其性能是云主机的性能,同时具备虚拟主机的全部功能。在主机控制面板上还具有服务器重启,CPU、内存、使用空间大小监控等功能。用户独享整个驰云服务器的软硬件资源,通过控制面板进行维护和管理,同时关闭远...

    2021-11-17 11:27:34
  • 微系统架构的特点
    微系统架构的特点

      微系统架构是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务,而红帽说API应该是重点。微服务可以在“自己的程序”中运行,并通过“轻量级设备与HTTP型API进行沟通”。关键在于该服务...

    2021-11-17 11:20:34
  • 云建站有什么特点?
    云建站有什么特点?

      云建站是最近几年互联网领域兴起的全新的一种互联网基础应用模式,以前存放网站所有的服务器都是单击存在,各种服务之间没有明确的区分,来到云技术时代,随着虚拟化技术的进步,大规模集成式服务开始出现,由之前的单点式服务变为了集群式云服务,人们可...

    2021-11-17 11:13:35
  • 如何使用linux搭建vpn服务器?
    如何使用linux搭建vpn服务器?

      Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线...

    2021-11-17 11:09:36
  • 可靠云主机的优点和缺点
    可靠云主机的优点和缺点

      云主机是云计算在基础设施应用上的重要组成部分,位于云计算产业链金字塔底层,产品源自云计算平台。该平台整合了互联网应用三大核心要素:计算、存储、网络,面向用户提供公用化的互联网基础设施服务。云主机是一种类似VPS主机的虚拟化技术, VPS...

    2021-11-17 11:03:36
  • linux查看端口占用情况的步骤
    linux查看端口占用情况的步骤

      准备使用python写一个端口探测的小程序,以检测一些特定的服务端口有没有被占用,突然发现自己居然不知道在linux中如何查询端口被占用的情况,在项目的部署的时候,会遇到端口被占用的情况,需要我们先停下占用端口的进程,然后才能开启新的服...

    2021-11-17 11:01:36
  • tftp服务器软件特点有哪些?tftp服务器软件如何使用?
    tftp服务器软件特点有哪些?tftp服务器软件如何使用?

      tftp是一个传输文件的简单协议,而tftp服务器则可以用于IOS的升级和备份的工作,同时还可以用于文件的传输,现在有一种tftp服务器软件,很多朋友不知道它的情况,下面就来说说tftp服务器软件特点有哪些?tftp服务器软件如何使用。...

    2021-11-17 11:01:35
  • 传真服务器软件角色的步骤
    传真服务器软件角色的步骤

      Windows Server 2008 中的传真服务管理器提供了一个用于配置和管理传真资源的集中管理点。传真服务管理器是在服务器管理器中安装传真服务器角色时安装的。可以使用传真服务管理器为传入和传出传真流量配置传真设备、指定可以使用传真...

    2021-11-17 11:01:35
  • 什么服务器好用?选择服务器要注意什么问题?
    什么服务器好用?选择服务器要注意什么问题?

      什么服务器好用?选择服务器要注意什么问题?很多人在选择服务器产品时一味的看重内存大小,不关注品牌和售后服务问题,其实这个想法有失偏颇。建议大家在选择服务器时还要考虑到宽带以及机房等问题。   一、服务器是什么?   服务器是计算机的一种...

    2021-11-17 11:01:33
发表评论