0.

  • 若没有特殊说明,本文所有命令都在root权限下执行
  • 本文用于记录安装FTP中遇到的问题和思考,不建议作为FTP服务器安装的handbook
  • FTP安装流程建议使用:http://www.cnblogs.com/qingfeng2010/archive/2010/12/26/1917121.html

 

 

 

1. vsftp

  • 检查vsftp是否安装
rpm –qa|grep vsftpd 
  • 安装vsftp
yum -y install vsftpd

貌似linux里可以后台执行的程序后面都要加个d?

 

 

 

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

  • 修改前建议备份配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  • 修改配置文件
vi /etc/vsftpd/vsftpd.conf

取消下面内容前面的注释或添加

anonymous_enable=YES/NO  是否允许匿名用户访问 

chroot_list_enable=YES   限定用户不可以离开主目录

chroot_list_file=/etc/vsftpd/chroot_list 

loca_enable=YES/NO 本地用户是否可以访问 注:如果为NO 则所有虚拟用户都将不能访问原因:虚拟用户访问在主机上其实是以本地用户访问的

pam_service_name=vsftpd  pam认证文件名 在/etc/pam.d/vsftpd

guest_enable=YES    启用虚拟用户功能

guest_username=ftp  指定虚拟用户的宿主用户 –centos 里面已经有内置的ftp用户了(注:此用户在chroot_list_file=/etc/vsftpd/chroot_list文件里所指定的用户)

user_config_dir=/etc/vsftpd/vuser_conf 设置虚拟用户个人vsftp的服务配置文件

(此文件后面不能出现空格)

 

————————引用自http://www.cnblogs.com/qingfeng2010/archive/2010/12/26/1917121.html

这个建议多看几个教程中的命令,结合conf里本身的注释添加或者减少,如果使用windows从文件管理器访问,还需要开启passive mode(被动模式),相关原理的说明链接http://www.cnblogs.com/qytan36/archive/2010/05/15/1736270.html

 

2.1 Windows里文件管理器无法访问的解决办法

  • 具体来说,就是在vsftpd.conf中添加以下内容,开启passive mode
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=4000

其中min和max两个端口号可以自行修改

  • 修改防火墙配置文件
vi /etc/sysconfig/iptables 

在打开的文件里添加

 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000:4000 -j ACCEPT

  

 

 

3.虚拟用户和用户认证

  • 检查是否安装 db4 db4-utils (其实我并不知道这是什么不过我的默认有安装)
rpm -qa|grep db4 

输出自己看啦。有版本信息就是有安装的。不过其实直接安装一下就好啦,反正已经安装了yum又不会再安装一遍

yum -y install db4-utils
  • 创建虚拟用户账号和密码
vi /etc/vsftpd/vftpuser

奇数行为用户名 ,偶数行为密码

比如

user1

passwd1

user2

passwd2

  • 生成虚拟用户db文件,用于虚拟用户认证相关
db_load -T -t hash -f /etc/vsftpd/vftpuser /etc/vsftpd/vftpuser.db

其中前面的文件名是刚才编辑的记录了虚拟用户账户和密码的文件,注意文件名一致

  • 生成虚拟用户认证文件
vi /etc/pam.d/vsftpd

使用#注释掉文件内的所有内容,因为不需要本地用户认证

#%PAM-1.0

session    optional    pam_keyinit.so    force revoke

auth       required     pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed

auth       required     pam_shells.so

auth       include      system-auth

account    include     system-auth

session    include     system-auth

session    required    pam_loginuid.so

32位系统增加以下两句:

auth      required     pam_userdb.so db=/etc/vsftpd/vftpuser
account   required     pam_userdb.so db=/etc/vsftpd/vftpuser

64位系统增加以下两句:

auth   required    /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required    /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

64位系统不能使用32位系统的认证语句。 

  • 创建虚拟用户配置文件

配置文件的路径在vsftpd.conf中的user_config_dir行记录,这里我们使用

user_config_dir=/etc/vsftpd/vuser_conf

请确保创建的目录和配置项目里的目录相同

创建vftpuser中记录的虚拟用户用户名同名的文件

vi /etc/vsftpd/vuser_conf/user1

内容如下 

local_root=/var/ftp/pri #可根据实际情况修改
write_enable=YES     #可写
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022

继续给所有用户建立用户配置。

  • 赋予文件夹权限
chmod 777 /var/ftp/pri
  • 指定虚拟用户映射的用户,因为centos里有自带的ftp用户,故没有特别创建用户

创建 chroot_list_file中指定路径的文件,我们使用的配置为

chroot_list_file=/etc/vsftpd/chroot_list

使用命令

vi /etc/vsftpd/chroot_list

或者

touch /etc/vsftpd/chroot_list
echo ftp >> /etc/vsftpd/chroot_list 

 

3.1 用户类型

vsftpd提供了3种ftp登录形式:

1、anonymous(匿名帐号)

使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能.

 2、real(真实帐号)

real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.

 3、guest(虚拟帐号)

如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容

 

————————————引用自http://jingyan.baidu.com/article/03b2f78c771db45ea237ae28.html

 

 

 

 

4. 修改防火墙设置

/etc/sysconfig/iptables

添加如下内容

-A INPUT -m state --state NEW -m tcp -p -dport 21 -j ACCEPT

如果开启了passive mode,记得添加端口

 

 

5.关闭Selinux  

setenforce 0  //临时关闭,重起系统失效

或者修改selinux配置关闭selinux

vi /etc/selinux/config 

修改下列项目

SELINUX=disable

据说这个是linux的权限管理软件,遵循最小权限原则,网络上一查基本上都是建议关闭,而不是怎么设置。emmmmm……

 

6.总(fei)结(hua)

感觉FTP整个配置过程缺少一个很简明的过程(对,我就是一键安装的支持者

其中文件的关联太复杂,一不注意就会失败,并且不具有很明晰的调试环境

在尝试了很多个教程很多次之后,才勉强能够拼凑出这个过程。感谢所有教程的贡献者。

以及教程中缺少必要的说明,对于好奇心重的宝宝真是猜的很酸爽的。  

最后

CentOS 7中默认使用Firewalld做防火墙,所以修改iptables后,在重启系统后,根本不管用。

Firewalld中添加端口方法如下:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

 

——————————————————引用自http://www.cnblogs.com/xiongpq/p/3384759.html

 

 并未尝试,祝好~

 

posted on 2017-09-11 22:54  独步倾城  阅读(901)  评论(0编辑  收藏  举报