docker权限解决需求,以及更改数据位置

本文介绍如何通过自定义C程序限制Docker命令的功能,包括禁止特定参数使用及验证用户权限,同时展示了更改Docker默认数据存储位置的方法。

一、限制docker命令功能

需求:
    1、当用户执行docker命令时,如果参数中有 “--userns host”时,提示用户命令不存在
    2、当用户执行docker命令时,需要挂载功能时
                例如:  xxx:~$  docker  .....   -v  宿主目录:目标目录
         此时需要校验   当前登录用户的id和宿主目录的id是否一样 并且  用户组id 和 宿主目录的组id是否一样
         a、 如果一样,则允许执行docker功能
         b、 如果不一样,则需要判断 宿主目录 的权限。当宿主目录的权限 ==777 时,则允许执行docker功能,否则不允许。
         
针对1需求,目前完成C程序 res_limit.c
针对2需求,目前完成C程序 res_jur.c

c程序在百度网盘
     
环境:
       linux
       
编译器:
       gcc
       
执行方法:(gcc -o docker res_jur.c  ,mv /usr/bin/docker /usr/bin/rthpc ,cp docker /usr/bin/ , vim /etc/docker/daemon.json)
      
      1、将  .c文件 拷贝到一个目录。
      2、在此目录编译执行    gcc -o docker res.c    此时会在当前目录出现docker。
      3、将计算机内原本(可能在/usr/bin/docker)docker命令替换成 rthpc。
      4、将当前目录生成的docker拷贝到原docker目录下即可。


vim /etc/docker/daemon.json
增加
"userns-remap": "default",

 

 

二、更改数据位置


#将docker 的默认数据位置改为/home/docker,配置文件在/lib/systemd/system/docker.service

#ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
ExecStart=/usr/bin/dockerd --graph /home/docker  -H fd:// $DOCKER_OPTS

 

### 修改 Docker 容器中的文件权限Docker 中修改容器内文件的权限可以通过进入正在运行的容器并使用标准 Linux 命令 `chmod` 来完成。具体操作如下: #### 方法一:通过交互式 shell 进入容器并更改权限 可以先利用命令 `docker exec -it <container_name_or_id> /bin/bash` 或者 `/bin/sh` (取决于基础镜像) 执行一个交互式的shell会话来访问容器内部环境[^2]。 一旦进入了容器,就可以如同对待常规Linux系统一样处理文件权限问题: ```bash chmod 755 /path/to/file ``` 这行命令将会把位于给定路径下的文件设置成拥有者具有读写执行(rwx),而组和其他人都只有读取和执行(rx) 的权限。 #### 方法二:直接在宿主机上挂载目录时调整权限 另一种方式是在创建或启动容器的时候就定义好卷映射关系以及相应的权限配置。比如,在编写 `docker run` 命令或者编辑 `docker-compose.yml` 文件时加入合适的选项以确保正确无误地设置了目标位置上的文件属性[^1]。 对于已经存在的容器,则可能需要停止它之后再重新加载新的配置参数;而对于新构建的应用程序来说,可以在部署阶段就把这些细节考虑进去从而简化后续管理流程。 #### 使用 Docker Compose 设置权限 当采用 Docker Compose 工具来进行多服务编排时,也可以在对应的 `.yml` 配置文档里指定 volumes 下面的 mode 参数为 z, Z 等标志位来控制 SELinux 上下文标签或是简单的 rprivate/rshared 属性。 例如下面这段 YAML 片段展示了怎样向某个特定的服务添加带有适当权限设定的数据卷: ```yaml version: '3' services: webapp: image: my_web_app_image volumes: - type: bind source: ./local_directory target: /container/path read_only: true # 可选字段,用于指示该卷是否只读 consistency: delegated # 控制同步行为,默认一致性的模式有三种选择之一 mode: rw # 明确指出读/写权限 ``` 以上方法能够有效地帮助用户解决关于如何改变Docker容器内的文件权限的问题,并提供了多种途径供不同场景下的需求所选用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值