更改 /etc/group 文件夹位置

更改 /etc/group 文件夹位置

我在 ubuntu 中使用 docker,我需要挂载

/etc/group 
/etc/shadow   
/etc/gshadow
/etc/passwd

在外部卷内,以避免每次重建docker容器时密码丢失。

从 Ubuntu 的角度来看,我只需要将这些文件永久移动到另一个文件夹,例如:

/bck/group 
/bck/shadow
/bck/gshadow
/bck/passwd

我尝试在 /etc 中建立符号链接

lrwxrwxrwx  1 root root    21 Mar  7 15:50 group -> /bck/userbackup/group

但是当我尝试创建新用户时出现以下错误。

就我(非常非常贫乏的)知识而言,似乎存在与访问权限相关的问题:

:/etc# adduser createuserxx
Adding user `createuserxx' ...
Adding new group `createuserxx' (1001) ...
groupadd: cannot open /etc/group
adduser: `/usr/sbin/groupadd -g 1001 createuserxx' returned error code 10. Exiting.

答案1

我认为可能还有更好的方法。

您可以在 Dockerfile 中添加用户,然后使用生成的容器(使用您创建的帐户/密码)作为您构建的其他容器的基础。

除此之外,挂载主机的 /etc/{passwd,shadow,groups} 会使您的设置与您在其上构建容器的主机紧密相关,这在某种程度上违背了使用容器的意义。

所以我建议做类似的事情:

FROM $YOUR_BASE_OS

RUN useradd -s /bin/bash -g somegroup someuser
<....rest of dockerfile....>

如果你只用这两行构建一个容器,并将其命名为 my-base-container,那么对于你所有的其他容器,你可以:

FROM my-base-container:latest

RUN some command
CMD some other command

相关内容