www-data用户需要一个真正的shell吗?

有趣的是,在我的Ubuntu衍生产品中安装了apt nginx, www-data用户有一个shell:

 $ cat /etc/passwd www-data:x:33:33:www-data:/var/www:/bin/sh 

这不应该被设置为像/bin/false ? 即使用户无法login,默认情况下为系统用户提供一个shell是不是很危险?

那么/bin/false (或者如果你是一个积极的人, /bin/true )是一个真正的shell – 它不是一个交互式的 shell :-)在一些系统上也有/sbin/nologin ,它们有相同的用途。

至于你的Apache用户是否需要一个交互式shell(类似于bash ),其他人所说的答案是“通常,不是”。
将Apache用户的shell设置为非交互式的通常是很好的安全实践(实际上,所有不需要交互式login的服务用户都应该将其shell设置为非交互式)。

参观像你这样的现有环境,尝试一下,看看是否有什么突破。
如果从现在开始使用非交互式shell,什么都不rest。
如果东西断裂,请尝试修复它, 而不要恢复交互式shell 🙂