禁用用户“daemon”的 shell (/bin/false)

禁用用户“daemon”的 shell (/bin/false)

在 Linux 系统上,默认情况下有很多用户:守护进程、bin、sys、游戏等。

根据我的 /etc/passwd,大多数用户都分配了一个 shell (/bin/sh),这对我来说似乎有点不安全。我天真地认为:只给那些可以登录服务器的用户一个 shell。

我的想法是错误的吗?

如果不是完全错误:我可以禁用“daemon”和“www-data”的shell而不会产生副作用(例如系统无法启动或Apache PHP无法执行系统调用)吗?

添加:我的发行版是 Debian Squeeze。

谢谢你的提示!

答案1

我很好奇您在哪个 Linux 发行版中看到了这种情况,因为据我所知(我刚刚在 CentOS 和 Gentoo 上验证了这一点)大多数发行版都像您所描述的那样“禁用”了此类用户的 shell。

因此,是的,将 shell 设置为/bin/false或 是安全的/sbin/nologin。但首先要弄清楚为什么它们一开始没有设置为该值。也许这是您正在查看的系统所特有的。

对于 Debian(正如我在第一条评论中提到的),有另一个问题这可能与此有关。您可以看到其他人也认为这是一个错误(错误 274229错误 581899错误 330882

答案2

您询问的那些用户不是直接登录的,而是在其下运行程序/进程(如果有的话)。我认为不为他们分配 shell 无论如何都会有害。但一个好的检查方法是检查 /etc/shadow 文件并查看这些帐户的第二个字段是否为 X(划掉)。这意味着他们将无法登录并获取 shell。

因此,我的建议是先检查 /etc/shadow 文件,然后如果愿意,继续禁用这些用户的 shell,让系统照常运行,看看是否有任何问题。如果没有,那么你就可以开始了。如果出现问题,并且你发现它确实是由于将 shell 更改为 /bin/false(我非常怀疑会发生这种情况)而导致的,那么请恢复到原始状态。那时,我们将需要考虑进一步的安全插件 :)

相关内容