我偶然发现了一个脚本,其中包含以下两个命令:
chown -R some-user:0 /some/dir
chmod -R g+w /some/dir
具体来说,这是来自 nginx 非特权 Docker 镜像的 Dockerfile。
是否有任何理由为什么要向根组拥有的文件添加组写入权限?考虑到 root 组中没有其他用户,是否有任何情况可能会产生影响?
答案1
首先,问题不应该是“根组中是否有任何用户”,而是“根组中是否存在任何用户”。
用户(真实用户和系统用户)或正在运行的进程可能会通过以下任一方式进入根组:
- (显然)如果它们列在 /etc/group 的根组中
- 如果它们列在 /etc/passwd 第 4 列的根组中
- 如果可执行文件是 sgid root
- 如果某些系统服务(如 systemd 或 sudo)在根组中启动进程
- 可能还有其他我忘记的事情
如果发生其中任何一个,那么文件是否是组根可写的就很重要了。