FTP服务安装及配置

摘要

Ftp和vsftpd的区别 ftp只是文件传输协议的意思,而实现文件传输协议的服务器和客户端软件非常多,vsftp就是服务器端的一个软件名称,服务器端软件当然需要一个进程来运行了,对于vsftp后台进程就是vsftpd。当然FTP有客户端软件,cuteftp,ws-ftp太多了。

FTP

FTP


一、Ftp和vsftpd的区别

ftp只是文件传输协议的意思,而实现文件传输协议的服务器和客户端软件非常多,vsftp就是服务器端的一个软件名称,服务器端软件当然需要一个进程来运行了,对于vsftp后台进程就是vsftpd。当然FTP有客户端软件,cuteftp,ws-ftp太多了。

二、vsftpd介绍

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等

三、FTP 优点

①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用;

②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准;

③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作;
④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。

三、安装

1.基础环境

  1. [root@abcdocker ~]# uname -r
  2. 2.6.32-573.el6.x86_64
  3. [root@abcdocker ~]# cat /etc/redhat-release
  4. CentOS release 6.7 (Final)

2.关闭防火墙及Selinux

  1. [root@abcdocker ~]# /etc/init.d/iptables status
  2. iptables: Firewall is not running.
  3. [root@abcdocker ~]# getenforce
  4. Disabled

3.部署vsftpd及虚拟用户登陆

  1. [root@abcdocker ~]# yum install -y vsftpd #安装vsftpd程序
  2. [root@abcdocker ~]# yum install -y pam* db4*

4.修改配置文件

  1. [root@abcdocker ~]# cp /etc/vsftpd/vsftpd.conf{,.bak_2018-06-11} #修改前备份
  2. #配置文件如下:
  3. [root@abcdocker vsftpd]# cat vsftpd.conf
  4. anonymous_enable=NO
  5. local_enable=YES
  6. write_enable=YES
  7. local_umask=002
  8. dirmessage_enable=YES
  9. xferlog_enable=YES
  10. xferlog_std_format=YES
  11. chroot_local_user=YES
  12. chroot_list_enable=YES
  13. chroot_list_file=/etc/vsftpd/chroot_list
  14. listen=YES
  15. listen_port=1369
  16. port_enable=NO
  17. pasv_enable=YES
  18. pasv_min_port=9180
  19. pasv_max_port=9181
  20. pam_service_name=vsftpd
  21. userlist_enable=YES
  22. tcp_wrappers=YES
  23. guest_enable=YES
  24. pam_service_name=/etc/pam.d/vvsftpd
  25. guest_username=vsftpd
  26. virtual_use_local_privs=YES
  27. user_config_dir=/etc/vsftpd/ftplogin
  28. ####################配置文件注释##################
  29. anonymous_enable=NO #不允许匿名用户登录
  30. listen_port=1369 #FTP监听端口
  31. local_enable=YES #允许本地用户登录
  32. write_enable=YES #开启全局上传
  33. local_umask=022 #设置上传umask值为系统默认umask值
  34. dirmessage_enable=YES #允许为配置目录显示信息
  35. xferlog_enable=YES #打开日志记录功能
  36. connect_from_port_20=YES
  37. xferlog_std_format=YES
  38. chroot_local_user=YES
  39. chroot_list_enable=YES #是否禁锢chroot_list中的用户
  40. chroot_list_file=/etc/vsftpd/chroot_list # chroot_list文件保存位置
  41. listen=YES #是否作为一个独立守护进程运行
  42. userlist_enable=YES
  43. tcp_wrappers=YES
  44. guest_enable=YES #开启虚拟用户
  45. guest_username=vsftpd #FTP虚拟用户对应的系统用户
  46. virtual_use_local_privs=YES
  47. user_config_dir=/etc/vsftpd/ftplogin #授权FTP虚拟用户所在目录
  48. pam_service_name=/etc/pam.d/vvsftpd #PAM认证文件

相关文章:Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案


5.创建配置文件相关目录

  1. 1)创建chroot_list文件保存位置
  2. [root@abcdocker vsftpd]# touch /etc/vsftpd/chroot_list
  3. 2)创建授权FTP虚拟用户所在目录
  4. [root@abcdocker vsftpd]# mkdir /etc/vsftpd/ftplogin
  5. 3)创建FTP虚拟登陆账号
  6. [root@abcdocker vsftpd]# touch vuser
  7. [root@abcdocker vsftpd]# vim vuser
  8. abcdocker
  9. 123456
  10. 4)添加新的pam service
  11. [root@abcdocker vsftpd]# touch /etc/pam.d/vvsftpd
  12. [root@abcdocker vsftpd]# vim /etc/pam.d/vvsftpd
  13. #%PAM-1.0
  14. #auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
  15. #account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
  16. auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
  17. account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login
  18. #注意如果是32位系统,那就用32位的校验,本例是64位的
  19. 5)生成pam校验数据库文件
  20. [root@abcdocker vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
  21. [root@abcdocker vsftpd]# chmod 600 vuser
  22. #为了安全起见,建议在生成校验数据库之后,删除vuser文件; 或者修改vuser权限,不让别的用户读

6.创建本地映射用户并设置宿主目录权限

  1. 所有的FTP虚拟用户需要使用一个系统用户(vsftpd),这个系统用户不需要密码
  2. [root@abcdocker ~]# useradd -d /home/vsftpd vsftpd -s /sbin/nologin -M
  3. [root@abcdocker ~]# chown -R vsftpd /opt/ #授权目录
  4. [root@abcdocker ~]# cd /etc/vsftpd/ftplogin/
  5. #创建一个以FTP虚拟用户命名的文件
  6. [root@abcdocker ftplogin]# vim abcdocker
  7. [root@abcdocker ftplogin]# cat abcdocker
  8. anon_world_readable_only=NO
  9. write_enable=YES
  10. anon_mkdir_write_enable=YES
  11. anon_upload_enable=YES
  12. anon_other_write_enable=YES
  13. local_root=/opt/

7.启动FTP服务

  1. [root@abcdocker ~]# /etc/init.d/vsftpd start
  2. Starting vsftpd for vsftpd: [ OK ]
  3. [root@abcdocker ~]# netstat -lntup|grep vsftpd
  4. tcp 0 0 0.0.0.0:1369 0.0.0.0:* LISTEN 1667/vsftpd

四、连接测试

㈠使用浏览器模拟用户登陆
image_1cfn1cg061jqe1fnm1k99144l5sh1e.png-1917.1kB
#ftp默认端口21,我们修改为1369在浏览器访问地址也需要加上端口1369

因为我们设置不允许匿名登陆,所以登陆需要账号密码验证,账号密码就在vuser文件里
111.jpg-196.2kB

因为我们的FTP目录设置在/opt下,我们可以去/opt下创建一个目录进行验证
image_1cfn1i6edpdg42hh67gjdqu22n.png-657.1kB


⑵ 使用FTP工具连接查看
14.jpg-220.1kB
15.jpg-157.1kB

四、给FTP虚拟用户赋予权限(增加权限配置文件)详解

  1. #有上传/下载/修改权限
  2. anon_world_readable_only=NO
  3. write_enable=YES
  4. anon_mkdir_write_enable=YES
  5. anon_upload_enable=YES
  6. anon_other_write_enable=YES
  7. local_root=/data/upload/
  8. #只有上传/修改权限
  9. anon_world_readable_only=NO
  10. write_enable=YES
  11. anon_mkdir_write_enable=YES
  12. anon_upload_enable=YES
  13. local_root=/data/upload/
  14. #只有下载权限
  15. anon_world_readable_only=NO
  16. local_root=/data/upload/

五、常见错误

1.创建的用户没有家目录

QQ图片20180611165026.png-7.4kB

解决办法:

  1. $ mkdir -p /home/vsftpd

2. 错误530 Login incorrect

13.png-3.8kB
解决办法:
1.首先检查账号密码是否正确
2.新添加的账号出现这个问题可以清空login.db

  1. [root@iZ23ikji6hvZ vsftpd]# >login.db
  2. [root@iZ23ikji6hvZ vsftpd]# cat db.txt
  3. db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
  4. [root@iZ23ikji6hvZ vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db
  5. db_load: /etc/vsftpd/login.db: unexpected file type or format
  6. [root@iZ23ikji6hvZ vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/login.db


    A+
发布日期:2018年06月11日  所属分类:Linux
标签: