ProFTPD 虚拟用户目录

ProFTPD 虚拟用户目录

好吧,我试图复制一家网络托管公司的基本设置,通过 SQL 对虚拟用户进行身份验证,并将他们重定向/监禁到他们的目录中。我已经完成了这里的大部分目标,除了将他们重定向/监禁到他们的目录中之外。

目录存储在 中/home/ftp,这就是DefaultRoot设置的内容。我希望每个用户都有自己的目录并被限制在自己的目录中。SQLhomedir中的设置似乎没有任何效果。任何用户登录 FTP 时,它都会登录到 ,而DefaultRoot不会被限制目录或重定向。

我该如何完成这最后一项任务?

答案1

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

编辑:

如果设置了 DefaultRoot 并且设置了除 ~ 之外的任何值,那么用户将被限制在以 DefaultRoot 为根的树中。

如果 DefaultRoot 是 ~ 那么用户将被囚禁在以其主目录为根的树中。

答案2

除了设置 DefaultRoot ~ 如上所述,您的 SQL 配置是什么样的 - 您实际上是从数据库中提取它的吗?

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

这是一个或多或少简洁的例子,它从数据库执行 100% 身份验证,并将它们限制在数据库中列出的主目录中。如果您还想在他们登录时动态创建他们的主目录(如果您将它们添加到数据库中但不想登录服务器来执行此操作,则很有用),您可以添加:

CreateHome on dirmode 0755

...配置。上面列出的另外两个虚拟文件与您的 ProFTPd 安装相匹配,后者位于 Red Hat/Centos 服务器上:

密码文件

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

群组档案

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

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

相关内容