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
并未尝试,祝好~