问题示例:

docker run -ti -v my_passwd:/etc/passwd -v my_shadow:/etc/shadow --rm centos

[root@681a5489f3b0 /]# useradd test # does not work !?

useradd: failure while writing changes to /etc/passwd

[root@681a5489f3b0 /]# ll /etc/passwd /etc/shadow # permission check

-rw-r--r-- 1 root root 157 Oct 8 10:17 /etc/passwd

-rw-r----- 1 root root 100 Oct 7 18:02 /etc/shadow

使用passwd时也会出现类似的问题:

[root@681a5489f3b0 /]# passwd test

Changing password for user test.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: Authentication token manipulation error

我尝试使用ubuntu映像,但是出现相同的问题.

我可以从容器中手动编辑passwd文件和影子文件.

我在以下两台机器上遇到相同的问题:

主机操作系统:CentOS 7-SELinux已禁用

Docker版本:1.8.2,内部版本0a8c2e3

主机操作系统:CoreOS 766.4.0

Docker版本:1.7.1,构建df2f73d-dirty

解决方法:

之所以失败,是因为passwd处理了一个临时文件,然后尝试将其重命名为/ etc / shadow.失败是因为/ etc / shadow是一个安装点-无法替换-导致此错误(使用strace捕获):

102 rename("/etc/nshadow", "/etc/shadow") = -1 EBUSY (Device or resource busy)

您可以从命令行简单地重现此内容:

# cd /etc

# touch foo

# mv foo shadow

mv: cannot move 'foo' to 'shadow': Device or resource busy

您可以通过以下方式解决此问题:在其他位置安装包含my_shadow和my_passwd的目录,然后在容器中适当地符号链接/ etc / passwd和/ etc / shadow:

$docker run -it --rm -v $PWD/my_etc:/my_etc centos

[root@afbc739f588c /]# ln -sf /my_etc/my_passwd /etc/passwd

[root@afbc739f588c /]# ln -sf /my_etc/my_shadow /etc/shadow

[root@afbc739f588c /]# ls -l /etc/{shadow,passwd}

lrwxrwxrwx. 1 root root 17 Oct 8 17:48 /etc/passwd -> /my_etc/my_passwd

lrwxrwxrwx. 1 root root 17 Oct 8 17:48 /etc/shadow -> /my_etc/my_shadow

[root@afbc739f588c /]# passwd root

Changing password for user root.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@afbc739f588c /]#

标签:passwd,docker,linux,etcpasswd

来源: https://codeday.me/bug/20191027/1947383.html

linux安装无法添加挂载,linux-无法在已挂载/ etc / passwd和/ etc / shadow的docker容器中添加新用户...相关推荐

  1. 计算机如果添加新用户名,怎么在电脑中创建新用户

    怎么在电脑中创建新用户 我们在使用电脑的时候,一般是会设置账号并添加密码的,今天小编跟大家分享的是怎么在电脑中创建新用户. 具体如下: 1. 首先我们打开电脑,然后点击左下方开始图标,在打开的窗口中点 ...

  2. Linux 安装python 3.8(Linux 的版本为 Centos 7)

    Linux 安装python 3.8(Linux 的版本为 Centos 7) 前言:喜欢傻瓜式复制粘贴的,不会思考安装过程中报错的,不建议看这个,可以去看看其他的,看了安装不了,又喷人,自己不会,解 ...

  3. kali linux安装软件中心,Kali Linux安装第三方软件

    Kali Linux安装第三方软件 在Kali Linux中,自带了许多渗透测试工具.大学霸IT达人但是,一些工具默认没有安装(如Nessus.OpenVAS),则需要用户手动安装.其中,如果软件源提 ...

  4. 记录一次 在linux 搭建的mysql迁移到docker容器中

    上篇文章写道,我腾讯云被攻击了,然后我各种删除木马文件,但在这个过程中,有些系统文件没认到,以为是木马文件,就删除了,各种处理无果,打开腾讯云的救援模式,备份了些重要文件,然后重装系统了. 基于这个契 ...

  5. Docker容器中的Linux机器快速设置国内源

    Docker容器中的Linux机器快速设置国内源 在Docker容器中启动了服务后,当我们进入容器内,经常很多命令无法使用,比如最基本的vim,可能都没有安装,因为容器内只安装应用服务,导致无法编辑配 ...

  6. linux创建数据库Oracle用户,linux下ORACLE数据库中创建新用户

     http://www.cnblogs.com/cloudwalf/archive/2008/09/04/1284033.html http://www.aiisen.com/oracle-lin ...

  7. docker容器中查看容器linux版本

    docker容器中查看容器linux版本 有时候需要登陆容器搞点事情,这时候需要看容器系统的版本,那么一条命令就能完成. 正确的姿势: cat /etc/issue 错误的姿势: cat /proc/ ...

  8. 容器安装java_在docker容器中安装Java(从宿主机向docker容器中拷贝文件)

    操作系统 [root@Optimus /]# uname -a Linux Optimus 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2 ...

  9. Docker容器中GUI软件的远程图形界面交互:mobaXterm+SSH,以脑影像处理软件FSL为例;FSL6.0.3完整安装与可视化;docker容器图形化;远程登录docker容器;

    前言   对docker容器中软件的操作,是基于命令行的,这就导致了习惯图形化界面的人比较难以使用docker,而它又是一个神器,所以很难受.一般情况下,可以给容器安装一个桌面环境,然后用类似VNC的 ...

最新文章

  1. AutoML 在推荐系统中的应用
  2. 抖音AI火了!以视频搜视频,不知小姐姐叫什么,也能搜出她的影像
  3. Android O: View的绘制流程(一): 创建和加载
  4. win service 2003 和 win service2008 区别
  5. Spring Reactor教程
  6. 极光推送JPush的快速集成
  7. 建立在线社区:Numenta
  8. centos8 yum安装mysql8 流程配置
  9. inDesign教程,如何创建、修改和使用母版页?
  10. pandas nat_利用pandas爬取研招网信息
  11. 纯js实现DIV拖拽
  12. Python3自然语言处理(2)——获得文本语料库和词汇资源
  13. 重装系统之制作U盘启动盘 - 一盘通装
  14. 什么是驻点和拐点_临界点、驻点、拐点的定义是什么?
  15. 元宵节要到了,给大家猜几个谜语
  16. php tdd,用phpUnit入门TDD
  17. qt 嵌入式linux 环境变量设置
  18. TCP/IP网络协议详解
  19. RDKit | 建立溶解度预测的LightGBM回归模型
  20. 基于javafx和虹软ArcFace的高校新生人脸录入与识别系统

热门文章

  1. MySQL数据库变量_数据库参数_MySQL变量_系统变量_用户变量
  2. linux 命令api,linux命令行下字典,使用有道API
  3. abstract类_【Java】类的结构 - Nemo
  4. 固体加热_干货分享| |固体氧化物燃料电池
  5. 突破100万年薪《多线程服务器端架构》
  6. http协议下需要服务器推送吗,HTTP/2.0 服务器推送实现
  7. go语言mysql操作_使用Go语言操作MySQL数据库的思路与步骤
  8. s905各种型号的区别_梯式桥架和槽式桥架的区别介绍
  9. android listview asynctask,Android精通之AsyncTask与ListView讲解
  10. 东师计算机应用基础在线作业,东师《计算机应用基础》15春在线作业1答案