基础准备:
1.使用的操作系统:centos7
2.安装开发环境
3.关闭selinux和防火墙
补充:
1.关闭selinux:
cat /etc/selinux/config #查看selinux是否关闭,如SELINUX=enforcting则未关闭。
vim /etc/selinux/config #直接编辑,修改SELINUX=disabled
然后cat /etc/selinux/config查看是否关闭,并重启系统生效
2.关闭防火墙
systemctl status firewalld.service #查看防火墙状态
Active:(runming)表示防火墙打开
systemctl stop firewalld service #执行关闭防火墙
Active:(dead)表示防火墙关闭
如果重启操作系统,防火墙会自动开启,所以应该执行下面的命令才能永久关闭防火墙
systemctl disable firewalld.service #禁止防火墙开机自启
systemctl enable firewalld.service #开启防火墙开机自启
使用systemctl disable firewalld.service禁止防火墙自启,执行完毕输入systemctl status firewalld.service查看一下防火墙状态
3.查看服务器ip地址
ip a
本机网卡上所显示出的ip地址就是ftp服务器的地址
1.安装vsftpd和相关的依赖软件
yum install vsftpd pam pam-devel db4 db4-devel db4-utils db4-tcl -y
2. 备份vsftpd.conf
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak #备份vsftpd.conf
3.配置vsftpd.conf
vim /etc/vsftpd/vsftpd.conf #编辑vsftpd.conf配置文件,编辑好保存退出
配置内容及说明:
anonymous_enable=NO #关闭匿名登陆
local_enable=YES #允许系统用户名登陆
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES #主动模式进行数据传输时使用20端口(pasv_enable=YES 是被动模式,默认设置,默认开启,但有防火墙时,被动模式会失效)
xferlog_enable=YES #开启日记功能
xferlog_std_format=YES #使用标准格式记录日志
xferlog_file=/var/log/xferlog #日志文件位置,会记录上传和下载文件的日志
dual_log_enable=YES #开启另一份日志记录
vsftpd_log_file=/var/log/vsftpd.log #记录用户登陆和上传下载日志
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
pam_service_name=vsftpd #设置PAM认证服务的配置文件名称,这是虚拟用户认证使用的文件
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES #这几个选项的作用是用户不能查看主目录之外的其他目录
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #用户名写入这个文件,能查看主目录外其他目录
guest_enable=YES
guest_username=ftp #所有的ftp虚拟用户将会转换成这个配置参数配置的用户
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf #虚拟用户的配置文件所在目录
清空vsftpd.conf的内容,并将该配置内容复制进去, 注意字符之间首位不要有空格,防止服务启动时出错
4.创建虚拟用户配置文件存放的目录,这个目录是vsftpd.conf配置文件中最后一行参数user_config_dir=/etc/vsftpd/vconf所定义的
mkdir -p /etc/vsftpd/vconf #创建虚拟用户配置文件存放的目录,虚拟用户的配置文件会存放在此目录中
5.创建保存虚拟用户账号密码的文件
touch /etc/vsftpd/vusers #虚拟用户的登陆账号密码都会储存在此
6.在保存虚拟用户账号密码的文件中创建测试用户
echo "test" >> /etc/vsftpd/vusers #奇数行是用户名
echo "123456" >>/etc/vsftpd/vusers #偶数行是密码
7.生成虚拟用户数据库加密文件
db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db #生成数据库文件,每创建一个用户账户密码,要执行一次
8. 备份vsftpd的pam认证文件"/etc/pam.d/vsftpd"
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
9.修改vsftpd的pam认证文件"/etc/pam.d/vsftpd"
vim /etc/pam.d/vsftpd
首先删除里面所有内容,然后将以下内容复制进去后,保存退出
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
10. 创建虚拟用户账号的配置文件
注:
每个虚拟用户账号的配置文件可以不同
每个虚拟用户账号的配置文件是个独立文件
虚拟用户的配置文件,会新建到前面第3步所讲的vsftpd.conf配置内容中的参数user_config_dir=/etc/vsftpd/vconf,所定义的目录中
各个虚拟用户的配置文件名称,必须和虚拟用户数据库中的虚拟用户名相同
例:新建虚拟用户名user,则/etc/vsftpd/vconf/这个目录中,就必须新建配置文件名为user这个用户的文件
vim /etc/vsftpd/vconf/test
将下面虚拟用户配置内容复制进去,保存退出
虚拟用户配置文件内容:
local_root=/srv/vsftp/test #表示该用户上传下载ftp的目录,该目录可换成任何一个你所要设置访问的目录
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
11.创建虚拟用户的ftp上传目录
这个目录是由第10步的虚拟用户配置文件中的参数local_root=/srv/vsftp/test所指向的目录,将创建出test文件夹,用于储存上传下载的文件
mkdir -p /srv/vsftp/test
12. 修改虚拟用户在该ftp上传目录的权限,
这个用户是由第3步vsftpd.conf配置文件的参guest_username=ftp 所定义的
下图中test为ftp存放上传内容的目录文件夹
chown -R ftp.root /srv/vsftp/test
13. 创建文件vsftpd.conf配置文件中参数chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 所指定路径的的文件
这个文件和vsftpd.conf配置文件中的参数chroot_local_user=YES,chroot_list_enable=YES,这2个配合使用
用来表示如果在chroot_list_file参数中未定义任何用户,就没有任何用户能切换到ftp的上级目录
如果将用户名加入vsftpd.chroot_list,则该用户可以访问ftp上一级目录菜单
不创建此文件将无法连接到ftp,会让你一直输入用户名和密码
touch /etc/vsftpd/vsftpd.chroot_list
14. 启动vsftpd服务
systemctl start vsftpd
至此结束,去浏览器或资源管理器,输入ftp的地址,输入账号密码即可登陆
1.创建虚拟用户配置文件
vim /etc/vsftpd/vconf/coco #例:创建名为coco的虚拟用户,配置文件名即为coco
将上面第10步的配置内容复制进去保存退出,也可修改配置文件的参数,开启或关闭该用户的其他权限或功能
2.创建虚拟用户的用户名和密码
用户名必须和上一步所创建的配置文件名相同
echo "coco" >> /etc/vsftpd/vusers #例如:创建名为coco的用户登陆名,奇数行是用户名
echo "123456" >> /etc/vsftpd/vusers #例如:创建名为coco用户登陆密码,偶数行是密码
3.重新生成虚拟用户数据库加密文件
db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db #生成数据库文件,每创建或修改一个用户账户密码,要执行一次
至此创建完成,去浏览器或windows资源管理器,输入ftp 地址登陆