FTP帐号只有一个目录

背景信息:

我正在使用Serverpilotpipe理我的Ubuntu服务器,它不提供任何FTP服务。

  • 有一个用户: serverpilot
  • 使用主目录: /srv/users/serverpilot/
  • 有一个网站运行在这个目录中: /srv/users/serverpilot/apps/website/public/

我想要的是:

现在我想拥有一个只能读写这个目录的FTP帐号: /srv/users/serverpilot/apps/website/public/ftpdir/

我试过了:

  • 我已经安装了vsftpdsudo apt-get install vsftpd
  • 创build一个新的用户目录为家: sudo useradd -m -d /srv/users/serverpilot/apps/website/public/ftpdir ftpuser (这可能不是一个好主意,有一个用户的主目录在另一个用户主目录)
  • 我用sudo passwd ftpuser更改了密码
  • 使用sudo vi /etc/vsftpd.conf编辑默认的vsftpdconfiguration
    • local_enable=YES所以ftpuser可以用作ftplogin
    • write_enable=YES用户可以写入
    • chroot_local_user=YES不能访问它的主目录之外的任何东西
    • pam_service_name=ftp因为我得到一个530login不正确的错误
  • 并打开我的防火墙: sudo ufw allow 21/tcp

问题:

  • ftpuser旁边的其他用户也可以用作FTPlogin。 我只想要1个ftp用户,并且不允许其他系统用户使用FTP。
  • ftpuser也可以通过SSH连接到服务器。
  • 我得到一个553 error: could not create file试图上传553 error: could not create file553 error: could not create file错误,要解决这个问题我遇到了这个问题: https : //askubuntu.com/a/320186但我不认为这是正确的因为该文件应该由serverpilot用户拥有,而不是ftpuser用户。 在serverpilot用户下运行的网站应该处理上传的文件。

我以前如何解决这个问题:

在过去的另一台服务器上,我更改了目录所有权,添加了这些额外的vsftpdconfiguration选项后,它终于可以正常工作:

 file_open_mode=0775 local_umask=022 allow_writeable_chroot=YES pam_service_name=vsftpd 

但在那个服务器上,我处理上传的文件,因为所有权的问题,所以我在使用file_get_contents() PHP函数来获取文件通过networking,而不是直接访问它们在服务器上,这不是很好。

最后一个问题:

我怎样才能简单地有一个FTPlogin,可以读取和写入用户主目录中的所有权保留在主目录所在的用户的目录?

对不起,重复,我也问过这个问题上的Ubuntu没有任何答案: https : //askubuntu.com/questions/774701/ftp-account-for-just-one-directory也许更多的运气在这里