进一步阅读

进一步阅读

我有一台旧的 Solaris 5.10 服务器。我正在将 tomcat 产品迁移到 Centos 7。Solaris 服务器上有两个帐户需要迁移。这两个帐户的 shell 都被标识为“/usr/local/bin/ftponly”。这看起来像一个简单的 SH 脚本,但我无法判断它是否随服务器一起提供,或者是否是以前的管理员(或供应商技术人员)编写的。该脚本和“/bin/sh”是“/etc/shells”中唯一的项目。

在新的Centos 7服务器上,我选择“/usr/sbin/nologin”作为两个用户的shell。旧服务器上的“/usr/local/bin/ftponly”是人类可读的脚本,但“/usr/sbin/nologin”似乎是二进制文件。新服务器上使用这两个用户帐户进行的 FTP 事务正在运行,但 SSH 被拒绝。

我可以开始了吗?还是对可用的 shell 有更大的考虑?我的主要 Linux 操作系统是 Ubuntu,因此 Centos 的一些内置安全功能有时让我摸不着头脑。

答案1

这不因操作系统而异。它因 FTP 服务器软件而异。

什么算作真人Unix 中的用户帐户通过编程方式确定并不简单。非个人用户帐户在系统帐户数据库中都可以有非空 shell 字段,这些字段指向真实的可执行文件(例如uucico)和有效的现有主目录(例如/var/spool/news)。

至少两个非匿名 FTP 服务器采用的约定是,如果系统帐户数据库中的记录中的 shell 字段非空并且具有可以在系统“用户 shell”表中找到的值(/etc/shells对于这两个表中的一个,getusershell()如果是另一个,则根据库函数)。

显然,仅从名称就可以看出,shell/usr/local/bin/ftponly正在利用这一点,以便让用户帐户在用户尝试执行某个操作时执行可能非常简单的发出消息并注销程序。终端登录,但这适用于文件传输协议登录。

nologin如果它位于用户 shell 表中,则会执行相同的工作。但这是特定于您正在使用的 FTP 服务器软件的。另一个FTP服务器软件在同一操作系统上将有完全不同的规则。

Bruce Guenter 的twoftpd例如,根据两个配置设置测试 shell 字段的值。如果匹配,客户端将获得该程序的只读 FTP 服务twoftpd-anon。如果它与另一个匹配,则客户端将通过该twoftpd-drop程序获得仅文件上传的 FTP 服务。

即使您可能使用的软件也可能具有影响此问题的复杂配置选项。例如在vsftpd中,check_shell选项、local_enable选项、pam_service_name选项以及该服务的PAM配置(包括模块的存在和配置pam_shells)都涉及到。

进一步阅读

相关内容