我尝试使用 sshd 和/或 pam 为 sftp 设置虚拟用户。
我的文件夹结构如下:
/
|-- var
| +-- www
| +-- site1
| +-- folder_1
| +-- folder_2
| +-- site2
| +-- folder_1
| +-- folder_2
每个站点都有一个 Linux 用户(例如 site1、site2),他们属于同一个组(site1、site2),主目录为 eg /var/www/site1
。umask 为 0022,eg 的所有文件和(子)文件夹site1
都有UID=site1
anf GID=site1
,不应更改。
我可以设置 sshd,以便每个 Linux 用户都能获得自己的主目录,例如,/var/www/site1
对于用户来说, sftp 根文件夹就是主目录site1
。配置/etc/ssh/sshd_config
看起来像这样
(只有最后几行,其余的是默认配置):
UsePAM yes
Subsystem sftp internal-sftp
Match User *,!root
ChrootDirectory %h
ForceCommand internal-sftp -u 0022
AllowTcpForwarding no
现在我想添加一个虚拟用户(如果不需要,则没有新的Linux用户或组),其中sftp根文件夹/var/www/site1/folder1
例如用于sftp用户site1_folder1
。该用户应该是该用户的子用户site1
,并使用相同的UID和GID,但只能访问其子目录。
我该如何更改我的配置,以及在哪里可以添加虚拟用户?
我在 Ubuntu 16.04 LTS、LAMP 服务器上需要这个
答案1
ProFTPd 允许您创建虚拟 FTP/SFTP 用户并将其映射到真实用户的 uid 和 gid。
答案2
没有虚拟用户这样的东西,任何连接的人都需要一个用户帐户,并且您可以在他们各自的主目录中 chroot 他们。