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. Python的核心数据类型

    ​ Python的核心数据类型有:数字,字符串,列表,字典,元组,文件等. 数字 ​ 数字类型有:整形int,浮点型float,复数complex,布尔型bool. 整形 ​ 整型数是不带有小数部分的 ...

  2. Django中ORM常用字段类型及参数

    常用字段: <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的 ...

  3. Eclipse工具查看依赖的JDK、Maven源码方法

    一.Eclipse软件里查看JDK依赖源码 1.Window->Preferences->Java->Installed JREs 2.如图: 二.Eclipse软件里查看Maven ...

  4. xpath技术解析xm文件(php)

    1.结合php dom技术的学习,得出一个结论:php dom技术可以跨层取出节点,但是不能保持层次关系,使用xpath可以很好地解决问题. *** xpath技术的核心思想:迅速简洁的定位你需要查找 ...

  5. 【shell脚本学习-3】

    part-1 #!/bin/bash:<<FTP#test [ 1 -eq 2] #条件测试x="abc" #不允许有空格y="abc" [ &qu ...

  6. css3圆角矩形、盒子阴影

    css3圆角矩形 div{ width: 200px; height: 200px; border: #f00 solid 1px; margin-bottom: 10px; } 1.设置 borde ...

  7. PHP学习课程和培训方向学习路线分享

    php语言的优越性,集结了很多的开发爱好者,无论行业前景和个人发展来说,php正飞速的发展,php在不断兼容着类似closures和命名空间 等技术,同时兼顾性能和当下流行的框架.版本是7之后,一直在 ...

  8. python-集合类型

    集合具有唯一性(集合中的元素各不相同),无序性,确定性(集合中的元素是不可改变的,不能是列表,字典以及集合本身) 1.add(self, *args, **kwargs),union(self, *a ...

  9. 初识python 文件读取 保存

    上一章最后一题的答案:infors.sort(key=lambda x:x['age'])print(infors)--->[{'name': 'laowang', 'age': 23}, {' ...

  10. Qt之pro文件解析

    在我们创建Qt工程项目时,Qt Creator总会创建一个.pro文件,我们称.pro文件为Qt的工程管理文件.一个工程项目可以包含一个或多个.pro文件.理解和掌握pro文件的用法,将有利于Qt开发 ...