centos 7 vsftpd
vsfrp:"very secure FTP daemon"的缩写,非常安全的文件传输协议,提供上传和下载
一、FTP两种模式
1、主动模式:
客户端从一个任意端口(大于1024)连接到服务端的21号端口,服务端会从自己的数据端口(20)连接到客户端指定的数据端口
2、被动模式(默认模式)
客户端从一个任意端口(大于1024)连接到服务端的21号端口,服务端会开启一个任意端口(大于1024)传递至客户端的指定端口(过程中不启用20端口)
二、环境:
服务端:192.168.1.111
客户端:192.168.1.107
三、服务端安装
[root@localhost ~]# yum install vsftpd -y 安装服务端
[root@localhost ~]# systemctl start vsftpd 启动服务
[root@localhost ~]# systemctl status vsftpd 查看服务状态
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2020-05-17 17:25:47 CST; 7s ago
Process: 18136 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 18137 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─18137 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
May 17 17:25:47 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
May 17 17:25:47 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
默认路径:/var/ftp/pub
在其中创建一些文件
[root@localhost pub]# touch file{1..9}
[root@localhost pub]# mkdir wordpress
[root@localhost pub]# touch wordpress/test{1..9}
[root@localhost pub]# ls
file1 file2 file3 file4 file5 file6 file7 file8 file9 wordpress
[root@localhost pub]# ls wordpress/
test1 test2 test3 test4 test5 test6 test7 test8 test9
四、客户端
安装
[root@localhost ~]# yum install ftp lftp -y
登录
方法一:ftp
[root@localhost ~]# ftp 192.168.1.111
Connected to 192.168.1.111 (192.168.1.111).
220 (vsFTPd 3.0.2)
Name (192.168.1.111:root): ftp 用户名:ftp
331 Please specify the password.
Password: 密码:空,直接回车
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> !pwd 本地所在位置路径
/root
ftp> pwd 所在ftp位置路径
257 "/"
此方法不支持tab补全,建议用方法二lftp来登录远程服务器
方法二:lftp
[root@localhost ~]# lftp 192.168.1.111 不用输入用户密码,直接已连接
lftp 192.168.1.111:~>
[root@localhost ~]# lftp 192.168.1.111
lftp 192.168.1.111:/> cd pub/
lftp 192.168.1.111:/pub> ls
-rw-r--r-- 1 0 0 0 May 17 09:37 file1
-rw-r--r-- 1 0 0 0 May 17 09:37 file2
-rw-r--r-- 1 0 0 0 May 17 09:37 file3
-rw-r--r-- 1 0 0 0 May 17 09:37 file4
-rw-r--r-- 1 0 0 0 May 17 09:37 file5
-rw-r--r-- 1 0 0 0 May 17 09:37 file6
-rw-r--r-- 1 0 0 0 May 17 09:37 file7
-rw-r--r-- 1 0 0 0 May 17 09:37 file8
-rw-r--r-- 1 0 0 0 May 17 09:37 file9
drwxr-xr-x 2 0 0 123 May 17 09:39 wordpress
下载文件
lftp 192.168.1.111:/pub> get file1
下载目录
lftp 192.168.1.111:/pub> mirror wordpress 下载目录(同步目录及目录中的文件,成功,本地没有此目录,会自动创建)
Total: 1 directory, 9 files, 0 symlinks
New: 9 files, 0 symlinks
上传文件
lftp 192.168.1.111:/pub> put /etc/passwd 上传文件,提示没有权限
put: Access failed: 550 Permission denied. (passwd)
上传目录
lftp 192.168.1.111:/pub> mirror -R aa 同步目录,上传目录
mirror: Access failed: 550 Permission denied. (sdf1)
mirror: Access failed: 550 Permission denied. (sdf2)
mirror: Access failed: 550 Permission denied. (sdf3)
mirror: Access failed: 550 Permission denied. (sdf4)
mirror: Access failed: 550 Permission denied. (sdf5)
mirror: Access failed: 550 Permission denied. (sdf6)
mirror: Access failed: 550 Permission denied. (sdf7)
mirror: Access failed: 550 Permission denied. (sdf8)
mirror: Access failed: 550 Permission denied. (sdf9)
Total: 1 directory, 9 files, 0 symlinks
New: 9 files, 0 symlinks
9 errors detected
服务端修改配置文件及目录权限
现在只可下载,不可上传,服务端修改配置文件
vim /etc/vsftpd/vsftpd.conf
[root@localhost pub]# /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 允许匿名用户登录
anon_upload_enable=YES 允许上传文件
anon_mkdir_write_enable=YES 允许创建目录
anon_other_write_enable=YES 文件的修改及删除权限,需要手动添加
anon_umask=022 加掩码,否则后期可能出现文件无法删除
chroot_local_user=YES NO为可切换目录,与下面参数可以配合使用
chroot_list_enable=NO 不开启特例列表,如果开启,刚表中的可以切换目录
allow_writeable_chroot=YES 允许可写
anon_root=/var/ftp/ 匿名用户默认路径
#local_root=/home/ftpwork 系统用户的默认路径 本次禁用
修改目录权限
[root@localhost ~]# chmod 755 -R /var/ftp/
[root@localhost ]# chmod o+w -R /var/ftp/pub/
重启服务
[root@localhost pub]# systemctl restart vsftpd
再次使用客户端测试
[root@localhost ~]# lftp 192.168.1.111
lftp 192.168.1.111:/> cd pub/
下载文件
lftp 192.168.1.111:/pub> get file1 上传文件
下载目录
lftp 192.168.1.111:/pub> mirror wordpress 下载目录
Total: 1 directory, 9 files, 0 symlinks
New: 9 files, 0 symlinks
lftp 192.168.1.111:/pub> rm -rf wordpress/ 删除目录
rm ok, `wordpress/' removed
lftp 192.168.1.111:/pub> mirror -R wordpress/ 上传目录
Total: 1 directory, 9 files, 0 symlinks
New: 9 files, 0 symlinks
批量上传
lftp 192.168.1.111:/pub> mput a.txt b.txt
Total 2 files transferred
批量下载
lftp 192.168.1.111:/pub> mget file4 file5 file6
Total 3 files transferred
五、案例
设置禁用匿名用户,只允许本地用户登录,不允许离开家目录
编辑配置文件/etc/vsftpd/vsftpd.conf
[root@localhost pub]# /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 不允许匿名用户登录
anon_upload_enable=YES 允许上传文件
anon_mkdir_write_enable=YES 允许创建目录
anon_other_write_enable=YES 文件的修改及删除权限,需要手动添加
anon_umask=022 加掩码,否则后期可能出现文件无法删除
chroot_local_user=YES NO为可切换目录,与下面参数可以配合使用
chroot_list_enable=NO 不开启特例列表,如果开启,刚表中的可以切换目录
allow_writeable_chroot=YES 允许可写
anon_root=/var/ftp/ 匿名用户默认路径
#local_root=/home/ftpwork 系统用户的默认路径 本次禁用
重启服务
[root@localhost pub]# systemctl restart vsftpd
客户端测试
[root@localhost ~]# lftp -u yjy 192.168.1.111
Password:
lftp yjy@192.168.1.111:/> pwd
ftp://yjy@192.168.1.111/
lftp yjy@192.168.1.111:/> put a.txt 上传
lftp yjy@192.168.1.111:/> rm -rf a.txt 删除
lftp yjy@192.168.1.111:/> cd /home 不可以离开家目录
cd: Access failed: 550 Failed to change directory. (/home)
------end