ftp|lftp
- ftp(File Transfer Protocol)文件传输协议
- C/S模式
- 默认使用20、21端口:20端口传输数据,21端口传输命令
- PORT主动模式
- PASV被动模式
vsftpd
- 安装 yum install vsftpd -y
- 三种认证模式:匿名用户、本地用户、虚拟用户
匿名用户
- 使用ftp用户作为映射用户,默认家目录是/var/ftp
- 相关配置文件参数详解
参数 |
功能 |
anonymous_enable=[YES| NO] |
是否允许匿名用户访问,默认YES |
write_enable=[YES|NO] |
是否允许修改文件系统,默认为YES |
anon_upload_enable=[YES|NO] |
是否允许匿名用户上传文件,默认NO |
anon_mkdir_write_enable=[YES|NO] |
是否允许匿名用户创建文件夹,默认NO |
anon_other_write_enable=[YES|NO] |
是否允许匿名用户具有删除、重命名等权限,默认NO |
本地用户
- 使用本地用户,家目录即为默认存储目录,安全性大于匿名用户
- 相关配置文件参数详解
参数 |
功能 |
local_enable=[YES|NO] |
是否允许本地用户登陆ftp,默认YES |
local_umask=022 |
本地用户上传文件的umask值 |
write_enable=[YES|NO] |
是否允许修改文件系统,默认为YES |
chroot_local_user=[YES|NO] |
将用户权限禁锢在家目录,默认为NO |
allow_writeable_chroot=[YES|NO] |
是否允许对家目录目录执行写入操作 |
虚拟用户
- 创建用户数据库文件,仅供ftp服务进行认证使用,安全性最高
示例
要求
- 以/ftp作为ftp根目录,/ftp/pub作为公共目录只允许查看、下载
- /ftp/hr目录只允许hr用户上传、下载、删除等操作,别的用户不可以查看
- /ftp/cw目录只允许cw用户上次、下载、删除等操作,别的用户不可以查看
- 本地用户登录ftp需要禁锢在家目录
环境
系统 |
IP |
软件 |
备注 |
Server_centos7 |
192.168.11.140 |
vsftpd |
关闭防火墙和selinux |
Client_centos7 |
192.168.11.141 |
ftp lftp |
null |
操作步骤
Server端操作步骤
- 安装
]# yum install vsftpd -y
- 创建/ftp/{pub,hr,cw}目录
]# mkdir -p /ftp/{pub,hr,cw}
- 创建本地用户
]# useradd -d /ftp -s /sbin/nologin hr;echo "123123"|passwd --stdin hr
]# chown -R hr.hr /ftp/hr;chmod 700 /ftp/hr
]# useradd -d /ftp -s /sbin/nologin cw;echo "123123"|passwd --stdin cw
]# chown -R cw.cw /ftp/cw;chmod 700 /ftp/cw
- 修改配置文件
]# mv /etc/vsftpd/vsftpd.conf{,.bak}
]# grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
]# systemctl start vsftpd
Client端操作步骤
- 安装ftp/lftp工具
]# yum install ftp lftp -y #根据自己喜好选择安装ftp/lftp
- 验证cw用户是否可以在/ftp/cw目录下上传、下载、删除等操作
]# lftp -u cw 192.168.11.140
lftp cw@192.168.11.140:~> ls
drwx------ 2 0 0 6 May 30 10:27 cw
drwx------ 2 0 0 6 May 30 10:27 hr
drwxr-xr-x 2 0 0 6 May 30 10:27 pub
lftp cw@192.168.11.140:/cw> ls
lftp cw@192.168.11.140:/cw> pwd
ftp://cw@192.168.11.140/cw
lftp cw@192.168.11.140:/cw> put /etc/issue
23 bytes transferred
lftp cw@192.168.11.140:/cw> ls
-rw-r--r-- 1 1003 1003 23 May 30 10:34 issue
lftp cw@192.168.11.140:/cw> mkdir test
mkdir ok, `test' created
lftp cw@192.168.11.140:/cw> ls
-rw-r--r-- 1 1003 1003 23 May 30 10:34 issue
drwxr-xr-x 2 1003 1003 6 May 30 10:34 test
lftp cw@192.168.11.140:/cw> rm -rf test
rm ok, `test' removed
lftp cw@192.168.11.140:/cw> ls
-rw-r--r-- 1 1003 1003 23 May 30 10:34 issue
- 验证cw用户是否可查看/ftp/{pub,hr}目录的内容,并是否可以上传、下载、删除等
lftp cw@192.168.11.140:/> pwd
ftp://cw@192.168.11.140/
lftp cw@192.168.11.140:/> ls
drwx------ 2 0 0 6 May 30 10:27 cw
drwx------ 2 0 0 6 May 30 10:27 hr
drwxr-xr-x 2 0 0 6 May 30 10:27 pub
lftp cw@192.168.11.140:/> cd hr
lftp cw@192.168.11.140:/hr> pwd
ftp://cw@192.168.11.140/hr
lftp cw@192.168.11.140:/hr> ls
ls: Access failed: 550 Failed to change directory.
lftp cw@192.168.11.140:/hr>
lftp cw@192.168.11.140:/> pwd
ftp://cw@192.168.11.140/
lftp cw@192.168.11.140:/> ls
drwx------ 2 0 0 6 May 30 10:27 cw
drwx------ 2 0 0 6 May 30 10:27 hr
drwxr-xr-x 2 0 0 6 May 30 10:27 pub
lftp cw@192.168.11.140:/> cd hr
lftp cw@192.168.11.140:/hr> pwd
ftp://cw@192.168.11.140/hr
lftp cw@192.168.11.140:/hr> ls
ls: Access failed: 550 Failed to change directory.
lftp cw@192.168.11.140:/hr> cd ../pub/
lftp cw@192.168.11.140:/pub> ls
lftp cw@192.168.11.140:/pub> put /etc/redhat-release
put: Access failed: 553 Could not create file. (redhat-release)
lftp cw@192.168.11.140:/pub> ls
-rw-r--r-- 1 0 0 0 May 30 10:37 1.txt
lftp cw@192.168.11.140:/pub> get 1.txt
lftp cw@192.168.11.140:/pub> !ls
1.txt anaconda-ks.cfg apache-tomcat-8.5.53.tar.gz dead.letter test.file
- 符合示例要求,结束
注意点:
1.注意目录的权限
2.注意vsftp.conf的配置文件是否禁锢在家目录
3.vsftpd.conf参数详解,也可以 man vsftpd.conf查看帮助