/ usr / sbin / nologin作为登录shell是否出于安全目的?
在我的/etc/passwd文件中,我可以看到www-dataApache所使用的用户以及各种系统用户都具有/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 …