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