VSFTP 配置将用户发送到特定文件夹

VSFTP 配置将用户发送到特定文件夹

我的机器上大约有 30 个用户。这些用户处于重叠的组中(大约 6-10 个组)。我需要他们在通过 FTP 访问时能够根据其组分配进入特定文件夹。

即,group1 -> /tmp/site1 group2 -> /tmp/site2

在 SuSE 机器上使用 VSFTP 可以实现这一点吗?遗憾的是,使用 SFTP 不是一个选项。

谢谢!

编辑:如果用户属于多个组,只需将他们转储到最高级别的文件夹即可查看他们有权访问的各个文件夹。

答案1

您可以使用 vsftpd.conf 创建 chroot 列表

请参阅此处的帮助说明:http://www.linuxquestions.org/questions/linux-networking-3/vsftpd-chroot-problem-387883/

我认为您正在寻找以下信息片段:

所有属于 ftp-users 组的用户登录时默认进入 /home/ftp-docs/ftp_stuff。他们无法浏览其他目录,只能进入这个特定目录。

你做这个:

以 root 身份发出以下命令来创建目录:

mkdir -p /home/ftp-docs/ftp_stuff

然后执行以下操作:-

chgrp ftp-users /home/ftp-docs/ftp_stuff chmod 3777 /home/ftp-docs/ftp_stuff

在 /etc/vsftpd/vsftpd.conf 中写入 chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

将所有 ftp-users 组用户名放入 /etc/vsftpd.chroot_list 中,然后在 /etc/passwd 文件中将属于 ftp-users 组的所有用户的主目录设为 /home/ftp-docs/ftp_stuff。然后执行以下操作:

服务 vsftpd 重启

然后通过任何属于 ftp-users 组的用户登录您将进入 /home/ftp-docs/ftp_stuff。您无法进入其他更高级别的目录。

您可以在列表中为多个组创建多个条目。我相信这些组在列表文件中的顺序将决定它们的最高目录。

希望这能有所帮助。托马斯

答案2

有几个选择。

  1. 将用户的主目录设置为所需目录(在 /etc/passwd 中)并配置组成员身份,并配置 vsftpd 以将其 chroot 到他们的主文件夹中。

    echo chroot_local_user=YES >> /etc/vsftpd/vsftpd.conf
    

    如果他们由于某种原因确实需要本地访问,那么事情就会变得有点复杂,这让我想到了#2。

  2. 按照 #1 中的说明将用户锁定到他们的主文件夹,但不要更改 /etc/passwd 中的主文件夹。而是在主文件夹内向他们需要访问的目录添加挂载点。

    mount --bind /tmp/site1 /home/ftp_user/site1
    

这需要用户额外点击,但可以正确设置主目录。

此外,我会每天运行一个 cron 作业来仔细检查成员资格,并在组成员资格发生变化时调整主文件夹/挂载点。

答案3

这样的场景非常适合 proftpd+mod_mysql,它可以让你

  1. 通过 mysql 轻松管理用户,因为我怀疑处理 30 个甚至更多的 shell 用户是否很舒服
  2. 根据表中的数据设置用户的主目录和组
  3. 修改 proftpd 用于从用户数据库检索信息的查询,这样您就可以执行您建议的条件任务(重叠组,选择哪个主页)
  4. 通过 mysql 监控使用情况、带宽
  5. 能够轻松扩展到超过 30 个用户
  6. 使用用户数据表执行需要查找或修改用户数据的其他管理任务
  7. 将所有数据显示在一个漂亮的 GUI 或 Web 仪表板上

所有这些只有在你切换到 proftpd 时才有可能,但由于你显然还没有在生产中使用它,我想这不会有什么大不了的

相关内容