FTP服务器的搭建


FTP服务器,是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务。我们可以用windows和linux等平台来搭建FTP服务器,在windows平台下我们可以用Serv-U等软件来搭建,在linux平台下我们可以用vsftpd这项软件来搭建,下面我们就用linux平台下面的vsftpd软件来搭建一台FTP软件。


安装软件包:

[root@localhost ~]# rpm -ivh /mnt/Server/vsftpd-2.0.5-12.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]


然后我们重启一下服务:

[root@localhost ~]# service vsftpd restart
关闭 vsftpd:                                                    [失败]
为 vsftpd 启动 vsftpd:                                    [确定]


接着我们用客户端 ftp://192.169.*.* 访问

但是我们需要配置文件的:

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf


配置文件中有:

1:anonymous_enable=YES  (禁用和开启匿名用户)
2:local_enable=YES  (禁用和开启本地用户)
3:write_enable=YES  (允许本地用户上传文件)
4:local_umask=022   (FTP上本地的文件权限,默认是077)
5:dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
6:xferlog_enable=yes (激活上传和下传的日志)
7:connect_form_port_20=yes (启用FTP数据端口的数据连接)
8: xferlog_std_format=yes  (使用标准的日志格式)
9:  listen=yes (独立的VSFTPD服务器)
10:pam_service_name=vsftpd (验证方式/指明认证文件vsftpd在var下)
11: tcp_wrappers=YES (启用tcp_wrappers 支持)

  

1:基于匿名用户ftp服务器的配置:

默认情况下匿名用户登录ftp服务器只能下载不能上传 我们可以通过修改配置文件来实现下列效果:


anon_upload_enable=YES          允许上传  (把这一行前面的#号去掉


然后再任意位置添加:

anon_mkdir_write_enable=YES  允许上传文件夹
anon_world_readable_only=NO 允许下载
anon_other_write_enable=YES   允许删除

然后我们我们更改/var/ftp/pub目录的权限chmod  o+w


这样匿名用户配置过程就ok了!


2:基于系统用户的ftp服务器配置:

基于系统用户我们首先要建立用户 并且登陆以后实现上传,下载,和删除的操作,其中在配置文件中有关联有:

local_enable=YES   启用和禁用系统用户
write_enable=YES  系统用户有没有写入和删除的权限,YES为可以上传、下载和删除NO为只能下载不能写入和删除。

如果我们想把系统用户禁锢在自己家目录中 我们需要在配置文件中加上一行:
 chroot_local_user=YES

 

 在我们建立系统用户用作登录FTP服务器的时候我们最好在建立用户的时候让用户不具备登录系统的权限,否则是一个严重的错误。我们可以在建立用户的时候:

[root@localhost hello]# useradd    用户名  -s /sbin/nologin


 默认情况下新建立的系统用户都可以作为FTP的客户端,但如果我们不想让新建立的一些用户作为FTP的客户端的话我们可以把这些新建立的用户加入到/etc/vsftp/ftpusers这个文件里来,这样加入到这里面的用户就不可以作为FTP的客户端了。


还有一个方法就是利用user_list这个文件,

userlist_enable=YES  启用user_list这个表(这个文件的位置默认在/etc/vsftp目录下)

userlist_deny=YES   启用拒绝这个文件所出来的用户,

userlist_deny=NO   如果这里为NO则表示只有这个文件里的系统用户能登录FTP服务器。(匿名用户不可以用了)

 


3:基于虚拟用户FTP服务器的配置


系统用户作为FTP的客户端会给系统安全带来隐患,因为这些用户不便能登录FTP还可以访问系统资源,如何解决这个问题呢,创建虚拟的FTP用户就可以解决这个问题,要创建虚拟的FTP用户我们需要做下面的几个步骤:

(1)生成用户和口令列表文件
(2)生成vsftpd虚拟用户数据库文件
(3)建立虚拟用户所需的PAM文件配置文件
(4)建立虚拟用户所映射的系统用户
(5)配置vsftpd.conf文件来支持虚拟用户
(6)设置虚拟用户的权限

首先我们来第一步:
(1)生成用户和口令的列表文件:

先使用命令:#vi /etc/vsftpd/login.txt

在里面添加虚拟用户的账户和密码信息 奇数是用户名 偶数是密码


(2)生成vsftpd虚拟用户数据库文件

[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

(#说明:‘db_load  -T  -t  hash ’为笔写命令参数,
前面的login.txt指的是刚才所建的文档login.txt 后面的login.db是指生成的虚拟用户存放在的位置
并取名叫做login.db)

在生成vsftpd虚拟用户数据库文件之前 我们需要
用db_load命令生成数据库文件但是我们系统可能没有安装db_load命令,我们可以安装db4-utils-4.3.29-9.fc6这个软件包:


[root@localhost ~]# rpm -ivh /mnt/Server/db4-utils-4.3.29-9.fc6.i386.rpm


(3)建立虚拟用户所需的PAM文件配置文件

我们在/etc/pam.d目录下建立一个文本文件叫niming.pam然后用vi进行编辑添加如下内容

auth   required   /lib/security/pam_userdb.so   db=/etc/vsftpd/login
account   required   /lib/security/pam_userdb.so  db=/etc/vsftpd/login


(#说明:上面的两行中‘db=/etc/vsftpd/login.’意思是指定你刚才生成的虚拟用户认证库文件的绝对路径,注意‘login’后面没有‘db’其他的为固定必写内容)写完这两行之后就可以保存并退出。


(4)建立虚拟用户所映射的系统用户


#useradd  -d  /home/ftp virtual

(说明:‘-d  /home/ftp’是指定匿名用户的登陆目录,必须要保证有这个目录,如果没有可以使用mkdir命令新建一个,可以在任何位置建立,但是在这里必须要指定。‘virtual’是我建立的用户并起名字为virtual,可以随意起名字,但一定要有意义。这个用户就是我在开篇中说道的虚拟用户要使用的guest用户)

 


(5)配置vsftpd.conf文件来支持虚拟用户

打开文件:#vi  /etc/vsftpd/vsftpd.conf

打开之后找到如下行:

pam_service_name=vsftpd
更改为:
pam_service_name=niming.pam 

(说明:这样更改是说明把pam_service_name执行第二步我们建立的pam文件,是服务能够读取这个文件)

anonymous_enable=yes
local_enable=YES
更改为:
anonymous_enable=no
local_enable=YES


(#说明:这样更改的作用是关闭服务的匿名用户登陆功能,并且允许非匿名用户的登录,就是虚拟用户所需要的权限)

添加如下几行:
chroot_local_user=YES
guest_enable=YES
guest_username=virtual


(#说明:'chroot_local_user=YES'这说明了把用户锁定到登陆目录,guest_enable=yes'说明让服务启用虚拟用户功能,'guest_username=virtual'是指定虚拟用户使用的guest用户,也就是我们第三步建立的virtual用户)


去掉
anon_upload_enable=YES(具有上传的权限)
anon_mkdir_write_enable=YES (有建立和删除目录权限)

添加
anon_world_readable_only=NO(具有浏览和下载的权限)
anon_other_write_enable=YES(有文件改名和删除文件权限)

 

给虚拟用户权限 我们需要在:

vi /etc/vsftpd/vsftpd.cof,在这个主配置文件内添加一个虚拟用户的权限文件的路径,添加user_config_dir=/etc/vsftpd_user_conf;


建立我们刚刚虚拟用户的权限文件夹,mkdir /etc/vsftpd_user_conf;


进入这个文件夹内cd /etc/vsftpd_user_conf再建立用户的权限配置文件,文件名为虚拟用户名,如aa用户则建立touch aa;


在用户的权限文件内写入用户相应的权限,分别为
anon_world_readable_only=NO 表示用户可以浏览FTP目录和下载文件;
anon_upload_enable=YES 表示用户可以上传;
anon_mkdir_write_enable=YES 表示用户可以建立和删除目录;
anon_other_write_enable=YES 表示用户具有更改文件名和删除文件的权限。

 


                  版权所有 !! 未经本人同意,不得转载!

                            2012年3月17号
           秦(qin)都(du)