准备工作
基础环境
- Linux服务器:IP为:192.168.234.11
- Linux客户端:IP为:192.168.234.22
- Windows客户端:IP为:192.168.234.1
服务器端准备
- 关闭防火墙
[root@wyz-11 ~]# systemctl stop firewalld
[root@wyz-11 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@wyz-11 ~]# setenforce 0
- 修改selinux的状态为disabled
[root@wyz-11 ~]# vim /etc/selinux/config
SELINUX=disabled
Linux客户端准备
- 安装lftp
[root@wyz-22 ~]# yum install -y lftp
Windows客户端准备
- 下载安装FileZilla软件
http://8dx.pc6.com/xjq6/FileZilla_v3.41.0.zip
//FileZilla下载链接
1.安装vsftpd
[root@wyz-11 ~]# yum install -y vsftpd
2.配置匿名用户ftp
服务端
- 匿名用户ftp模式无需修改配置文件,在服务器上安装vsftpd完成后启动服务即可
//启动服务
[root@wyz-11 ~]# systemctl start vsftpd
//在共享目录中创建文件以便验证
[root@wyz-11 ~]# cd /var/ftp/pub/
[root@wyz-11 pub]# touch 123
[root@wyz-11 ~]# echo 'Hello FTP'>123
[root@wyz-11 ~]# cat 123
Hello FTP
[root@wyz-11 ~]#
客户端验证
- Linux客户端
[root@wyz-22 ~]# lftp 192.168.234.11
lftp 192.168.234.11:~> ls
drwxr-xr-x 2 0 0 17 Apr 17 06:32 pub
lftp 192.168.234.11:~> ls /pub/
-rw-r--r-- 1 0 0 10 Apr 17 07:05 123
lftp 192.168.234.11:/> cat /pub/123
Hello FTP
10 bytes transferred
lftp 192.168.234.11:/>
lftp 192.168.234.11:/> mkdir ftp
mkdir: Access failed: 550 Permission denied. (ftp)
lftp 192.168.234.11:/>
lftp 192.168.234.11:~> get /pub/123 -o /root/
10 bytes transferred
lftp 192.168.234.11:/> exit
[root@wyz-22 ~]# ll /root/123
-rw-r--r--. 1 root root 10 4月 17 15:05 /root/123
[root@wyz-22 ~]# cat /root/123
Hello FTP
[root@wyz-22 ~]#
- Windows客户端验证
3.配置虚拟用户ftp
服务端
- 安装依赖程序:
[root@wyz-11 ~]# yum install -y wget
[root@wyz-11 ~]# cd /etc/yum.repos.d/
[root@wyz-11 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
--2019-04-17 03:22:32-- http://mirrors.163.com/.help/CentOS7-Base-163.repo
Resolving mirrors.163.com (mirrors.163.com)... 59.111.0.251
Connecting to mirrors.163.com (mirrors.163.com)|59.111.0.251|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1572 (1.5K) [application/octet-stream]
Saving to: ‘CentOS7-Base-163.repo’
100%[===================================================>] 1,572 --.-K/s in 0s
2019-04-17 03:22:37 (344 MB/s) - ‘CentOS7-Base-163.repo’ saved [1572/1572]
[root@wyz-11 yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@wyz-11 yum.repos.d]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@wyz-11 yum.repos.d]# yum install -y epel-release
- 创建文本格式的用户名、密码列表,例如若要添加两个用户wyz、adm,密码分别为123、456
[root@wyz-11 ~]# echo 'wyz'>> /etc/vsftpd/vu.list
[root@wyz-11 ~]# echo '123'>> /etc/vsftpd/vu.list
[root@wyz-11 ~]# echo 'admin'>> /etc/vsftpd/vu.list
[root@wyz-11 ~]# echo '456'>> /etc/vsftpd/vu.list
[root@wyz-11 ~]# cat /etc/vsftpd/vu.list
wyz
123
admin
456
//这里的用户名和密码是一一对应的,前面输的是帐号,后面跟的是密码(如账号为wyz,密码为123)
- //安装db4工具
[root@wyz-11 ~]# yum install -y db4*
- //将刚创建的文本格式用户名、密码文件使用db4工具转换成数据库文件
[root@wyz-11 ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
//上面的-T表示转换,-t表示加密方式使用hash算法加密
[root@wyz-11 ~]# chmod 600 /etc/vsftpd/vu.*
[root@wyz-11 ~]# ll /etc/vsftpd/vu.*
-rw-------. 1 root root 12288 Apr 17 03:36 /etc/vsftpd/vu.db
-rw-------. 1 root root 16 Apr 17 03:30 /etc/vsftpd/vu.list
[root@wyz-11 ~]#
//为提高虚拟用户帐号文件的安全性,应将文件权限设置为600,以避免数据外泄
- 添加虚拟用户的映射帐号、创建ftp根目录。例如要将使用的ftp根目录设置为/var/ftproot,映射帐号的名称为vftp,可以执行以下操作
[root@wyz-11 ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
[root@wyz-11 ~]# chmod 755 /var/ftproot/
[root@wyz-11 ~]# ll -d /var/ftproot/
drwxr-xr-x. 2 vftp vftp 62 Apr 17 03:46 /var/ftproot/
[root@wyz-11 ~]#
- 为虚拟用户建立PAM认证
[root@wyz-11 ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak //修改配置文件前都需要备份
[root@wyz-11 ~]# vim /etc/pam.d/vsftpd //删除原来的所有内容,添加一下内容(复制进去的内容开头都有#,记得删掉最后两行开头的#)
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
- 修改vsftpd配置文件,添加虚拟用户支持
[root@wyz-11 ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vftp //在主配置文件夹最后添加这两行参数
- 为不同的虚拟用户建立独立的配置文件
[root@wyz-11 ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
allow_writeable_chroot=YES //在主配置文件夹最后添加这两行参数
- 有了上述配置后,就可以在/etc/vsftpd/vusers_dir目录中为每个虚拟用户分别建立配置文件了。
- 例如,若要使用虚拟用户wyz能够上传文件、创建目录,而adm只有默认的下载权限
- 可以执行以下操作
[root@wyz-11 ~]# mkdir /etc/vsftpd/vusers_dir
[root@wyz-11 ~]# cd /etc/vsftpd/vusers_dir
[root@wyz-11 vusers_dir]# vim wyz //设置wyz用户可上传文件、创建目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[root@wyz-11 vusers_dir]# touch /etc/vsftpd/vusers_dir/admin //设置adm用户只有默认的下载权限,只需要创建一个名为adm的空文件即可
-
注意:虚拟用户是通过匿名访问的,所以必须开启匿名访问功能!!!
-
重启服务
[root@wyz-11 ~]# systemctl restart vsftpd
//在共享目录中创建文件以便验证
[root@wyz-11 ~]# cd /var/ftproot/
[root@wyz-11 ftproot]# touch 123
[root@wyz-11 ftproot]# echo 'HELLO FTP'> 123
[root@wyz-11 ftproot]# cat 123
HELLO FTP
客户端验证
- Linux客户端
//以wyz用户登录
[root@wyz-22 ~]# lftp -u wyz,123 192.168.234.11
lftp wyz@192.168.234.11:~>
ftp://wyz:123@192.168.234.11
lftp wyz@192.168.234.11:~> ls
-rw-r--r-- 1 0 0 10 Apr 17 08:35 123
lftp wyz@192.168.234.11:/>
lftp wyz@192.168.234.11:/> mkdir www
mkdir 成功, 建立 `www'
lftp wyz@192.168.234.11:/> ls
-rw-r--r-- 1 0 0 10 Apr 17 08:35 123
drwx------ 2 1000 1000 6 Apr 17 08:37 www
lftp wyz@192.168.234.11:/>
lftp wyz@192.168.234.11:/> get 123 -o /
10 bytes transferred
lftp wyz@192.168.234.11:/> exit
[root@wyz-22 ~]# ls /
123 boot etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@wyz-22 ~]# cat /123
HELLO FTP
[root@wyz-22 ~]#
//以admin用户登录
[root@wyz-22 ~]# lftp -u admin,456 192.168.234.11
lftp admin@192.168.234.11:~> pwd
ftp://admin:456@192.168.234.11
[root@wyz-22 ~]# lftp -u admin,456 192.168.234.11
lftp admin@192.168.234.11:~> ls
-rw-r--r-- 1 0 0 10 Apr 17 08:35 123
drwx------ 2 1000 1000 6 Apr 17 08:43 test
drwx------ 2 1000 1000 6 Apr 17 08:37 www
-rw------- 1 1000 1000 0 Apr 17 08:43 wyz
lftp admin@192.168.234.11:/> mkdir qwe
mkdir: Access failed: 550 Permission denied. (qwe)
lftp admin@192.168.234.11:/> get 123 -o /root
10 bytes transferred
lftp admin@192.168.234.11:/> exit
[root@wyz-22 ~]# ls
123 anaconda-ks.cfg initial-setup-ks.cfg wyz
[root@wyz-22 ~]# cat 123
HELLO FTP
[root@wyz-22 ~]#
- Windows客户端验证
-
wyz用户验证
-
admin用户验证
-
4.配置系统用户ftp
环境为刚刚安装的vsftpd。所有的配置都为默认(如果在此之前做过虚拟用户FTP可以卸载服务重装即可)
服务端
- 修改配置文件为不允许匿名用户登录
[root@wyz-11 ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //将此行注释掉或将YES改为NO即可
//重启服务
[root@wyz-11 ~]# systemctl restart vsftpd
//创建用户以便验证(必须设置密码)
[root@wyz-11 ~]# useradd wang
[root@wyz-11 ~]# passwd wang
Changing password for user wang.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
//在共享目录中创建文件以便验证
[root@wyz-11 ~]# cd /home/wang/
[root@wyz-11 wang]# touch wang
[root@wyz-11 wang]# echo 'hello wangyizhen'> wang
[root@wyz-11 wang]# cat wang
hello wangyizhen
[root@wyz-11 wang]#
客户端验证
- Linux客户端
[root@wyz-22 ~]# lftp -u wang,123 192.168.234.11
lftp wang@192.168.234.11:~> ls
-rw-r--r-- 1 0 0 17 Apr 17 10:25 wang
lftp wang@192.168.234.11:~> exit
[root@wyz-22 ~]# lftp -u wang,123 192.168.234.11
lftp wang@192.168.234.11:~> ls
-rw-r--r-- 1 0 0 17 Apr 17 10:25 wang
lftp wang@192.168.234.11:~> mkdir qwe
mkdir 成功, 建立 `qwe'
lftp wang@192.168.234.11:~> ls
drwxr-xr-x 2 1001 1001 6 Apr 17 10:33 qwe
-rw-r--r-- 1 0 0 17 Apr 17 10:25 wang
lftp wang@192.168.234.11:~> rm -rf qwe
rm 成功, 删除 `qwe'
lftp wang@192.168.234.11:~> ls
-rw-r--r-- 1 0 0 17 Apr 17 10:25 wang
lftp wang@192.168.234.11:~> get wang -o /root/
17 bytes transferred
lftp wang@192.168.234.11:~> exit
[root@wyz-22 ~]# ls
123 anaconda-ks.cfg initial-setup-ks.cfg wang wyz
[root@wyz-22 ~]# cat wang
hello wangyizhen
[root@wyz-22 ~]#
- Windows客户端验证