我在网上find了这个,在FreeBSD上安装了一个FTP服务器。
(请参阅: http : //osdir.com/ml/freebsd-questions/2005-12/msg02392.html )
有人可以解释为什么这是? 为什么拿一个nologin的副本放在/ etc / shells中可以解决这个问题?
/etc/shells包含系统认为(不受限制)shell的二进制文件列表。 这意味着任何已经将其中一个二进制文件configuration为其shell的用法被假定为具有对系统的完全访问权(意味着只要它们具有适当的权限,它们就可以执行任何命令)。
最直接的结果是他们可以使用chsh来改变他们configuration的shell。
如果用户configuration了一个不在此列表中的shell,那么他们的系统会假设他受到某种限制。 在chsh的情况下,这意味着用户不能更改该值。
其他程序可能会查询该列表并应用类似的限制。
因此,通过在/etc/shells放入nologin ,你可以有效地说:“任何有nologin作为shell的用户都被认为是一个完全不受限制的用户”。 这几乎可以肯定与nologin 意思完全相反。
ftp不提供标准的shell,它提供了一个ftp接口。 有一个账号的用户,即使他们的shell指向nologin,仍然可以访问ftp接口。 此外,他们仍然可以访问您提供的任何其他不需要shell的服务(例如,如果您有一个依赖于帐户身份validation但不支持shell访问的http Web界面)。 这不一定是你的系统的后门,而是服务的后门。