capacilities是docker 中对docker权限设置的重要方面;

http://blog.csdn.net/wangpengqi/article/details/9821227

上面这篇文档中有对linux capacilitys的介绍,但是还不足够

https://www.cnblogs.com/iamfy/archive/2012/09/20/2694977.html

超级细致的一篇文档讲linux的权限capacilities

下面是docker代码中关于--privileged的设置,当使用了Privileged加了所有的权限

func setCapabilities(s *specs.Spec, c *container.Container) error {
    var caplist []string
    var err error
    if c.HostConfig.Privileged { //如果配置了Privileged选项
        caplist = caps.GetAllCapabilities()
    } else {
        caplist, err = caps.TweakCapabilities(s.Process.Capabilities.Effective, c.HostConfig.CapAdd, c.HostConfig.CapDrop)
        if err != nil {
            return err
        }
    }   
    s.Process.Capabilities.Effective = caplist
    s.Process.Capabilities.Bounding = caplist
    s.Process.Capabilities.Permitted = caplist
    s.Process.Capabilities.Inheritable = caplist
    return nil
}

下面是所有的权限

CAP_CHOWN:修改文件属主的权限

CAP_DAC_OVERRIDE:忽略文件的DAC访问限制

CAP_DAC_READ_SEARCH:忽略文件读及目录搜索的DAC访问限制

CAP_FOWNER:忽略文件属主ID必须和进程用户ID相匹配的限制

CAP_FSETID:允许设置文件的setuid位

CAP_KILL:允许对不属于自己的进程发送信号

CAP_SETGID:允许改变进程的组ID

CAP_SETUID:允许改变进程的用户ID

CAP_SETPCAP:允许向其他进程转移能力以及删除其他进程的能力

CAP_LINUX_IMMUTABLE:允许修改文件的IMMUTABLE和APPEND属性标志

CAP_NET_BIND_SERVICE:允许绑定到小于1024的端口

CAP_NET_BROADCAST:允许网络广播和多播访问

CAP_NET_ADMIN:允许执行网络管理任务

CAP_NET_RAW:允许使用原始套接字

CAP_IPC_LOCK:允许锁定共享内存片段

CAP_IPC_OWNER:忽略IPC所有权检查

CAP_SYS_MODULE:允许插入和删除内核模块

CAP_SYS_RAWIO:允许直接访问/devport,/dev/mem,/dev/kmem及原始块设备

CAP_SYS_CHROOT:允许使用chroot()系统调用

CAP_SYS_PTRACE:允许跟踪任何进程

CAP_SYS_PACCT:允许执行进程的BSD式审计

CAP_SYS_ADMIN:允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等

CAP_SYS_BOOT:允许重新启动系统

CAP_SYS_NICE:允许提升优先级及设置其他进程的优先级

CAP_SYS_RESOURCE:忽略资源限制

CAP_SYS_TIME:允许改变系统时钟

CAP_SYS_TTY_CONFIG:允许配置TTY设备

CAP_MKNOD:允许使用mknod()系统调用

CAP_LEASE:允许修改文件锁的FL_LEASE标志

//----------------------------------

下面这篇文档列出了整个docker启动,说了下docker启动之后默认的capabilitys:

https://github.com/docker/libcontainer/blob/master/SPEC.md#security

看下都有啥哈:

CAP_NET_RAW 13 1
CAP_NET_BIND_SERVICE 10 1
CAP_AUDIT_READ 37 1
CAP_AUDIT_WRITE 29 1
CAP_DAC_OVERRIDE 1 1
CAP_SETFCAP 31 1
CAP_SETPCAP 8 1
CAP_SETGID 6 1
CAP_SETUID 7 1
CAP_MKNOD 27 1
CAP_CHOWN 0 1
CAP_FOWNER 3 1
CAP_FSETID 4 1
CAP_KILL 5 1
CAP_SYS_CHROOT 18 1

上面说道,如果没有设置privileged的话,那么这个进程其实是按照默认值来配置的:

caps.TweakCapabilities

我挨个看下值都是多少,所以在宿主机上看这个进程的实际permitted capacilitys应该是:0x10a80425fb

sudo docker run -it ubuntu /bin/bash 发现这个进程的优先级是:

CapInh:    00000000a80425fb
CapPrm:    00000000a80425fb
CapEff:    00000000a80425fb
CapBnd:    00000000a80425fb
CapAmb:    00000000a80425fb

(差不多啦,版本不同,最新的版本中也增加了AUDIT的功能)反正总得来说,就是docker里的进程你虽然是root了,但是并不是所有的权限都是有的。。。。。,也不能是为所欲为的;

那么 sudo docker run -it -privileged ubuntu /bin/bash的话

这个进程在宿主机上就是无敌的了。。。。。。

CapInh:    0000003fffffffff
CapPrm:    0000003fffffffff
CapEff:    0000003fffffffff
CapBnd:    0000003fffffffff
CapAmb:    0000003fffffffff
用啥东西测试一下呢?

用这里的俩程序去测试一下吧

https://github.com/honpey/codebox/tree/master/sched

capacilitys docker中的权限设置 privileged的更多相关文章

  1. Apache中的权限设置

        今天,我们的关注点就集中在 order deny,allow 这个语句中.在网上找了些资料,对它有了一些了解,写在这儿. 我们可能对apache中这个权限设置可能不太清楚,不同的顺序对权限到底 ...

  2. 学习笔记-menusript控件中条目权限设置使用

    在做一个小程序的时候,偶然发现了使用menusript控件做权限设置的方法,仅此标记,以供参考. 首先创建一个实例:testuseright.sln, 在项目文件里创建两个窗体:Form1.cs和us ...

  3. Windows中的权限设置、文件压缩、文件加密、磁盘配额和卷影副本

      目录 权限设置 文件夹的NTFS权限 文件的NTFS权限 NTFS权限的应用规则 文件压缩 文件加密 磁盘配额 卷影副本 权限设置的应用 遇到的一个权限问题的小bug 权限问题的实际应用 权限设置 ...

  4. 数据库中File权限的危害

    The FILE privilege gives you permission to read and write files on the server host using the LOAD DA ...

  5. angularjs中的页面访问权限设置

    11月在赶一个项目,这阵子比较忙,挤挤时间更一篇博客吧,如标题所述说说在ng中页面访问权限控制的问题,水平有限各位看官见谅: 在以往的项目中,前后端常见的配合方式是前端提供页面和ui加一点DuangD ...

  6. IIS中的上传目录权限设置问题

    虽然 Apache 的名声可能比 IIS 好,但我相信用 IIS 来做 Web 服务器的人一定也不少.说实话,我觉得 IIS 还是不错的,尤其是 Windows 2003 的 IIS 6(马上 Lon ...

  7. docker中怎样设置开机启动--随容器的启动而启动服务?

    docker可以说给我们的部署带来极大的方便和可逢凶化吉性!(懂的同学自然懂) 在初步了解之后,我们就能简单使用docker了. 刚开始玩docker时,可以基于系统级别的镜像做定制,比如基于  ce ...

  8. 应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户

    这是安装biztalk server 2013出现的问题,很多天了没解决,下边这个解决办法也搜到过类似的,但上次实验时出现设置组件权限时发现都是按钮都是灰的,无法操作. 这次设置好了.谢谢ibg. 文 ...

  9. Java中权限设置

    package think_in_java_access_contorl; import think_in_java_access_contorl.access.Cookie; /** * 1.在Ja ...

随机推荐

  1. 【剑指offer】 Java实现重建二叉树

    GitHub上的代码链接 /** * @Author: DaleyZou * @Description: 重建二叉树 * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. * 假设输入的前序 ...

  2. org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field xxx exceeds its maximum permitted size of 1048576 bytes.

    springboot 通过MultipartFile接受前端传过来的文件时是有文件大小限制的(springboot内置tomact的的文件传输默认为1MB),我们可以通过配置改变它的大小限制 首先在启 ...

  3. 在Windows系统上使用压缩归档文件安装MySQL流程

    最近需要做个小小的验证实验,需要安装MySQL,网上一搜发现教程繁多,bug也多,所以直接把官网的流程翻译过来,注意是压缩文件,不是安装版的,解压直接能用的,下面直接把流程贴过来: 使用压缩文档安装在 ...

  4. php获取客户端IP地址、所在地、操作系统、浏览器信息

    本实例主要实现获取客户端的IP,再根据获取的IP获取所在地,还可以获取用户当前电脑使用的操作系统以及用户是通过什么浏览器进行访问的. 您可以在这里查看具体演示和下载demo  http://www.j ...

  5. python网络编程,通过服务名称和会话类型(tcp,udp)获取端口号,简单的异常处理

    作为一个php程序员,同时有对网络方面感兴趣,php就比较蛋疼了,所以就抽了些时间看python 之前学python基础因为工作原因,断断续续的看了个基础,差不多是可以写代码了 最近在看<pyt ...

  6. Python特别low的一个文字游戏

    闲来无事 ,调侃舍友的游戏 import os class Role(): def __init__(self,name,sex,fighting): self.name=name self.sex= ...

  7. python3 练习题100例 (二十九)猴子吃桃问题

    题目内容: 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第n天(<1<n< ...

  8. ecshop 漏洞如何修复 补丁升级与安全修复详情

    目前ecshop漏洞大面积爆发,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在着高危网站漏洞,导致网站被黑,被篡改,被挂马,许多商城系统深受其漏洞的攻击 ...

  9. C语言结构体的学习,以及gdb的调式

    #include <stdio.h> #include <string.h> #define format "%d\n%s\n%f\n%f\n%f\n" t ...

  10. R语言绘图:直方图

    使用ggplot2包绘制直方图 ######*****绘制直方图代码*****####### data1 <- data0[(data0[, 2] <= 500) & (data0 ...