passwd 文件中的星号是什么意思?

j0h*_*j0h 16 users password data-recovery

我有一台需要启动的计算机,但密码似乎是假的。另外我不能挂载写驱动,而且它是一个mips处理器,所以我不能把它放在另一台机器上运行它。

无论如何,他们的passwd文件有一些看起来像这样的用户,用户名后面有一个星号。这意味着空白密码还是什么?

root:8sh9JBUR0VYeQ:0:0:Super-User,,,,,,,:/:/bin/ksh
sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh
diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh
daemon:*:1:1:daemons:/:/dev/null
bin:*:2:2:System Tools Owner:/bin:/dev/null
uucp:*:3:5:UUCP Owner:/usr/lib/uucp:/bin/csh
sys:*:4:0:System Activity Owner:/var/adm:/bin/sh
adm:*:5:3:Accounting Files Owner:/var/adm:/bin/sh
lp:VvHUV8idZH1uM:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh
nuucp::10:10:Remote UUCP User:/var/spool/uucppublic:/usr/lib/uucp/uucico
auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh
dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh
rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh
Run Code Online (Sandbox Code Playgroud)

tal*_*zin 23

你必须检查man passwd

如果加密密码设置为星号(*),用户将无法使用 login(1) 登录,但仍可以使用 rlogin(1) 登录,运行现有进程并通过 rsh(1)、cron 启动新进程(8)、at(1) 或邮件过滤器等。尝试通过简单地更改 shell 字段来锁定帐户会产生相同的结果,并且还允许使用 su(1)。

通常*密码字段中的帐户没有密码,例如:禁用登录。这与没有密码的帐户不同,这意味着密码字段将为空,这几乎总是一种不好的做法。


zwo*_*wol 13

带有密码的帐户是在第二个字段中带有大量 base64 乱码的帐户:

root:8sh9JBUR0VYeQ:0:0:Super-User,,,,,,,:/:/bin/ksh
lp:VvHUV8idZH1uM:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh
Run Code Online (Sandbox Code Playgroud)

这台计算机似乎正在使用传统的、基于 DES 的crypt(3)密码哈希。按照现代标准,这个哈希值非常弱;如果您无法以任何其他方式获得 root 登录,您可以使用John the Ripper或类似软件强力恢复密码。此外,从技术上讲,这不是 base64,而是一种较旧的类似编码,但您可能不必担心。

其他答案中提到的:*:和之间的区别:!:太新,与您的问题无关。在这么旧的 UNIX 系统上,密码字段中只能出现三种不同的内容:

alice::1001:1001:Alice Can Log In Without A Password:/home/alice:/bin/ksh
bob:WSy1W41d4D1Gw:1002:1002:Bob Must Supply A Password:/home/bob:/bin/ksh
carol:ANYTHING ELSE:1003:1003:Carol Cannot Log In At All:/home/carol:/bin/ksh
Run Code Online (Sandbox Code Playgroud)

如果密码字段的内容为空,则可以不使用密码登录。

如果该字段的内容是crypt某个密码的有效哈希值,则您可以使用该密码登录。

否则您无法以该用户身份登录。*只是常规使用的东西 - 它在视觉上显然不是有效的密码哈希。它可能是由编写passwd程序的人选择的。

(在密码文件中拥有无法登录的用户 ID 的意义在于他们仍然可以拥有文件,他们仍然可以拥有cron工作,并且守护进程可以使用setuid该身份。实际上,运行所有守护进程是最佳实践(不必root在此类用户 ID 下作为)运行,这样您就可以在一定程度上保证只有守护程序在该身份下运行。)

(与该账户/dev/null的shell字段被锁定反对root使用su运行在该用户的身份程序,以及。常规登录现在,你更可能多的看到/bin/false/sbin/nologin用于该目的;我怀疑,在这个系统上后者则不存在,前者是一个 shell 脚本。)

(Bob 的密码是“bobpassw”,使用旧算法加密,但在现代 Linux 机器上;对于相同的密码和盐,它可能不是您的计算机生成的密码。旧算法被认为不好的原因之一不再是密码中的 8 个字符的硬上限。)

(我知道这个系统真的很旧,因为它使用基于 DES 的密码散列,因为它没有使用影子文件,并且因为 root 的 shell/bin/ksh而不是更新和更符合人体工程学的任何东西。)


Mar*_*rco 8

这意味着它无法直接登录。它是用于运行服务或用于 rlogin 的用户。检查https://en.wikipedia.org/wiki/Passwd#Password_file