![如何将创建的用户限制到某个目录并禁用 VSFTPD 的 SSH](https://linux22.com/image/805064/%E5%A6%82%E4%BD%95%E5%B0%86%E5%88%9B%E5%BB%BA%E7%9A%84%E7%94%A8%E6%88%B7%E9%99%90%E5%88%B6%E5%88%B0%E6%9F%90%E4%B8%AA%E7%9B%AE%E5%BD%95%E5%B9%B6%E7%A6%81%E7%94%A8%20VSFTPD%20%E7%9A%84%20SSH.png)
我已经在 Google 上搜索了好几个小时,但似乎无法直接找到问题的答案。我找到了很多教程,但很多都很模糊。
无论如何:
我最近在我的服务器上设置了 VSFTPD。我运行的是 CentOS 6.4(如果这有任何区别的话)。我使用 useradd 创建了用户“test”,它可以成功登录(使用 SSH 和 FTP)然而,这就是我想要做的:
创建用户(使用 useradd)以使用 VSFTPD 并禁用他们的 SSH。使用这些用户将他们限制在他们的 Web 目录中(例如 /var/www/domain/example.com),以便他们可以使用 FTP 登录并在示例中上传、编辑、删除和创建目录。
作为参考,这是我的配置文件:
匿名启用=否
本地启用=是
写入启用=是
本地 umask=022
dirmessage_enable=是
xferlog_enable=YES
连接端口 20=是
xferlog_std_format=是
chroot_local_user=是 chroot_list_enable=是
听=是
pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
非常感谢。如果我的解释不够详细,请原谅。我不知道该如何措辞。
答案1
我假设您主要想问的是如何阻止用户使用 SSH - 据我所知 - 根据 chroot_local_user 选项设置为是,您的 vsftpd 配置应该可以正常运行。
您可以简单地将用户的 shell 更改为 /bin/false 之类的东西(确保将其添加到 /etc/shells 以防止 ftp 服务器可能出现的问题),然后您的用户将能够通过 SSH 进行身份验证,但他们只会被转储回去。
或者你可以在 /etc/ssh/sshd_config 中使用 AllowUsers/DenyUsers - 但每次更改允许登录的用户时,这可能需要更新 ssh 配置,而你可以使用 useradd 命令将用户的 shell 设置为 /bin/false
useradd -s /bin/false <everything else>
然后,如果您稍后想要授予他们 SSH 访问权限,您只需使用 usermod 将他们的 shell 更改为 bash(例如)。