1.查看linux系统版本和内核信息 [root@vmware1 ~]# cat /etc/issue CentOS release 6.7(Final) Kernel /r on an /m 2.关
1.查看linux系统版本和内核信息
[root@vmware1 ~]# cat /etc/issue
CentOS release 6.7(Final)
Kernel /r on an /m
2.关闭防火墙和selinux
[root@vmware1 ~]# /etc/init.d/iptables stop
[root@vmware1 ~]# chkconfig iptables off
[root@vmware1 ~]# setenforce 0
3.安装vsftp软件包
[root@vmware1 ~]# yum install -y vsftpd
先备份vsftpd的默认配置文件;
[root@vmware1 ~]# cd /etc/vsftpd/
[root@vmware1 vsftpd]# cp vsftpd.conf vsftpd.conf.bak
4.清空vsftpd.cong默认的内容
root@vmware1 vsftpd]# >vsftpd.conf
5.修改后的内容为:
[root@vmware1 vsftpd]# vi vsftpd.conf
anonymous_enable=NO #不允许匿名用户登陆
local_enable=YES #vsftpd所在系统的用户可以登录vsftpd
write_enable=YES #允许使用任何可以修改文件系统的FTP的指令
local_umask=002 #匿名用户新增文件的umask数值
anon_upload_enable=NO #匿名用户不可以上传文件
anon_mkdir_write_enable=NO #匿名用户不可以修改文件
xferlog_enable=YES #启用一个日志文件,用于详细记录上传和下载。
use_localtime=YES #使用本地时间而不是GMT
vsftpd_log_file=/var/log/vsftpd.log #vsftpd日志存放位置
dual_log_enable=YES #用户登陆日志
connect_from_port_20=YES #开启20端口
xferlog_file=/var/log/xferlog #记录上传下载文件的日志
xferlog_std_format=YES #记录日志使用标准格式
idle_session_timeout=600 #登陆之后超时时间60秒,登陆之后,一分钟不操作,就会断开连接。
chroot_local_user=YES #用于指定用户列表文件中的用户,是否允许切换到上级目录
listen=YES #开启监听
pam_service_name=vsftpd.vu #验证文件的名字
userlist_enable=YES #允许由userlist_file指定文件中的用户登录FTP服务器
tcp_wrappers=YES #支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
guest_enable=YES #起用虚拟用户
guest_username=ftp #虚拟用户名
user_config_dir=/etc/vsftpd/vsftpuser #虚拟用户配置文件路径
pasv_min_port=35000
pasv_max_port=45000
pasv_enable=YES
pasv_promiscuous=YES
anon_other_write_enable=YES
reverse_lookup_enable=NO #ftp登陆慢的解决方法
6.创建ftp访问的目录,创建本地ftp用户,设置密码。
[root@vmware1 vsftpd]# mkdir /data/share -p
创建用户joly.
[root@vmware1 vsftpd]# useradd cs
[root@vmware1 vsftpd]# passwd cs 密码:cs123456
更改用户cs的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
给share目录,设置成
[root@vmware1 vsftpd]# chown -R ftp.ftp /home/ftp/1520
[root@vmware1 vsftpd]# ll /home/ftp/
total 4
drwxrwxrwx. 3 ftp ftp 4096 Apr 26 20:52 1520
7.安装db4数据包,一会生成数据库文件时候用,安装ftp客户端
[root@vmware1 ~]# yum install -y db4*
[root@vmware1 vsftpd]# yum install -y ftp
8.创建一个匿名账号.
[root@vmware1 ~]# cd /etc/vsftpd
[root@vmware1 vsftpd]# echo "cs">vftpuser.txt
[root@vmware1 vsftpd]# echo "cs123456">>vftpuser.txt
[root@vmware1 vsftpd]# vi vftpuser.txt
cs
cs123456
[root@vmware1 vsftpd]# db_load -T -t hash -f vftpuser.txt vftpuser.db
[root@vmware1 vsftpd]# ll vftpuser.db
-rw-r--r--. 1 root root 12288 Apr 26 21:00 vftpuser.db
9.添加验证信息,在/etc/pam.d目录下,新创建一个vsftpd.vu文件,写入内容如下
[root@vmware1 vsftpd]# cat /etc/pam.d/vsftpd.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
10.创建虚拟用户的配置文件
[root@vmware1 ~]# cd /etc/vsftpd/
[root@vmware1 vsftpd]# mkdir vsftpuser
[root@vmware1 vsftpd]# cd vsftpuser/
[root@vmware1 vsftpuser]# touch cs
备注:此配置文件末尾不能有空格
[root@vmware1 vsftpuser]# cat cs
local_root=/data/share
write_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_umask=022
anon_other_write_enable=YES
11.重启vsftpd,然后查看端口是否开启
[root@vmware1 ~]# service vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
[root@vmware1 ~]# netstat -anpt | grep vsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2191/vsftpd
12.在本地ftp服务器登陆测试
[root@vmware1 ~]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (127.0.0.1:root): taokey
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (127,0,0,1,149,179).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir hello
257 “/hello” created
ftp> dir
227 Entering Passive Mode (127,0,0,1,141,105).
150 Here comes the directory listing.
drwxr-xr-x 2 500 500 4096 Jan 16 15:27 hello
226 Directory send OK.
13虚拟用户增加和权限设置:
新增用户:cs1,密码:cs123456
#useradd cs1
#passwd cs1 密码:cs123456
创建一个匿名账号.
#cd /etc/vsftpd 进入vsftpd目录
#vi vftpuser.txt 编辑vftpuser.txt,增加如下内容
cs1
cs123456
使用db_load命令生成虚拟用户口令认证文件。
vsftpd#db_load -T -t hash -f vftpuser.txt vftpuser.db
创建虚拟用户的配置文件
#cd /etc/vsftpd/vsftpuser
#touch cs1
#vi cs1
local_root=/home/ftp/1520/ #虚拟用户可以访问的目录设置
write_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_umask=022
anon_other_write_enable=YES
同一用户,访问不同子目录配置(利用挂载功能):swl用户只可以访问joly和soft目录
mkdir -p /home/swl/joly
mkdir -p /home/swl/soft
mount --bind -o rw /data/share/joly /home/swl/joly
mount --bind -o rw /data/share/soft /home/swl/soft
# cd /etc/vsftpd/vsftpuser/
#vi swl
local_root=/home/swl
#chown -R ftp.ftp /home #给ftp用户访问/home的权限
重启后挂载命令会失效,解决方法;
vi /etc/fstab
/data/share/joly /home/swl/joly none bind 0 0
/data/share/soft /home/swl/soft none bind 0 0
错误500解决方法:
#vi /etc/selinux/config
SELINUX=disabled
14. virtual_use_local_privs配置参数详解
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
15客户端连接
①客户端主动连接模式
②客户端被动连接,防火墙要开启对应vsftpd允许的随机端口