FTP服务器的搭建

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

整个过程我们分为三个过程:

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

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

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

首先我们做准备工作:

设置IP地址为192.168.8.8为静态IP地址

编辑[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0(配置文件)
查看系统有没有安装vsftpd软件包

[root@localhost ~]# rpm -q vsftpd
package vsftpd is not installed
没有安装然后我们就挂载光盘进行安装服务包

[root@localhost ~]# mount /dev/hdc   /mnt
mount: block device /dev/hdc is write-protected, mounting read-only

安装软件包

[root@localhost ~]# rpm -ivh /mnt/Server/vsftpd-2.0.5-12.el5.i386.rpm
Preparing...                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]
 然后我们查看服务包有没有装上:

[root@localhost ~]# rpm -q vsftpd
vsftpd-2.0.5-12.el5
服务包已经安装上,这是我们配置FTP服务器的前提

下面我们就可以启动FTP服务

[root@localhost ~]# service vsftpd restart
关闭 vsftpd:                                                    [失败]
为 vsftpd 启动 vsftpd:                                    [确定]
我们用客户端登录即可以,这里我们要注意linux系统防火墙要关闭不然不可以登录。

用客户端测试:

这里我们要清楚匿名FTP服务器的主目录为

[root@localhost ~]# ls /var/ftp
pub

FTP服务器配置文件简介:

[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   允许删除

然后我们再更改FTP匿名用户的主目录权限/var/ftp目录

这里我们更改/var/ftp/pub目录的权限chmod  o+w   /var/ftp/pub -R 给其它用户写的权限

如果我们要进行一些安全选项的设置我们可以在配置文件中添加如下条目:

安全选项
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接) 

 

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

基于系统用户的配置我们首先要建立系统用户,这样我们就可以用客户端进行登录,登录之后系统用户可以进行上传、下载和删除的操作,其中在配置文件中相关联的有

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

这里还有一个问题,如果我们用命令行客户端来登录系统用户还可以切换到别的目录中进行查看,如果我们想把系统用户禁锢在自己的家目录我们要在配置文件中加一行

 chroot_local_user=YES 

 这样系统用户登录就只能在自己的家目录了。

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

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

这里我们为了系统的安全和某些需要我们会想并不想让系统的每个用户都用作FTP的客户端,我们就要设置哪些系统用户不被用作FTP的客户端

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

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

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

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,生成用户和口令列表文件

 (这个文件在哪里建立和叫什么名字无所谓)

这个名字的格式要注意的是一行为用户名下一行为密码不能出空行的情况。

z3       -------用户名
123     -------密码
l4        -------用户名
1234   -------密码
 

2,生成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
 

我们切换到刚才建立用户列表文件的目录,

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

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

 在/etc/pam.d目录下我们可以看到有一个vsftp的配置文件,这一个文件是做用户登录的认证文件,因为我们这里是用虚拟用户,所以我们要重新建立一个认证文件我们取名叫xiaogou(这个名字是任意起的只要和vsftpd.conf中指定的文件名一致即可)

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

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/userlist
account required /lib/security/pam_userdb.so db=/etc/vsftpd/userlist
这里我们要注意db=/etc/vsftpd/userlist后面不要再加.db

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

     [root@localhost ~]# useradd zhu

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

   pam_service_name=xiaogou ------指定用户验证文件
   userlist_enable=YES                 
   tcp_wrappers=YES
   guest_enable=YES                -------启用虚拟用户
   guest_username=zhu          -------指定虚拟用户映射的系统用户

重启vsftpd服务

现在我们就可以测试虚拟用户能不能登录了,

我们能登录了,但是我们没有权限去查看目录下的文件

注:这些虚拟用户所登录的目录为虚拟用户所对应的系统用户的家目录

为了让这些虚拟用户有不同的权限我们要做第六步,给虚拟用户添加不同的权限

6,设置虚拟用户的权限

 设置用户权限是通过配置一些文件来实现的,

我们建立一个目录来存放这些虚拟用户的权限

[root@localhost ~]# mkdir /etc/vsftpd/quanxian

在/etc/vsftpd/vsftpd.conf这个文件中我们要指定这一个目录的位置(添加的一行)

user_config_dir=/etc/vsftpd/quanxian

然后我们在/etc/vsftpd/quanxian这个目录中建立以虚拟用户为文件名的普通文件

再然后编辑这个普通文件如下

anon_world_readable_only=NO    -----允许下载文件
anon_upload_enable=YES            ------允许上传文件
anon_mkdir_write_enable=YES     
----允许写入并创建目录
anon_other_write_enable=YES      ----允许删除等操作

 注意,配置完/etc/vsftpd/vsftpd.conf文件后一定要重启vsftpd服务,

我们在客户端登录测试可以上传,下载,并删除文件了,

a:如果我们想添加一个虚拟用户,我们就把这个用户的名字和密码写到我们建立的  用户列表文件中,然后用db_load命令重新加入到数据库中即可,

b:删除一个用户也同上

注:如果要让别的用户也具有相同的权限,我们就在/etc/vsftpd/quanxian目录中建立一个以虚拟用户为文件名的普通文件即可(一般情况下我们都是复制以存在的文件并改名,哈哈)

好了,整个ftp服务我们就配置到这里,如果有什么不准确的地方请大家指正,为谢!

 

 

你可能感兴趣的:(linux,ftp,虚拟用户,系统用户,匿名用户)