我读到过,以非 root 用户身份运行 docker 容器在安全性方面是一种很好的做法,因此我在 Dockerfile 中创建了一个用户,并在 Dockerfile 末尾切换到该用户:
// Dockerfile code..
RUN useradd -m some_user
USER some_user
问题是,我想为这个用户分配一个密码,但我在useradd
手册页中看到:
-p, --password PASSWORD 加密密码,由 crypt(3) 返回。默认为禁用密码。注意:不建议使用此选项,因为列出进程的用户将看到密码(或加密密码)。
我不太明白为什么不推荐这样做。“列出进程的用户将可以看到”是什么意思?另外,如果所有可见的都是加密密码,我为什么要关心呢?
答案1
列出进程的用户是否可以看到?
当另一个终端上的某人可以执行
ps -ef
它将显示密码。
另外,如果可见的只是加密密码,我为什么要关心呢?
很简单:当涉及到基本安全时,我们不会妥协。
在单用户系统上,问题很小。甚至更少。但这是很好的做法:Linux 是一个多用户系统。您在自己的系统上所做的操作在拥有更多用户的系统上执行时并不好……这简直很糟糕。
我为什么要在乎
那是在征求意见。你决定这么做。正如文中提到的:不推荐。即使是写那行代码的人也不关心你是否使用它。否则你将无法将其用作-p
选项。mysql 也是一样:不推荐使用-p{password}
,那些维护人员实际上已经删除了该选项。这里也会发生同样的事情:几个版本中,你会收到一个警告,在某个时间点,该选项实际上被禁用,然后被删除。