问题

在某些情况下,Docker 容器中的普通用户无法运行“su”命令来切换用户。
执行“su”命令时,返回以下错误。

$ su 
Password: [entering correct password]
su: Authentication failure
on  it road.com

解决方案

容器内的 /usr/bin/su 中可能缺少粘性权限。
使用 root 权限,我们可以修复如下:

  1. 首先检查/usr/bin/su二进制文件的当前权限。
# ls -l /usr/bin/su
-rwxr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su

正如我们在上面的输出中看到的,缺少粘性位权限。

  1. 在/usr/bin/su文件中添加sticky bit权限如下:
# chmod u+s /usr/bin/su
  1. 再次验证权限并检查权限字段末尾的“x”标志。
# ls -l /usr/bin/su
-rwsr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
  1. 尝试在 docker 容器内再次执行 su。
$ su - postgres
Password:
Last login: Tue Aug 6 12:13:57 JST 2019 on pts/1
postgres@[hostname] $
在 Docker 中“su:身份验证失败”
日期:2020-09-17 00:14:23 来源:oir作者:oir