当我尝试输入任何帐户的密码时,身份验证失败。我使用 ssh 登录到我的 AWS EC2 实例。
过了一会儿,我检查了存储用户信息的文件的权限,发现了一些奇怪的情况。
我认为这不正常:
$ ls -l /etc/passwd /etc/shadow
结果如下:
-rw-r--r-- 1 root root 1402 Oct 7 10:58 /etc/passwd
---------- 1 root root 838 Oct 7 10:58 /etc/shadow
这可能是问题的原因,因为没有用户可以读/写该文件。在我看来,正常的输出/etc/shadow
应该是这样的。
-rw-r----- 1 root root 838 Oct 7 10:58 /etc/shadow
这可能是问题所在吗?我该如何解决它?
操作系统配置:
NAME="Amazon Linux AMI"
VERSION="2015.09"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2015.09"
PRETTY_NAME="Amazon Linux AMI 2015.09"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2015.09:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
Amazon Linux AMI release 2015.09
答案1
Amazon Linux 是 RHEL 克隆,使用 RPM 定义已安装文件的权限。您可以使用该rpm -qf /etc/shadow
命令来确定所有权。这表明它/etc/shadow
是包的一部分setup
。然后,您可以使用 RPM 数据库来查询该文件的权限。rpmls
rpmdevtools 包中有一个程序可以执行此操作,但如果您知道正确的语法,则可以使用简单的 RPM 来完成此操作:
$ rpm -q --qf='[%-11{filemodes:perms} %-8{fileusername} %-8{filegroupname} %{filenames}\n]' setup | grep /etc/shadow
---------- root root /etc/shadow
这表明 /etc/shadow 的模式应该是 0000。您不应该尝试将其更改为其他模式。 PAM 堆栈完全能够读取影子文件。你一定还有其他问题。
答案2
就像 @lese 说的,尝试一下:
chmod 640 /etc/shadow
chown root:shadow /etc/shadow
如果它给你“不允许操作”尝试:
lsattr /etc/shadow
如果显示----i--------e-
则再次运行chattr -i /etc/shadow
并 chmod 。
答案3
是的,你是对的,你的权限/etc/shadow
似乎是错误的,但这取决于你运行的发行版。请澄清这一点,可以通过以下命令找到:
# cat /etc/*release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.2
DISTRIB_CODENAME=rafaela
DISTRIB_DESCRIPTION="Linux Mint 17.2 Rafaela"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
cat: /etc/upstream-release: Is a directory
根据我的发行版(实际上是 Linux Mint 17.2 Rafaela),默认和正确的权限是: -rw-r----- 640 root Shadow/etc/shadow
您可以尝试通过使用 root 超级权限运行以下命令来修复它们:
chmod 640 /etc/shadow
chown root:shadow /etc/shadow
答案4
看起来像是影子配置问题,
你可以尝试一下shadowconfig on
命令