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

eri*_*icd 1 security linux ubuntu

我正在制作一个运行 LAMP 的网络服务器,并希望使用 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
Run Code Online (Sandbox Code Playgroud)

除了root,sshderic,我不应该禁用哪些?www-datasshd怎么样?

Sve*_*ven 5

您对登录系统的工作方式和这些帐户的目的有一些误解。

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

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

在以下示例中,用户sshd被禁用,但sven设置了加密密码。您不能以 user 身份登录sshd,既不能通过控制台也不能通过 ssh 会话,但可以登录 for sven

sshd:*:15533:0:99999:7:::
sven:$6$ckP43saI2$Xjoxh52LLJxz2VXa.:15538:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

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


为什么要分离/etc/passwd/etc/shadow

很多程序出于各种目的需要访问用户数据库,但是赋予读权限/etc/passwd让每个人都可以读取所有用户的加密密码,这是非常不安全的,特别是在很长一段时间内密码的加密非常薄弱。这是通过将密码放入单独的文件来解决的,该文件/etc/shadow只能由 root 读取。