FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。html
FTP(File Transfer Protocol: 文件传输协议)做用: Internet 上用来传送文件的协议。web
常见FTP服务器:vim
windows:Serv-U FTP Serverwindows
Linux:ProFTPD:(Professional FTP daemon)一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序。 安全
本文的主角:vsftp。VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 今后名称能够看出来,编制者的初衷是代码的安全。服务器
特色:它是一个安全、高速、稳定的FTP服务器。本文从如下几个方面来介绍ftp服务器:架构
一、 此服务器的概述:名字,功能,特色,端口号学习
二、 安装测试
三、 配置文件的位置网站
四、 服务启动关闭脚本,查看端口
五、 此服务的使用方法
六、 修改配置文件,实战举例
七、 排错(从下到上,从内到外)
本文的服务器架构:
FTP服务端:xiaolyu10 IP:192.168.31.10
FTP客户端:xiaolyu11 IP:192.168.31.11
yum安装或rpm安装都可。
[root@xiaolyu10 ~]# rpm -qa | grep vsftp
vsftpd-2.2.2-21.el6.x86_64
[root@xiaolyu10 ~]# rpm -ivh /mnt/Packages/vsftpd-2.2.2-6.el6_0.1.x86_64.rpm
[root@xiaolyu10 ~]# yum install -y vsftp
[root@xiaolyu11 ~]# yum -y install lftp
[root@xiaolyu10 ~]# ls -l /etc/vsftpd
total 32
-rw-r--r-- 1 root root 13 Mar 16 15:14 chroot_list
-rw------- 1 root root 125 May 11 2016 ftpusers
-rw------- 1 root root 361 May 11 2016 user_list
-rw------- 1 root root 4644 Mar 16 15:13 vsftpd.conf
-rw------- 1 root root 4599 Mar 16 14:12 vsftpd.conf_bak
-rwxr--r-- 1 root root 338 May 11 2016 vsftpd_conf_migrate.sh
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。 黑名单
/etc/vsftpd/user_list:指定容许使用vsftpd 的用户列表文件。 白名单
vim /etc/vsftpd/user_list
# 若是userlist_deny= YES(默认),毫不容许在这个文件中的用户登陆ftp,甚至不提示输入密码
#prompt 提示
/etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操做的一些变量和设置脚本
/var/ftp/:默认状况下匿名用户的根目录
公司技术部准备搭建一台功能简单的FTP 服务器,容许全部员工上传和下载文件,并容许建立用
户本身的目录。
分析:
容许全部员工上传和下载文件须要设置成容许匿名用户登陆而且须要将容许匿名用户上传功能
开启,
anon_mkdir_write_enable 字段能够控制是否容许匿名用户建立目录。
备份原配置文件:
[root@xiaolyu10 vsftpd]# cp vsftpd.conf vsftpd.conf_bak
[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf
容许匿名用户访问
anonymous_enable=YES
容许匿名用户上传文件并能够建立目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
启动服务:
[root@xiaolyu10 ~]# service vsftpd restart
[root@xiaolyu10 pub]# chown ftp.ftp /var/ftp/pub/
而后测试,是能够新建文件夹了,可是不能重命名,不能删除!
[root@xiaolyu10 ~]# mkdir /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# chown ftp.ftp /var/ftp/xiaolyudata
[root@xiaolyu10 ~]# ll -d !$
ll -d /var/ftp/xiaolyudata
drwxr-xr-x 2 ftp ftp 4096 Mar 16 14:34 /var/ftp/xiaolyudata
[root@xiaolyu10 ~]#
重启服务:
[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@xiaolyu10 ~]#
如今匿名上传的文件是禁止删除的。
这样匿名用户的上传就算成功了
注:工做中,匿名用户只是只读访问,写的权限也没有的。
补充:
若是想让匿名用户能够重命名或者删除的权限,添加以下一条配置参数:
重启服务:
[root@xiaolyu10 ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_other_write_enable
[FAILED]
根据提示,说明我刚才添加的那一行匿名写权限的参数有问题
[root@xiaolyu10 ~]# vim /etc/vsftpd/vsftpd.conf
也就是说参数后面不能有多余的空格。
从新启动就能够对从新命名和删除文件夹了,
匿名用户就能够删除和修改,很是不安全,慎重使用这个参数。
注意,默认匿名用户家目录的权限是755,这个权限是不能改变的。切记!
[root@xiaolyu10 ~]# service vsftpd restart
公司内部如今有一台FTP 和WEB 服务器,FTP 的功能主要用于维护公司的网站内容,包括上传文
件、建立目录、更新网页等等。公司现有两个部门负责维护任务,他们分别适用team1 和team2
账号进行管理。先要求仅容许team1 和team2 账号登陆FTP 服务器,但不能登陆本地系统,并将
这两个账号的根目录限制为/var/www/html,不能进入该目录之外的任何目录。
ftp 和www web服务器相结合。
www web服务器根目录: /var/www/html
只容许:team1和team2两用户 能够上传。 vsftp禁止匿名。
分析:
将FTP 和WEB 服务器作在一块儿是企业常常采用的方法,这样方便实现对网站的维护,为了加强安
全性,首先须要使用仅容许本地用户访问,并禁止匿名用户登陆。其次使用chroot 功能将team1
和team2 锁定在/var/www/html 目录下。若是须要删除文件则还须要注意本地权限
解决方案:
(1)创建维护网站内容的ftp 账号team1 和team2 并禁止本地登陆,而后设置其密码
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team1
[root@xiaolyu10 ~]# useradd -s /sbin/nologin team2
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team1
Changing password for user team1.
passwd: all authentication tokens updated successfully.
[root@xiaolyu10 ~]# echo "123456" | passwd --stdin team2
Changing password for user team2.
passwd: all authentication tokens updated successfully.
2)配置vsftpd.conf 主配置文件并做相应修改
[root@xiaolyu10 vsftpd]# cp vsftpd.conf_bak vsftpd.conf
cp: overwrite `vsftpd.conf'? y
[root@xiaolyu10 vsftpd]# vim vsftpd.conf
#anonymous_enable=YES
anonymous_enable=NO 禁止匿名用户登陆
#
# Uncomment this to allow local users to log in.
local_enable=YES 容许本地用户登陆
继续将:
修改成:
local_root=/var/www/html:设置本地用户的根目录为/var/www/html
chroot_list_enable=YES:激chroot 功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件。此文件存放要锁定的用户名
保存退出
(3)创建/etc/vsftpd/chroot_list 文件,添加team1 和team2 账号
[root@xiaolyu10 vsftpd]# touch /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# ll !$
ll /etc/vsftpd/chroot_list
-rw-r--r-- 1 root root 0 Mar 16 15:13 /etc/vsftpd/chroot_list
[root@xiaolyu10 vsftpd]# vim /etc/vsftpd/chroot_list #写入如下内容,一行,一个用户名
team1
team2
(4)重启vsftpd 服务使配置生效
service vsftpd restart
(5)修改本地权限
[root@xiaolyu10 vsftpd]# mkdir -p /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xr-x 2 root root 4096 Mar 16 15:16 /var/www/html/
[root@xiaolyu10 vsftpd]# chmod -R o+w /var/www/html/
[root@xiaolyu10 vsftpd]# ll -d /var/www/html/
drwxr-xrwx 2 root root 4096 Mar 16 15:16 /var/www/html/
(6).测试:
[root@xiaolyu11 ~]# lftp 192.168.31.10 -uteam1,123456lftp team1@192.168.31.10:~> lsdrwxr-xr-x 2 500 500 4096 Mar 16 07:24 weblftp team1@192.168.31.10:~>