ProFTPD虚拟用户目录

好吧,我试图复制一个虚拟主机公司的基本设置在这里通过validation虚拟用户通过SQL和redirect/监狱他们的目录。 我已经完成了这里的大部分目标, 除了redirect/监禁他们的目录。

这些目录存储在/home/ftp ,这就是DefaultRoot的设置。 我希望每个用户都有自己的目录。 在SQL中设置homedir没有任何效果。 login到任何用户的FTP后,它将login到DefaultRoot ,不存在目录jailing或redirect。

我如何完成这最后的任务?

尝试注释掉DefaultRoot我认为它可能覆盖从数据库后端读取的值。

编辑:

如果DefaultRoot被设置,并且除了〜以外的任何东西,那么用户将被关在一个以DefaultRoot为根的树中。

如果DefaultRoot是〜那么用户将被关在一个树的根目录下。

除了像上面提到的那样设置DefaultRoot〜,你的SQLconfiguration是什么样的 – 你真的从数据库中提取它吗?

 DefaultRoot ~ <IfModule mod_dso.c> LoadModule mod_sql.c LoadModule mod_sql_mysql.c </IfModule> SQLLogFile /var/log/proftpd/mod_sql.log PersistentPasswd off AuthPAM off AuthUserFile /some/path/to/dummy/passwd.ftp AuthGroupFile /some/path/to/dummy/group.ftp AuthOrder mod_sql.c mod_auth_file.c SQLConnectInfo proftpd@localhost:3306 userdatabase password SQLAuthTypes Backend Crypt Plaintext OpenSSL SQLUserInfo user user_id password NULL NULL ftp_homedir NULL SQLAuthenticate users SQLDefaultUID 14 SQLDefaultGID 50 SQLMinUserUID 13 SQLMinUserGID 49 

这是一个或多或less的简洁的例子,从数据库做100%的authentication,并将它们监禁到他们的数据库中列出的homedir。 如果您还想在login时dynamic创build其主目录(如果将其添加到数据库中,并且不想login到服务器来执行操作,那么可以添加:

 CreateHome on dirmode 0755 

…到configuration。 上面列出的其他两个虚拟文件与Red Hat / Centos服务器上的ProFTPd安装相匹配:

passwd.ftp

 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin 

group.ftp

 ftp:x:50: nobody:x:99: 

这一切都使得您的虚拟用户在硬盘驱动器上拥有14:50的UID / GID,无论他们的login用户名是什么。