通过密码和影子文件阻止用户登录的方法有什么区别?

通过密码和影子文件阻止用户登录的方法有什么区别?

https://unix.stackexchange.com/a/314732/674

与用户帐户相反,服务帐户通常没有“正确的”登录 shell,即它们有/usr/sbin/nologin作为登录 shell(或者,回到过去,/bin/假)。此外,服务帐户通常被锁定,即无法登录(对于传统的 /etc/passwd 和 /etc/shadow 可以通过以下方式实现)将密码哈希设置为任意值,例如 * 或 x)。

它似乎提供了几种阻止用户登录的方法。

  • /etc/passwd: nologin, /bin/false, /bin/true ,/dev/null`的 shell 字段;

  • 密码字段/etc/shadow*x

他们的目的有什么区别?他们都达到同样的目的吗?

谢谢。

答案1

它们有些不同。如果某些方式允许用户无需密码即可登录(例如使用 SSH 和授权密钥),则具有“错误”密码哈希的用户仍可能登录。但如果没有有效的 shell,这是不可能的。

另一方面,在某些情况下,用户可能会在没有 shell 的情况下被授予某些访问权限(我正在考虑 IMAP 或 SMTP 服务器)。然后,具有“良好”密码哈希的用户可以使用该服务,即使他没有有效的登录 shell。

答案2

仅仅因为做事有多种方法,并不意味着有一个真正的目的。系统用户和普通用户之间存在一些细微差别。

/usr/sbin/nologin是一个简单的“外壳”,旨在通过立即退出来拒绝访问。任何程序都可以作为 shell 运行(只要它列在 /etc/shells 中),如果该程序立即退出,那么用户将无法访问系统。这就是为什么类似的东西/bin/false也有效。

在影子文件中使用星号作为密码正是 Linux 表示锁定帐户密码的方式。如果您passwd -l username以 root 身份运行,它将使用此方法锁定帐户。

另一种方法是通过将过期日期设置为 1 来使帐户过期。这可以通过运行以下命令来完成:

usermod -L -e 1 username

相关内容