在我的 Ubunut 服务器 12.04 LTS 机器上,我尝试添加一个只有 sFTP 或 FTP 访问权限的用户。我们暂时称他为“Jim”。Jim 只需要访问目录 /var/www/example.com。
到目前为止,我已经尝试了 vsftpd 和 openSSH,但都无济于事。
我已正确安装 OpenSSH,并且可以使用 sFTP 来管理自己的帐户。但我可以访问所有目录并使用 SSH,而对于 Jim 来说,这两项功能都无法实现。
我尝试过几个教程,包括:
目前,我有一个 Jim 的用户帐户,但他无法获得 SSH 访问权限。我将他的主目录更改为 /var/www/example.com。该目录来自 www-data:users,Jim 属于用户组和 sftponly 组。没有对 sshd_config 进行任何更改来限制 Jim 的选项。
当我尝试添加Match User jim
或Match Group sftponly
提供任何选项(如ChrootDirectory
SSH)时,将无法重新启动。当我重新启动服务时,我没有收到任何通知,但使用ps -ae | grep ssh
ssh 查看时未列出。如果我删除Match
指令,SSH 将正确重新启动。有人可以提示我如何完成我的 sFTP 或 FTP 设置吗?
我希望有这样一种设置,其中 ftp 用户不是本地用户而是单独管理的虚拟用户。
答案1
你的做法相当……错误。不是说这行不通,但这并不容易。你正在与一些相当严重的违约作斗争。
我推荐两件事。首先从头开始创建用户主目录,使用 adduser 或其他任何方式,您可以使用 -d 标志指定主目录。因此您可以这样做adduser jim -d /var/www/jim
如果不付出大量努力,多个用户之间共享主目录将无法实现。
接下来,要限制 scp/sftp,请将其登录名更改为 /bin/nologin。这将阻止他们使用 ssh 或本地登录。
最后,认真考虑一下为什么要 chroot。为了 chroot,您实际上需要为每个主目录安装一个基本系统,其中包含 ~/bin ~/lib 和 ~/etc 中的一些内容,以及可能还有很多其他内容。如果您确实必须 chroot ssh 会话,您可以看看在这个链接,但我强烈建议不要在公共 ssh 服务器之外的任何服务器上这样做。即便如此,我个人也希望有一个非常好的理由这样做。请记住,如果您不希望他们访问目录,您可以直接这样做chmod o-r
(这是您的第一个链接所建议的)。
如果您甚至考虑使用 chroot,那么请远离 FTP。FTP 通常会被 chroot,但 FTP 并不安全,因此如果您试图保护某些东西,请不要使用 FTP。如果金库的其余部分是用纸板制成的,那么配备激光和守卫机器人的 90 英尺厚的银行金库门将无济于事。