需求来源于高职国赛题目:

  1. 使用虚拟用户认证方式,创建用户virtftp, shell为/sbin/nologin,并将虚拟用户映射至virtftp用户。
  2. 监听21号端口
  3. 设置虚拟用户的主目录为/data/ftp_data且在目录下创建ftp_test空文件。
  4. 将/data/ftp_data属主属组更改为virtftp,并且属主有写权限。
  5. 关闭PASV模式的安全检查。
  6. 设置客户端最大连接数为100,每个IP允许3个连接数。
  7. 设置被动模式的端口范围为9000-9200。
  8. ftpuser虚拟用户可以下载与上传文件
  9. ftpadmin虚拟用户可以下载与上传文件以及删除重命名操作,上传文件的umask为022。

10)配置文件要求:

/etc/pam.d/vsftpd.vu,(pam配置文件)

/etc/vsftpd/vlogin.db, (用户数据库)

/etc/vsftpd/ftp_user (该目录下ftp用户权限配置目录)

安装VSFTPD

yum install -y vsftpd

配置vsftpd服务的宿主

useradd vsftpdadmin -s /sbin/nologin

这个vsftpdadmin只是用来替换root的,并不需要登录

建立ftp虚拟账户的宿主账户

useradd virtftp -s /sbin/nologin

virtftp账户是虚拟用户的本地宿主用户,不需要登录

建立ftp共享文件夹

mkdir -p /data/web_data
chgrp -R virtftp /data/web_data

配置vsftpd.conf

主要修改下面部分:
anonymous_enable=YES  -->  anonymous_enable=NO   //不允许匿名用户访问,默认是允许。
#chroot_list_enable=YES  -->  chroot_list_enable=YES      //不允许FTP用户离开自己主目录,默认是被注释掉的。
#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list  
//如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置,如果不开启用户登录时就会报500 OOPS的错。
注意:/etc/vsftp/chroot_list本身是不存在的,
这要建立vim /etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了
无需修改:

local_enable=YES //允许本地用户访问
write_enable=YES //允许写入
local_umask=022 //上传后文件的权限掩码
dirmessage_enable=YES //开启目录标语,默认是YES,开不开无所谓,默认就行
xferlog_enable=YES //开启日志,默认是YES,不用改
connect_from_port_20=YES //设定连接端口20,不用改
xferlog_std_format=YES //设定vsftpd的服务日志保存路径,不用改

#idle_session_timeout=600 --> idle_session_timeout=600//会话超时时间阈值

#async_abor_enable=YES --> async_abor_enable=YES //支持异步传输功能

#ascii_upload_enable=YES --> ascii_upload_enable=YES //支持ASCII模式的下载功能

#ftpd_banner=Welcome to blah FTP service //FTP的登录欢迎语

#chroot_local_user=YES --> chroot_local_user=YES //禁止本地用户登出自己的FTP主目录,默认被注释

pam_service_name=vsftpd //设定pam服务下vsftpdd的验证配置文件名

userlist_enable=YES //拒绝登录用户名单,不用改

TCP_wrappers=YES //限制主机对VSFTP服务器的访问(通过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)

如果没有则添加

local_root=/data/web_data //ftp共享根目录

allow_writeable_chroot=YES //允许写

pasv_proiscuous=YES //关闭pasv模式的安全检查

max_clients=100 //最大客户端连接数量

max_per_ip=3 //同一ip下允许的连接数

pasv_min_port=9000 //被动模式(pasv)的端口范围(小

pasv_max_port=9200 //被动模式(pasv)的端口范围(大

user_config_dir=/etc/vsftpd/ftp_user //虚拟用户个人vsftpd配置文件存放目录

建立日志文件

touch /var/log/vsftpd.log   //日志文件
chown vsftpdadmin:vsftpdadmin /var/log/vsftpd.log   //属于vsftpdadmin这个宿主

建立虚拟用户配置文件

mkdir /etc/vsftpd/ftp_user  //创建虚拟用户配置目录
touch /etc/vsftpd/user_list //创建虚拟账户列表

建立虚拟账户

vim /etc/vsftpd/user_list
ftpadmin    //用户名
12345678    //密码
ftpuser     //用户名
12345678    //密码

奇数行为用户名,偶数行为密码,以此类推

vim /etc/vsftp/chroot_list

加入需要锁定登录用户只能家目录的位置然后将帐户输入一行一个,保存就可以了

ftpuser           //用户名

生成数据库

db_load -T -t hash -f /etc/vsftpd/user_list /etc/vsftpd/vlogin.db

设置数据库文件的访问权限

chmod 600 /etc/vsftpd/vlogin.db
chmod 600 /etc/vsftpd/user_list

修改/etc/pam.d/vsftpd的配置

echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vlogin" >> /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vlogin" >> /etc/pam.d/vsftpd

或新建一个配置文件 然后将/etc/vsftpd/vsftpd.conf中的pam_service_name改为对应的名称,如下

touch /etc/pam.d/vsftpd.vu
vim /etc/pam.d/vsftpd.vu
vsftpd.vu中写入
auth    required    pam_userdb.so db=/etc/vsftpd/vlogin
account required    pam_userdb.so db=/etc/vsftpd/vlogin
修改vsftpd.conf
pam_service_name=vsftpd     -->     pam_service_name=vsftpd.vu

创建用户的配置文件

注意:用户配置文件的名字要和创建的“虚拟用户”名字对应

touch /etc/vsftpd/ftp_user/ftpadmin
vim /etc/vsftpd/ftp_user/ftpadmin
anon_upload_enable=YES          //允许上传
anon_mkdir_write_enable=YES     //允许创建文件夹
anon_other_write_enable=YES     //允许其他写入操作(重命名,删除等)
anon_umask=022              //用户上传的文件掩码
touch /etc/vsftpd/ftp_user/ftpuser
vim /etc/vsftpd/ftp_user/ftpuser
anon_upload_enable=YES          //允许用户上传

重启服务器 大功告成

最后修改:2021 年 04 月 09 日
如果觉得我的文章对你有用,请随意赞赏~