我想要设置一个 Debian 服务器,以便不同的用户拥有自己的域,只有他们才能编辑,例如:
/home/
+ /bob/www/
+ oldsocks.com/
+ nosepickers.org/
+ /joe/www/
+ no-fun.com/
+ whatever.net/
Bob 应该能够通过 SFTP 进入并编辑他的内容,Joe 也一样。当然,问题是 nginx 和 php-fpm 以 的身份运行www-data
。使用 Apache,我能够安装apache-mpm-itk
包并使用AssignUserID
指令使每个虚拟主机都有自己的 uid/gid。我认为 nginx 不存在这样的事情。
我的经验不足,不知道如何设置与 nginx 配合使用的上述结构。我想我必须满足于所有文件归谁所有,www-data
并找到某种方法将每个 SFTP 用户锁定到他们自己的www
文件夹(ssh jail?)。我愿意接受建议。
旁注:理想情况下,每个用户www
在通过 SFTP 访问时都会被锁定在他们的文件夹中,但通过 SSH 访问时则不会。不知道这是否可能。
答案1
其中一个解决方案是将 ProFTPd 与 mod_sftp 一起使用,如下所示:
SFTPEngine on
SFTPLog /var/log/sftp.log
Port 2222
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPCompression delayed
MaxLoginAttempts 6
DefaultRoot ~
Umask 002
CreateHome on 770 dirmode 770
并将 joe 和 bob 的用户组更改为www-data
。这样您的 Web 服务器将能够访问文件,因为它们是www-data
组可读写的。DefaultRoot
将把用户囚禁在他们的主目录中,所有新创建的文件和文件夹都将具有www-data
组。