在 Linux 系统上,默认情况下有很多用户:daemon、bin、sys、games 等。
根据我的 /etc/passwd,这些用户中的大多数都分配了一个 shell (/bin/sh),这对我来说似乎有点不安全。我天真的想法会说:只给那些用户一个可以登录服务器的shell。
我的想法错了吗?
如果不是完全错误的话:我可以禁用“daemon”和“www-data”的 shell 而不会产生副作用吗(例如,系统无法启动或 Apache PHP 无法执行系统调用)?
补充:我的发行版是 Debian Squeeze。
感谢您的提示!
我很好奇您在哪个 Linux 发行版中看到了这一点,因为我所知道的大多数发行版(我刚刚在 CentOS 和 Gentoo 上验证了这一点)都为您所描述的此类用户“禁用”了 shell。
所以,是的,将 shell 设置为
/bin/false
or是安全的/sbin/nologin
。但也许首先弄清楚为什么他们没有首先设置为该值。也许这是特定于您正在查看的系统的东西。对于 Debian(正如我在第一条评论中提到的那样),还有一个可能相关的问题。您可以看到其他人也认为这是一个错误(错误 274229、错误 581899、错误 330882)
您询问的那些用户不是直接登录,而是在他们下面运行程序/进程(如果有的话)。我想不给它们分配 shell 无论如何都会有伤害。但是一个很好的检查是检查 /etc/shadow 文件并查看这些帐户的第二个字段是否为 X(划掉)。这意味着他们将无法登录并获得 shell。
所以,我的建议是先检查 /etc/shadow 文件,然后如果你愿意,继续为这些用户禁用 shell,让系统照常运行,看看是否有任何中断。如果没有,那么您就可以开始了。如果出现问题并且您发现它确实是为了将 shell 更改为 /bin/false (我非常怀疑会发生这种情况)然后恢复为原始状态。那时,我们需要考虑更多的安全插件 :)