ClamAV Docker非root运行报权限错误如何修改Dockerfile
问题根源
两个报错均为自建的clamav_user用户没有ClamAV运行所需目录的对应权限:
/var/log/clamav/目录默认属主为系统自带的clamav用户,普通用户无写入权限,无法追加日志/var/run/clamav是运行时动态目录,默认仅允许root创建,非root用户无操作权限
另外原Dockerfile存在笔误:将TCPAddr配置写入了clamd.js而非clamd.conf,会导致ClamAV网络配置不生效。
具体修改点
- 修复配置文件写入笔误
- 提前创建
/var/run/clamav运行时目录,避免运行时创建无权限 - 给
clamav_user授予ClamAV日志目录、运行时目录、病毒库目录的读写权限
修改后完整Dockerfile
From node:16.10-stretch WORKDIR /app COPY . . RUN apt-get update && npm install && apt-get install clamav-daemon -y && \ freshclam && echo "TCPSocket 3310" >> /etc/clamav/clamd.conf && \ # 修复原笔误:改为写入clamd.conf而非clamd.js echo "TCPAddr 127.0.0.1" >> /etc/clamav/clamd.conf && \ mkdir /unscanned_files && chmod -R 0777 /unscanned_files && \ # 提前创建运行时目录、授予相关目录权限给clamav_user mkdir -p /var/run/clamav /var/log/clamav && \ chown -R 10101:10101 /var/log/clamav /var/run/clamav /var/lib/clamav RUN useradd -u 10101 clamav_user RUN chmod -R 0777 /app/bootstrap.sh USER clamav_user CMD ["sh", "bootstrap.sh"]
内容的提问来源于stack exchange,提问作者gabriel
相关产品推荐
相关产品推荐

