如果我是 Web 服务器,我可以关闭 passwd 文件中哪些帐户的 shell?

如果我是 Web 服务器,我可以关闭 passwd 文件中哪些帐户的 shell?

我正在制作一个运行 LAMP 的 Web 服务器,并想使用 SSH 访问它。

当我打开文件时passwd,我会看到所有这些帐户,我想知道我可以放入哪些帐户false。我有以下帐户:

root, daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy, www-data
backup, list, irc, gnats, nobody, libuuid, syslog, messagebus, whoopsie, 
mandscape, sshd, eric

除了rootsshderic,哪些我不应该禁用?www-data和怎么样sshd

答案1

您对登录系统的工作原理以及这些帐户的用途都存在一些误解。

首先,除 和 之外,大多数这些帐户root都是eric系统帐户,不供人们登录,但允许不同的服务以普通用户身份运行,而无需帐户root拥有的所有权限。例如,OpenSSH 守护程序通常以用户 的身份运行sshd,因此如果有人设法控制该sshd进程,它将只允许他访问和修改相应用户sshd有权限的文件。

其次,禁用用户登录的首选方法是禁用其密码,而不是将登录 shell 更改为/bin/false。在现代 Linux 系统上,用户数据库实际上由两部分组成,/etc/passwd/etc/shadow。密码存储在 中(请参阅下文了解原因),如果 中的密码字段为 ,/etc/shadow则帐户将被禁用。/etc/shadow*

在以下示例中,用户sshd被禁用,而 则sven设置了加密密码。您无法以用户 身份登录sshd,无论是通过控制台还是 ssh 会话,但 的登录sven将起作用。

sshd:*:15533:0:99999:7:::
sven:$6$ckP43saI2$Xjoxh52LLJxz2VXa.:15538:0:99999:7:::

最有可能的是,你会发现全部系统上除eric(可能还有root)之外的所有用户都以这种方式被禁用,这意味着您想要完成的事情已经由开发人员完成了。此外,您会发现许多帐户的登录 shell 也已设置为/bin/false/etc/passwd这意味着即使是 root 也无法使用“su”切换到这些帐户。


为什么要将/etc/passwd和分开/etc/shadow

许多程序需要访问用户数据库以用于各种目的,但授予读取权限允许/etc/passwd每个人都可以读取所有用户的加密密码,这是非常不安全的,尤其是密码加密长期以来一直很薄弱。通过将密码放入单独的文件中解决了这个问题/etc/shadow,该文件只能由 root 读取。

相关内容