本实验配置用户在被动模式下,限制在ftp主目录内,可读写权限
如果在内网环境,服务器防火墙关闭状态,选择被动模式;
如果在外网环境,服务器防火墙开启状态,选择主动模式,需客户端关闭防火墙;
- 概述
FTP是文件传输协议,在内外网的文件传输中使用广泛。
本篇博客主要介绍FTP服务器的部署和测试。 - 软件环境部署
查看系统是否安装FTP软件(vsftpd),执行命令:rpm -qa | grep vsftpds,如下图
安装
yum install -y vsftpd
- 配置vsftpd
配置目录
vsftpd的主配置目录在/etc/vsftpd目录下,进入该目录cd /etc/vsftpd
创建用户列表
vim /etc/vsftpd/vir_user_list
--然后添加两行
ftp_vita
dFJee#sddegbed0
ftp_stri
JEdldedbN#WrcC
第一行是虚拟ftp的账号,第二行是该账号的密码,多个账号以此类推增加
生成加密文件
执行命令:
db_load -T -t hash -f /etc/vsftpd/vir_user_list /etc/vsftpd/vir_user_list.db
修改权限:
chmod 600 /etc/vsftpd/vir_user_list.db
创建虚拟用户配置目录和配置文件
执行命令:
mkdir -p /etc/vsftpd/vir_user_conf
创建虚拟用户配置文件:
touch /etc/vsftpd/vir_user_conf/ftp_vita
--添加以下内容
local_root=/home/www/upload --用户
anon_mkdir_write_enable=yes --创建目录权限
anon_other_write_enable=yes --写入权限
anon_upload_enable=yes --上传权限
anon_world_readable_only=yes --读取权限
配置vsftpd主配置文件
编辑配置文件/etc/vsftpd/vsftpd.conf,清空配置文件内容,写入如下信息:
#vim /etc/vsftpd/vsftp.conf
listen=YES
listen_port=21
pasv_enable=yes --使用被动模式 ,如果想要使用主动模式pasv_enable=NO
anonymous_enable=NO
virtual_use_local_privs=YES
write_enable=yes --允许用户写入,如果文件夹有写入权限,但这里不允许,一样不能写入,会提示550 Permission denied
local_umask=022
anon_upload_enable=NO
local_enable=YES
chroot_local_user=YES --限制用户在ftp主目录内
allow_writeable_chroot=YES --允许ftp根目录有写权限;默认如果启用chroot,必须保证ftp根目录不可写,否则会提示异常500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
guest_enable=yes
guest_username=ftp --操作系统中真实存在的系统用户,默认为ftp用户,必须保证ftp系统用户对ftp目录有读取和写入的权限;
max_clients=10
max_per_ip=10
pam_service_name=vsftpd.pam --使用的pam认证文件
user_config_dir=/etc/vsftpd/vir_user_conf --虚拟用户配置目录
xferlog_enable=YES
xferlog_file=/var/log/vsftp.log
xferlog_std_format=YES
配置vsftpd采用PAM认证
编辑配置文件/etc/pam.d/vsftpd,内容修改如下:
# vim /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/vir_user_conf onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
--file=/etc/vsftpd/vir_user_conf 修改为虚拟用户配置目录
--新建文件
# touch /etc/pam.d/vsftpd.pam
--增加以下内容
auth required pam_userdb.so db=/etc/vsftpd/vir_user_list
account required pam_userdb.so db=/etc/vsftpd/vir_user_list
--db=/etc/vsftpd/vir_user_list 为用户列表文件
修改FTP根目录的权限
由于上述内容中,配置了虚拟用户使用系统用户ftp来作为文件系统的访问用户,访问目录/home/www/upload。
因此需要ftp用户对该目录具有一定的权限。
执行命令:
#chown ftp /home/www/upload
启动vsftp服务
#service vsftpd start
命令行验证
# curl ftp://ftp_vita:'dFJee#sddegbed0'@192.168.31.115
-rw-r--r-- 1 0 0 4 May 19 13:53 index.html