docker compose中tomcat执行身份的执行权限不能是root或者SYSTEM或超级管理员权限,应按最小权限分配。且该账户仅限本地使用,不能远程运维登录。

最近遇到一次漏洞安全扫描,要求docker compose内tomcat执行身份的执行权限不能是root或者SYSTEM或超级管理员权限,应按最小权限分配。且该账户仅限本地使用,不能远程运维登录。

需要将tomcat的执行身份更改为其他用户, 解决方法如下。

1.创建非超级管理员权限用户

直接在ubuntu内创建用户即可,我以test用户为例。

2.重新打包tomcat镜像。

我用的是ubuntu22.04desktop,需要能翻出去,连接docker hub。

安装docker 和 docker compose不在此次讨论范围内。

编写Dockerfile 

#自己打包docker镜像
#tomcat:9.0.96-jre8
#包内用户为test


# 使用 tomcat:9.0.96-jre8 作为基础镜像
FROM tomcat:9.0.96-jre8

# 创建 test 用户和组
RUN groupadd -r test && useradd -r -g test -m test

# 修改 Tomcat 相关文件的所有权,确保 test 用户可以访问
RUN chown -R test:test /usr/local/tomcat

# 切换到 test 用户
USER test

# 启动 Tomcat
CMD ["catalina.sh", "run"]

通过Dockerfile重新打包镜像,在Dockerfile所在的目录下 输入 

docker build -t tomcat:9.0.96-jre8 .

  (注意后面有个点)。

3.编写docker compose

version: '3.0'
services:
  tomcat:
    image: tomcat:9.0.96-jre8
    user: test #指定执行用户为test
    volumes:
      - ./tomcat/webapps:/usr/local/tomcat/webapps
      - ./tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml
      - ./tomcat/logs:/usr/local/tomcat/logs
      - ./tomcat/customized:/usr/local/tomcat/customized
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime
    ports:
      - 8203:8081
      - 9996:9996
    networks:
      DJI-network:
        ipv4_address: 172.18.0.10
    environment:
      - TZ=Asia/Shanghai
    restart: always
    logging:
      driver: "json-file" #默认的文件日志驱动
      options:
        max-size: "100m"
        max-file: "1"

大功告成。

此时查看docker内用户

docker exec tomcat whami

查看执行用户

ps -aux | grep tomcat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值