1. 安装vsftpd及pam认证服务软件

yum  install vsftpd*  -y
yum install pam* libdb-utils libdb* --skip-broken -y
#设置开机启动
systemctl enable vsftpd.service #启动
systemctl start vsftpd.service

2. 配置/etc/vsftpd/vsftpd.conf 文件

listen=YES    #若设定为 YES 表示 vsftpd 是以 standalone 的方式来启动的
anonymous_enable=NO #静止匿名登录
local_enable=YES #设定本地用户可以访问
local_umask=022 #设定上传后文件的权限掩码
dirmessage_enable=YES #设定开启目录标语功能
use_localtime=YES
xferlog_enable=YES #设定开启日志记录功能
connect_from_port_20=YES #设定端口20进行数据连接 chroot_local_user=YES #禁止用户访问除主目录以外的目录
local_root=/data/vsftpd #访问的目录
ascii_upload_enable=YES
ascii_download_enable=YES #设定支持ASCII模式的上传和下载功能 pam_service_name=vsftpd #设定,启用pam认证
guest_enable=YES #启动虚拟用户
guest_username=vsftpd #虚拟用户使用的系统用户名
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户使用的配置文件目录
virtual_use_local_privs=YES #虚拟用户和本地用户有相同的权限
allow_writeable_chroot=YES #只能访问自身所属目录,否则会有 500 错误

3. 创建虚拟用户

创建vsftpd系统用户
#useradd vsftpd -d /data/vsftpd -s /sbin/nologin
#chown -R vsftpd:vsftpd /data/vsftpd 填写用户名good和密码123,其它依次填写
#vim /etc/vsftpd/ftpuser.txt
good 生成数据库文件
#db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
在/etc/pam.d/下创建配置vsftpd的数据库pam认证文件vsftpd,其它注释或删掉
#vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
配置good用户
#mkdir -p /etc/vsftpd/vsftpd_user_conf
#vim /etc/vsftpd/vsftpd_user_conf/good
local_root=/data/vsftpd/good
write_enable=YES
#mkdir -p /data/vsftpd/good

4. 配置selinux

查看 selinux配置
[root@localhost ~]# getsebool -a | grep ftpd
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
使能ftpd_full_access
#setsebool -P allow_ftpd_full_access 1
需要防火墙添加FTP服务。
#firewall-cmd --permanent --zone=public --add-service=ftp
#firewall-cmd --reload

5. 重启vsftpd并测试

[root@localhost ~]#systemcl restart vsftpd.service

[root@localhost ~]# ftp localhost
Trying ::...
ftp: connect to address ::1拒绝连接
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
(vsFTPd 3.0.)
Name (localhost:root): good
Please specify the password.
Password:
Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
Entering Passive Mode (,,,,,).
Here comes the directory listing.
-rwxrwxrwx Sep : good
-rwxrwxrwx Sep : test2
Directory send OK.
ftp>

6. 虚拟用户权限配置

管理员权限
local_root=/data/vsftpd
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES 只能读写不能修改删除
local_root=/data/vsftpd/good
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
virtual_use_local_privs=NO 只能读
local_root=/data/vsftpd
anon_world_readable_only=NO

参考文献:

https://www.cnblogs.com/chenbaoli/p/8195697.html

https://blog.csdn.net/xujin12368/article/details/80920246

http://www.cnblogs.com/fengdejiyixx/p/9324689.html

https://blog.csdn.net/programer_bei/article/details/52333586

最新文章

  1. .NET Core采用的全新配置系统[3]: “Options模式”下的配置是如何绑定为Options对象
  2. Java EE 经验
  3. rabbitmq connection/channel/consumer/queue的数量关系详细分析
  4. android View事件分发机制结论
  5. 实现关闭窗口IE不提示兼容火狐
  6. 第五天:内置对象(7.Javascript内置对象)
  7. js 自带的 reduce() 方法
  8. [转]如何利用ndk-stack工具查看so库的调用堆栈【代码示例】?
  9. c语言编程之队列(链表实现)
  10. 修改Eclipse字体
  11. Mybatis的分表实战
  12. Temporary failure in name resolutionf的解决方法
  13. Selenium之ActionChains (二)
  14. 用Python编写一个简单的Http Server
  15. 【bzoj3224】【Tyvj 1728】 普通平衡树 树状数组
  16. Java web中listener、 filter、servlet 加载顺序
  17. 《JavaScript 实战》:实现拖放(Drag & Drop)效果
  18. 297. Serialize and Deserialize Binary Tree二叉树的序列化和反序列化(就用Q)
  19. java里面如何提升编写速度
  20. 成都Uber优步司机奖励政策(4月7日)

热门文章

  1. css outline属性
  2. windows下安装jekyll
  3. case选择语句
  4. QTimer掉坑出坑过程
  5. 1100 final standings
  6. Intellij IDEA 快速补全for循环:fori
  7. PHP单链表的基本操作
  8. 2019.1.10 Mac安装Nginx服务器
  9. 使用npm uninstall卸载express无效
  10. PAT——1017. A除以B