因为安全整改需求:docker容器启动的用户不能是root所以在安装部署的时候创建了用户hcs
并赋予了对应二进制可执行文件的权限
然后使用hcs用户登录系统,执行docker 及docker-compose 命令显示无权限?
去看了一下对应的文件 发现居然赋权没有生效
但是手动执行下面三行命令后发现 hcs可以用docker及docker-compose 命令
chmod +x /usr/bin/docker
chmod 755 /usr/local/bin/docker-compose
chmod o+rw /var/run/docker.sock
这下彻底无语了..为啥在shell脚本中执行chmod 命令无效
手动在终端执行却有效?
下面是主脚本
function installDocker {
color_printf green "5.1 copy docker to /usr/bin ..."
cp ./installFiles/${server_arch}/docker-environment/docker/* /usr/bin/
chmod +x /usr/bin/{containerd,containerd-shim,ctr,docker,dockerd,docker-init,containerd-shim-runc-v2,docker-proxy,runc}
cp ./installFiles/${server_arch}/docker-environment/docker.service /etc/systemd/system/
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker
systemctl enable docker.service
docker -v
color_printf green "5.2 start install docker-compose ..."
cp ./installFiles/${server_arch}/docker-environment/docker-compose-Linux-${server_arch} /usr/local/bin/docker-compose
chmod 755 /usr/local/bin/docker-compose
chmod o+rw /var/run/docker.sock
docker-compose -v
cp ./installFiles/${server_arch}/docker-environment/daemon.json /etc/docker/
systemctl daemon-reload
systemctl restart docker
}
installDocker
以及执行脚本后的终端命令截图
可以看到权限都没有赋上
其实脚本里面应该是执行成功的,问题应该在后面的重启docker操作。
重新启动docker时,docker应该是重新创建了docker.sock。新创建的文件权限默认没有o+rw。
可以考虑直接把hcs加入到docker组中。
sudo usermod -aG docker hcs