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

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

我有一台需要启动的计算机,但密码似乎是假的。此外,我无法安装驱动器进行写入,而且它是一个 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

答案1

你必须检查人密码:

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

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

答案2

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

root:8sh9JBUR0VYeQ:0:0:Super-User,,,,,,,:/:/bin/ksh
lp:VvHUV8idZH1uM:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh

这台计算机似乎使用传统的、基于 DES 的crypt(3)密码哈希。以现代标准来看,这个哈希值相当弱;如果您无法以任何其他方式获得root登录,您可能可以使用暴力恢复密码开膛手约翰或类似的软件。另外,从技术上讲,这不是 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

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

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

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

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

(shell 字段中的帐户/dev/null被锁定,无法rootsu该用户身份下运行程序,定期登录。如今,您更有可能看到/bin/false/sbin/nologin用于此目的;我怀疑在这个系统上后者不存在,前者是一个shell脚本。)

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

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

答案3

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

答案4

关于您的实际问题,请参阅 taliezin 的答案(并接受该答案;)

关于您的其他问题:在磁盘上搜索字符串 8sh9JBUR0VYeQ 以找出它所在的磁盘块。然后将该磁盘块添加到文件中,用已知的密码哈希(旧的 crypt)替换该字符串() 一个 - 相同的长度)并将磁盘块写回到旧位置 - 可能之前对磁盘进行了完整备份。由于此方法不会更改文件的大小,因此不需要更新文件系统元数据。

相关内容