ProFTPd为不同的用户创建不同的虚拟主机

ProFTPd为不同的用户创建不同的虚拟主机

我对 ProFTPd 服务器完全陌生,我真的不知道如何配置我需要的东西。我希望得到一些关于虚拟服务器和每个目录规则的解释。

我正在运行 Debian Debian Linux 6.0.7(Squeeze)和 ProFTPd 版本 1.33。

我需要的是两个不同的用户(假设ftpuser1ftpuser2,我已经在服务器上将其创建为 Unix 用户)可以通过 FTP 访问两个不同的文件夹(/var/ftpfolder1对于 ftpuser1 和/var/ftpfolder2对于ftpuser2)。

我的意思是,如果 ftpuser1 通过 FTP(例如使用 FileZilla 客户端)连接到我的服务器,他必须只能访问该文件夹/var/ftpfolder1(用户“2”也一样)。他们无法查看服务器中的任何其他文件夹。

我认为最好的方法是给两个用户两个指向相同 IP(相同服务器)的不同 URL,即ftpsite1.domain.comftpuser1。因此,ftpsite2.domain.com我尝试为用户 1 创建一个虚拟服务器,为用户 2 创建一个虚拟服务器,并在互联网上搜索有关该主题的一些教程,但我无法达到我想要的结果。我还尝试配置每个目录的指令,但没有成功。问题是用户能够通过 FTP 连接到服务器,但他们只能看到他们的 HOME 文件夹,而看不到我想要的文件夹。ftpuser2

您可以在这里找到我尝试的配置。

我还想从您那里了解虚拟服务器和每个目录指令之间的区别。我的意思是:我想象它与 Apache 可以做的事情类似...但我真的无法完全理解如何正确配置它们。

谢谢。

尝试目录配置

ftp用户1

<Directory /var/ftpfolder1>
    <Limit ALL>
        DenyAll 
    </Limit>    

    <Limit ABOR APPE LIST MLSD NLST NOOP OPTS REST STOR PASS FEAT PWD USER CWD>
        DenyAll 
        AllowUser ftpuser1
    </Limit>    
</Directory>

 

ftp用户2

<Directory /var/ftpfolder2>
    <Limit ALL>
        DenyAll 
    </Limit>    

    <Limit ABOR APPE LIST MLSD NLST NOOP OPTS REST STOR PASS FEAT PWD USER CWD>
        DenyAll 
        AllowUser ftpuser2
    </Limit>    
</Directory>

 

尝试虚拟服务器配置

ftp用户1

<VirtualHost ftpsite1.domain.com>
        ServerName          "FTP for user 1"
        #Port               21
        #Umask              027

    <Limit LOGIN>
        DenyAll
        AllowUser ftpuser1
    </Limit>

    <snt_ftp /var/ftpfolder1>
        User            ftpuser1
        Group           proftpdusers
        UserAlias       ftpuser1    

        <Limit LOGIN>
            AllowAll
        </Limit>

        <Limit WRITE>
            DenyAll
            AllowUser ftpuser1
        </Limit>
    </snt_ftp>
</VirtualHost>

答案1

你不需要任何花哨的东西。你所需要做的就是将他们的 HomeDir 设置为不同的东西,然后通过 DefaultRoot ~ 在你的配置中设置来使用 chroot。当每个用户登录时(无论使用什么名称访问它),他们都会被困在他们的目录中。不需要虚拟主机(因为他们需要单独的 IPS 或端口,因为 FTP 没有像 HTTP 那样的基于名称的虚拟主机)

答案2

您可以使用 chroot

# useradd -s /sbin/nologin -d /var/ftpfolder1 ftpuser1
# useradd -s /sbin/nologin -d /var/ftpfolder2 ftpuser2

在 proftpd.conf 中添加以下选项

DefaultRoot ~ !adm

<Global>
    RequireValidShell           no
    ...
</Global>

然后重启服务器。如果你确实需要虚拟主机,你可以尝试以下方法

<VirtualHost ftpsite1.domain.com>
    ServerName "FTP1."
    DefaultRoot ~
    Umask 002
    Port 21

    <LIMIT LOGIN>
        AllowUser ftpuser1
    </LIMIT>    
</VirtualHost>

<VirtualHost ftpsite2.domain.com>
    ServerName "FTP2."
    DefaultRoot ~
    Umask 002
    Port 21

    <LIMIT LOGIN>
        AllowUser ftpuser2
    </LIMIT>    
</VirtualHost>

相关内容