之间的区别!vs!与/ etc / shadow中的*


38

Linux /etc/shadow文件中的第二个字段代表密码。但是,我们看到的是:

  1. 一些密码字段可能会有一个感叹号

    <account>:!:.....
    
  2. 某些密码字段可能会有双感叹号

    <account>:!!:.....
    
  3. 一些密码字段可能带有星号

    <account>:*:.....
    

通过对互联网的一些研究,并通过该线程,我可以理解,这*意味着从未建立密码,!意味着被锁定。

有人可以解释双重感叹号(!!)是什么意思吗?与(!)有什么不同?


您正在使用哪个发行版?
muru

嗨,Muru,您是Unix的新手,它正在尝试创建一个可在RHEL 6.6和HP-UX B.11.23上运行的脚本
JavaTec

3
“按照惯例,不打算登录的帐户(例如bin,daemon,sshd)在密码字段中仅包含一个星号。请注意,'*'没什么特别的,它只是许多字符中的一个不能以有效的加密密码出现(请参阅crypt(3))。” - OpenBSD系统手册页的passwd(5) 。我希望!要么 !!从技术上来说,无论是有效的passwd文件还是登录名,都没有什么不同。但是,某些工具可能有特殊支持。
TOOGAM 2015年

1
不要使用BSD的doco作为参考。他们的帐户数据库处理问题的方式不同,甚至没有/etc/shadow文件。 也不要在评论中添加答案。☺
JdeBP

Answers:


31

两者都是“!” 和“!” 在密码字段中显示表示帐户已被锁定。

可以在以下文档中阅读“ !!” 在阴影中的帐户条目中,表示已创建用户帐户,但尚未提供密码。默认情况下,在被系统管理员提供初始密码之前,该密码已被锁定。

https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/4/html/System_Administration_Guide/s2-redhat-c​​onfig-users-process.html


4
在Red Hat系统上可能是正确的,但在其他地方则不一定如此-在Ubuntu或Arch Linux上,没有密码的新创建帐户仍然只有!,而不是!!
muru

2
确实,我从未见过“ !!” 在Debian系统中。我猜想OP正在使用基于RH的系统或SuSE。
Rui F Ribeiro

感谢您的快速回答,Rui提供的上述说明对hp-ux也适用吗?
JavaTec

4
@JavaTec不一定:我认为所有/etc/shadow具有相同字段的unice都具有相同的字段,但是密码字段存储非密码信息的方式有所不同。从shadow手册页开始,检查HP-UX文档。
吉尔(Gilles)'所以

1
HP-UX甚至/etc/shadow直到最近才出现:在HP-UX 11.11之前,这些选项是经典的无阴影/etc/passwd或“受信任的计算基础”,它们将每个用户的密码哈希和其他帐户信息存储在名为的单个文件中/tcb/files/auth/<initial>/<username>,该文件只能由root读取。在HP-UX 11.11中,它/etc/shadow是作为可选的附加功能引入的,在11.23中,它是基本OS中的一个选项,而在11.31中,TCB最终被弃用。
telcoM

10

也可能值得注意,<account>::.....这意味着不需要密码(空密码)。

如果要创建仅ssh的用户,则可以用于<account>::0:0:99999:7:::要求该用户在首次登录时设置其密码(即,他们用于sudo)。


8
当心这一点。空字段表示没有密码,而您至少在控制台中只需按ENTER键即可登录。
Rui F Ribeiro'5

man shadow关于加密密码字段:“此字段可能是空的,在这种情况下,没有密码是必需的,因为指定的登录名进行鉴定。” <-将此字段留空会导致开设帐户,确实应该避免这种情况!
Laas

请注意,许多SSH实施默认情况下sudo /usr/sbin/sshd -T| grep empty会阻止使用空密码帐户登录:会返回:“ permitemptypasswords no”
Brian Huntley
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.