一、安装vsftpd和ftp客户端
1.安装vsftp
yum -y install vsftpd
可以看到安装成功,版本为3.0.2,安装成功之后默认是未启动的,我们需要手工启动
2.启动vsftp并设置为开机自启
systemctl start vsftpd
# 停止
systemctl stop vsftpd
# 重启
systemctl restart vsftpd
设置为开机自启动
systemctl enable vsftpd.service
3.测试ftp服务是否开启成功
启动成功后,使ftp客户端访问测试一下,需要先安装ftp客户端
yum -y install ftp
ftp localhost
用户名:ftp
密码:任意字符串(默认支持匿名访问)
ftp>dir 查看文件目录
二、配置用户和访问权限
1.配置vsftpd
cd /etc/vsftpd
编辑vsftpd.conf文件
vim vsftpd.conf
修改以下配置:
#不允许匿名访问
anonymous_enable=NO
......
#限制用户通过ftp只能访问自己的主目录
chroot_local_user=YES
#是否开启例外名单
chroot_list_enable=NO
#例外名单的路径
chroot_list_file=/etc/vsftpd/chroot_list
#主目录允许写
allow_writeable_chroot=YES
chroot_local_user和chroot_list_enable的关联关系如下
chroot_local_user=YES | chroot_local_user=NO | |
chroot_list_enable=YES | 所有ftp用户都被限定只能访问自己的主目录;chroot_list_file用于指定哪些用户不受此限制,即这些用户可以访问自己主目录外的目录 | 所有ftp用户都可以访问自己主目录外的目录;chroot_list_file用于指定哪些用户不受此限制 ,即这些用户只能访问自己的主目录 |
chroot_list_enable=NO | 所有ftp用户都被限定只能访问自己的主目录;不存在例外情况,chroot_list_file无效 | 所有ftp用户都可以访问自己主目录外的目录;不存在例外情况,chroot_list_file无效 |
如果不需要配置例外用户,则必须要把chroot_list_enable设置为NO,或者手动创建一个空的chroot_list
修改完配置文件后重启
systemctl restart vsftpd
2.新增FTP用户
#新增ftp用户ftpuser,设置其主目录/home/ftpuser
useradd -d /home/ftpuser ftpuser
#给用户ftpuser设置密码
passwd ftpuser
#限制用户只能用户ftp登录
usermod -s /sbin/nologin ftpuser
这个时候使用ftp客户端登录,有可能会提示登录失败
由于我们上面把用户shell设置为了/sbin/nologin,可以通过命令查看,但是/ect/shells里没有/sbin/nologin,需要手动添加
cat /etc/passwd
vim /etc/shells
添加一行/sbin/nologin
3.使用ftp客户端测试
#登录ftp服务
ftp localhost
#查看当前目录下的文件
ftp> dir
#切换到用户根目录,如果该用户允许访问主目录外的权限,则此运行此命令会访问到系统的根目录
ftp> cd /
#创建文件夹
ftp> mkdir test
#查看是否创建成功
ftp> dir
可以看到test文件夹创建成功
三、配置nginx访问ftp文件
nginx安装可访问
添加ftp目录到nginx配置,
location ^~ /profiles/ {
alias /home/ftpuser/;
}
使用浏览器访问
http://localhost/profiles/test/1.jpg 即对应文件文件目录/home/ftpuser/test/1.jpg