Docker中获取root【所有 | 有限授权】权限

Docker中获取root【所有 | 指定】权限


Docker中获取root【所有 | 指定】权限)

问题抛出

Docker容器中执行 date -s 2019-09-02 01:01:01 命令时,报出如下错误:
date: cannot set date: Operation not permitted

解决思路

经查询了解到,docker容器的资源隔离使用了Linux宿主机的Capability机制,而Capability机制允许我们显示的将root的权限划分为不同的小的单元。默认情况下,docker容器中只支持如下Capability:

CHOWN, 
DAC_OVERRIDE, 
FSETID, 
FOWNER, 
MKNOD, 
NET_RAW, 
SETGID,  
SETUID, 
SETFCAP, 
SETPCAP, 
NET_BIND_SERVICE, 
SYS_CHROOT, 
KILL, 
AUDIT_WRITE

修改系统时钟需要用到 SYS_TIME 权限。

解决方案

①、一刀切,直接通过--privileged赋予全部最高权限

A) docker 命令行启动方式下,配置–privileged,范例:

[root@localhost ~]# docker run -it --privileged --name mycentos centos:latest /bin/bash

B) docker-compose.yml下,在service_name->app_name下配置:

privileged: true

②、仅通过--cap-add赋予时钟修改权限

A) docker 命令行启动方式下,范例:

[root@localhost ~]# docker run -it --cap-add SYS_TIME --rm --name mycentos centos:lastest /bin/bash

B) docker-compose.yml下,在service->app_name下配置:

#添加SYS_TIME能力
cap_add:
  - SYS_TIME

# 添加全部能力
cap_add:
  - ALL

# 删除NET_ADMIN,SYS_ADMIN能力
cap_drop:
  - NET_ADMIN
  - SYS_ADMIN

参考列表,致谢

1: https://www.jianshu.com/p/3cfd7e4d8c76
2: https://docs.docker.com/compose/compose-file/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值