进程创建的文件,对于ftp用户无法下载
原因:权限不足
进程创建的文件默认为640权限,其他用户(0)无读写能力
centos7.9下的
通过1.0.0-rc95这个版本创建的容器,umask值为022:
root@localhost:/# umask
0022
kylinv10自带的
进入容器修改/etc/profile,/root/.bashrc,/etc/bash.bashrc文件强制修改环境变量【echo “umask 0022” >> XXX】后,umask值确实改了022,进入容器touch文件权限也对644;
但通过容器进程创建的文件还是640.
通过1.0.0-rc3这个版本创建的容器,umask值为027:
root@017ff64a6662:/# umask
0027
解决:
● 麒麟V10-SP3,增加了默认的容器运行时为1.0.0-rc3,很可能是为了安全着想,大部分情况下640权限,其实是适用的,也就是自己产生的文件自己用。
● 对创建的文件有其他用户操作的需求,在“640”权限不满足时,如ftp的场景,则需按照如下操作:
1.全部统一替换
#确定版本号是否为1.0.0-rc95,目前用此版本
runc -v
#删除当前机器的所有容器(如需备份,提前做好,此处略)
docker ps -qa|xargs docker rm -f
#确定安装位置
whereis runc
# 删除有问题的版本
mv /usr/local/bin/runc /usr/local/bin/runc.bak
# 1.如果已安装docker,则从docker安装目录下复制
cp /usr/bin/runc /usr/local/bin/runc
# 2.如果版本有自定义的安装可有的版本1.0.0-rc95,提前下载此版本的runc并上传服务器
cp runc /usr/bin
cp /usr/bin/runc /usr/local/bin/runc
# 1、重启服务器,环境修改生效
# 2、如果服务器不能重启,则先重装portainer_agent,再重装其他容器
# 验证运行时版本号,1.0.0-rc95
runc -v
# 此时容器内部的umaks=022,说明已经修改正确
2.当有多个运行时,可通过daemon.json配置选择使用
daemon参数节点:runtimes
容器run时增加参数:--runtimes=xxx,可增加更细的参数控制,以更安全的方式运行