天天看点

Linux下FTP服务器的安装和简单配置

为方便讲解我这里准备了两台Linux系统(一台用做服务器一台为客户机访问)。

创建测试用的本地用户(我这里已经创建好了 略)

安装vsftpd:

查看到vsftpd服务器的配置文件保存在/etc目录和它的子目录中:

查看vsftpd服务器的主配置文件vsftpd.conf:

查看vsftpd.conf文件中的配置项:

若有必要可使用 man vsftpd.conf查看配置帮助信息。

文件vsftpd.ftpuser位于/etc目录下,用于保存不允许进行FTP登录的本地用户的帐户(这些帐户包括root用户在内,一般都是存储一些权限较大的用户,为安全性考虑),其中nobody是相当于Windows中的Guest帐户(来宾帐户):

文件vsftpd.user_list文件位于/etc目录中,具有与vsftpd.ftpusers文件类似的访问控制功能,但是使用起来更加灵活:

在vsftpd.user_list文件需要与主配置文件vsftpd.conf的配置项结合来实现对于vsftpd.user_list文件中指定用户帐号的访问控制:

示userlist_enable=YES

示userlist_deny=YES

时则表示禁止该文件的用户访问FTP服务器

示userlist_deny=NO

时则表示允许该文件的用户访问FTP服务器

我这里先则的是允许该文件的帐户访问FTP服务器:

示vi  /etc/vsftpd/vsftpd.conf

注:userlist_deny=NO需要管理员手动添加并修改。

示vi  /etc/vsftpd.user_list

匿名用户登录FTP服务器时将进入/var/ftp目录,并将该目录作为根目录,即匿名用户不能离开该目录,只能进入该目录的子目录:

Vsftpd服务的启动和关闭:

示vsftpd服务器的启动脚本文件位于/etc/init.d/目录下名为vsftpd的文件,且在这里配置vsftpd服务在35系统启动级别时,随系统自启动:

启动vsftpd服务:

在linux客户机测试FTP用户登录:

OK!登录成功,从上面可以看出如果我用的本地用户,可以通过cd命令来进入我的/根目录,这样显然是不安全的,我们再做如下操作即可把它禁锢在其宿主目录中:

配置将FTP本地用户禁锢在宿主目录中:

在vsftpd服务器的配置文件vsftpd.conf中添加配置项chroot_local_user设置为YES,再重启vsftpd服务程序:

再到客户机去测试:

从上图可以看出我们用pwd显示时不再是/home/tom目录了而是直接说我们现在处在/目录下,再次也是一样的),证明禁锢成功。

目标:配置FTP服务器的虚拟用户

环境介绍:接着上面的环境走(呵呵!)

建立虚拟用户口令库文件:

示vi /var/logins.txt

注:这里单行为FTP登录的用户名,双行则为FTP上面单行用户登录时的口令。

生成vsftpd的认证文件:

注:这里的/var/logins.txt文件是我前面创建的虚拟用户口令库文件,这里就是根据它来生成的认证文件。

为安全起见配置vsftpd_login.db文件的权限为只对root用户可读可写,即:600:

建立虚拟用户所需的PAM配置文件:

示vi /etc/pam.d/vsftpd.vu

此文件默认没有用上面的指令创建并添加发下两行:

示auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

示account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

建立虚拟用户及要访问的目录并设置相应的权限:

示useradd –d /home/ftpsite virtual指令的意思为创建virtual用户并为其创建宿主目录ftpsite(这样它就不会创建与其用户名同名的宿主目录了),并给其配置权限。

示useradd –d  /home/ftpsite virtual

示chmod  706  /home/ftpsite    

配置vsftpd.conf配置文件:

注:在配置vsftpd.conf配置文件时请先备份其文件,以免出现配置错误时可进行修复。

示guest_enable=YES表示启用虚拟用户登录FTP

示guest_username=virtual 表示通过virtual帐户做为中间(类似进入皇宫时的令牌)

示pam_service_name=vsftpd.vu认证模块所指向的文件

示userlist_deny=YES(此行这样改的意思是因为我们之前将其改为NO便是允许vsftpd.user_list文件中用户来访问FTP服务器,但我并未将虚拟用户添加进去,这里我们禁用[即此文件的用户不可能访问FTP服务器,它便会读我们的虚拟用户了],否则会显示530错误。

重启vsftpd服务程序:

测试作用虚拟用户登录:

对不同的虚拟用户设置不同的权限:

设置主配置文件:

进入vsftpd的主配置文件添加如下行:

建立用户配置文件目录:

在/etc/vsftpd_user_conf目录中为每个虚拟用户建立独立的配置文件,配置文件名称和用户名同:

在创建的文件中为每个用户配置相应在权限:

测试:

上图证明test001没有写入权限,而test002则有创建目录的权限。

目标:在vsftpd服务器中限制客户机连接数和传输速率

修改vsftpd主配置文件/etc/vsftpd/vsftpd.conf

示vi /etc/vsftpd/vsftpd.conf

添加如下几行:

示max_clients=3(表示最大客户连接数量为3个)

示max_per_ip=1(表示配置FTP服务器对于同一个IP地址的最大连接数为1[即只允许一个线程])

示local_max_rate=50(表示本地用户的最大传输速率为50KB/s)

示anon_max_rate=20(表示匿名用户[包括虚拟用户]最大传输速率为20KB/s)

重启vsftpd服务:

上图表示我在同一个机器已经有一个连接,不能再连接了,需要连接成功则需关闭现有连接。

上图为我超过了FTP服务器允许的最大连接数的错误信息。

本文转自 tomsjack  51CTO博客,原文链接:http://blog.51cto.com/tom110/189844

继续阅读