在我的/etc/passwd
文件中,我可以看到www-data
Apache所使用的用户以及各种系统用户都具有/usr/sbin/nologin
或/bin/false
作为其登录外壳。例如,以下是几行:
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
因此,如果我尝试交换这些用户中的任何一个(有时我想检查我对他们的权限的了解,并且可能还有其他至少至少一半的理智的原因),则我将失败:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
当然,这不算什么麻烦,因为我仍然可以通过这样的方法为他们启动外壳程序:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
但这让我想知道拒绝这些用户的登录外壳将达到什么目的。环顾互联网进行解释,许多人声称这与安全性有关,并且每个人似乎都同意更改这些用户的登录外壳在某种程度上是个坏主意。这是引号的集合:
将Apache用户的shell设置为非交互式通常是一种很好的安全做法(实际上,所有不必交互式登录的服务用户都应将其shell设置为非交互式)。
- https://serverfault.com/a/559315/147556
用户www-data的shell设置为/ usr / sbin / nologin,这是有充分理由的。
- https://askubuntu.com/a/486661/119754
[系统帐户] 可能是安全漏洞,尤其是在启用了外壳程序的情况下:
坏
bin:x:1:1:bin:/bin:/bin/sh
好
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
出于安全原因,我创建了一个没有登录外壳程序的用户帐户来运行Tomcat服务器:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
尽管这些帖子一致同意不给系统用户真实的登录外壳对安全性有好处,但没有一个可以证明这一主张是正当的,我无法在任何地方找到对此的解释。
我们试图通过不给这些用户真实的登录Shell来保护自己免受什么攻击?