zoukankan      html  css  js  c++  java
  • Docker容器中用户权限管理

    Docker容器的权限管理方式分为了三种情况:

    1.默认使用的root权限
    不管是以root用户还是以普通用户(有启动docker容器的权限)启动docker容器,容器进程和容器内的用户权限都是root!
    新建了sleep用户,以sleep用户权限启动容器并在有root权限的磁盘进行权限测试

    docker run -v /data/sleep:/sleep  -d --name sleep-1 ubuntu sleep infinity
    

      在宿主机中/data/sleep路径新建了leo_zhou文件并在文件写入“docker”,然后进入sleep-1容器

    docker exec -it sleep-1 bash
    

      依然可以正常操作拥有root权限的文件。

    2.限制Docker容器启动的用户
    新增--user参数,使容器启动用户变成指定的sleep用户,发现并不能操作拥有root权限的文件了。会发现容器中的uid号和实际主机中的uid号一样,也验证了docker容器使用宿主机的内核。可以一定程度进行权限管理。

    3.使用namespace隔离技术
    namespace是一种隔离技术,docker就是使用隔离技术开启特定的namespace创建出一些特殊的进程,不过使用namespace是有条件的。系统会创建dockremap,通过/etc/subuid和/etc/subuid对应的id值,映射到容器中去;实际情况还是使用的是dockremap普通权限,达到自动隔离的效果。

    ①开启Centos内核中关闭的user namespace的功能。
    grubby --args="namespace.unpriv_enable=1 user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
    echo "user.max_user_namespaces=15076" >> /etc/sysctl.conf
    

      

    ②修改/etc/docker/daemon.json配置,新增"userns-remap": "default"选项,default默认就是docker自动创建的用户dockremap,然后重启docker
    

      

    ③Centos需要手动输入id值映射范围
    最后systemctl restart docker后再次测试效果,发现文件权限已经变成nobody,但docker容器内部依然是以"root"的权限管理,但实际只有普通用户的权限,从而达到权限隔离的效果
    

      

  • 相关阅读:
    testd3p
    my open音频的
    1
    one play
    ndk ffmpeg实践2
    ndk ffmpeg实践
    Mac ndk21 交叉ffmpeg目前
    ffmpeg交叉
    and cmake 链接库及播放例子 及读文件
    更正之前《登录小案例》密码错3次15分钟内不准登录
  • 原文地址:https://www.cnblogs.com/blog-cn/p/14944458.html
Copyright © 2011-2022 走看看