当前位置: 首页 > news >正文

docker fixuid

docker fixuid

  • 一、fixuid是什么
  • 二、使用场景
  • 三、问题
    • dockerfile
    • docker run

一、fixuid是什么

fixuid是用go语言编写的,当容器起来后可以修改容器中非root用户的UID/GID和文件权限。
项目地址:https://github.com/boxboat/fixuid

二、使用场景

当容器中的用户为UID:1000,GID:1000,HOST主机的用户为UID:1001, GID:1002,此时挂载数据卷,会提示提示”permission denied”。
通过使用fixuid,在容器启动时,当HOST主机的UID/GID传进去,fixuid会将容器中用户的UID改成1001,GID改成1002,并且该用户下的所有文件权限也会改成1001:1002。由于容器内外用户的UID/GID一致,此时再挂载数据卷不会由任何问题。

三、问题

默认情况下,容器中的进程以 root 用户执行,并且这个 root 用户和宿主机中的 root 是同一个用户,这意味着:
1.容器中运行的进程,在合适的机会下,有权限控制宿主机中的一切;
2.容器中运行的进程,以 root 用户执行,外界很难追溯到真实的用户;
3.容器进程生成的文件,是 root 用户所有,普通用户没有权限读取修改。(fixuid可以自定义容器内普通用户的uid,如果固定住了可以让拥有同样uid的宿主机使其目录做挂载做到权限分离)

dockerfile

#在线部分
RUN USER=docker && \GROUP=docker && \curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.5.1/fixuid-0.5.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - && \chown root:root /usr/local/bin/fixuid && \chmod 4755 /usr/local/bin/fixuid && \mkdir -p /etc/fixuid && \printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml
#离线全部
FROM debian:latest
COPY fixuid-0.4.1-linux-amd64.tar.gz /opt
RUN useradd -m docker
RUN USER=docker && \GROUP=docker && \tar -xzf /opt/fixuid-0.4.1-linux-amd64.tar.gz -C /usr/local/bin && \chown root:root /usr/local/bin/fixuid && \chmod 4755 /usr/local/bin/fixuid && \mkdir -p /etc/fixuid && \printf "user: $USER\ngroup: $GROUP\n" > /etc/fixuid/config.yml
USER docker:docker
ENTRYPOINT ["fixuid"]

docker run

#这里没有写死uid,需要同普通用户一样uid可以动态传入,不想也可以单独传入不一样的uiddocker run --rm -it -u 1001:1000 vm01:v1  sh
fixuid: fixuid should only ever be used on development systems. DO NOT USE IN PRODUCTION
fixuid: updating user 'docker' to UID '1001'
fixuid: runtime GID '1000' already matches container group 'docker' GID
fixuid: recursively searching path /
fixuid: chown /home/docker
fixuid: chown /home/docker/.bash_logout
fixuid: chown /home/docker/.bashrc
fixuid: chown /home/docker/.profile
$ id
uid=1001(docker) gid=1000(docker) groups=1000(docker)# 换了普通的镜像
docker run --rm -it -u 1002:1001 centos:centos7  bash
bash-4.2$ id
uid=1002 gid=1001 groups=1001
bash-4.2$ exit
http://www.lryc.cn/news/214508.html

相关文章:

  • MySQL笔记--SQL语句
  • 线扫相机DALSA-相机平场矫正详细步骤
  • 求购供应发布农业副业产品市场行情小程序开发
  • 框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现
  • 【腾讯云 HAI域探秘】宝妈也能快速入门AI绘画
  • 归并排序,自顶向下
  • 【案例】3D地球(vue+three.js)
  • C语言中float byte char uint_8 转换方法
  • 瑞明达:脚踏实地,为实体经济贡献“瑞明达”力量
  • ChatGPT-自然语言处理模型
  • Apache Dolphinscheduler如何不重启解决Master服务死循环
  • 绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!
  • 阿昌教你如何优雅的数据脱敏
  • 力扣每日一题80:删除有序数组中的重复项||
  • SQL——插入已经存在的数据
  • 【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧
  • 阿里云2核2G3M云服务器99元/年,新老同享,续费不涨价!
  • UWB 技术在机器人和移动领域的应用题】
  • 11.1 知识总结(JavaScript)
  • 【Java 进阶篇】Java Web开发:实现验证码功能
  • C++启动线程的方法
  • Distilling the Knowledge in a Neural Network学习笔记
  • JVM虚拟机:垃圾回收算法和垃圾回收器之间的关系
  • oracle sqlplus的使用 ,查询oracle实例名和服务名,查询oracle容器,切换oracle容器
  • golang工程——opentelemetry简介、架构、概念、追踪原理
  • Python 自动化(十六)静态文件处理
  • C#学习系列之密闭类、接口、结构和类
  • C++特殊类的设计
  • 量化交易Copula建模应对市场低迷
  • 美创科技位居IDC MarketScape:中国数据安全管理平台市场「领导者」类别