最新消息:运维之路

CentOs6.x的FTP服务搭建(vsftp与pure-ftp)

系统运维 admin 120浏览 0评论

ftp-repository-wordlists-1280x600

Linux下有一款非常出名的FTP软件 VSFTP 另外一款也比较强大的是pure-ftp..

个人比较喜欢用vsftp,下面会详细记录 安装配置 vsftp与pure-ftp这两款FTP程序的

查看是否已经安装vsftpd

rpm -qa | grep vsftpd
如果没有,就安装,并设置开机启动

yum -y install vsftpd
chkconfig vsftpd on

#修改vsftpd.conf  修改前备份这是一个好习惯
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
vi /etc/vsftpd/vsftpd.conf
#下面只写一些比较重要的配置更改
#服务器独立运行
listen=YES
# 关闭匿名访问
anonymous_enable=NO
# 本地用户可访问
local_enable=YES
# 用户不能离开主目录
chroot_local_user=YES
chroot_list_enable=YES
#PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
pam_service_name=vsftpd 
#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
guest_username=ftp
#设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名
user_config_dir=/etc/vsftpd/vuser_conf
#开启PASV模式
pasv_enable=YES
#被动访问端口限制
pasv_min_port=40000
pasv_max_port=50000
#是否开启tcp_wrap防火墙
tcp_wrappers=YES
#设定支持ASCII(二进制)模式的上传和下载功能
ascii_upload_enable=YES
ascii_download_enable=YES

#增加日志记录
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

安装Berkeley DB工具,用于PAM模块使用。

yum install db4 db4-utils

接下来
#创建用户密码文本,注意奇行是用户名,偶行是密码
vi /etc/vsftpd/vuser_passwd.txt
ftptest
ftp123456
#然后加密
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

#编辑认证文件,全部注释掉原来语句,再增加以下两句
vi /etc/pam.d/vsftpd

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

#创建虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/
#文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
vi /etc/vsftpd/vuser_conf/test
#虚拟用户根目录,根据自己的实际情况修改
local_root=/data/ftp
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#最新的vsftpd要求对主目录不能有写的权限所以ftp为755,主目录下面的子目录再设置777权限
mkdir /data/ftp
chmod -R 755 /data
chmod -R 777 /data/ftp

#建立限制用户访问目录的空文件
touch /etc/vsftpd/chroot_list

#如果启用vsftpd日志需手动建立日志文件
touch /var/log/xferlog 
touch /var/log/vsftpd.log



#关闭iptabls和vsftpd
service iptables stop

service vsftpd restart

现在可以使用PASV模式连接你的FTP服务器了~

常见问题:
如果登录时出现
500 OOPS: priv_sock_get_result. Connection closed by remote host.
yum update pam
还有一种会提示验证失败 各种查找之后 要检查下配置文件的虚拟用户是否存在系统中 不存在的话需要建立

 

下面介绍另外一种FTP (Pure-ftp)

pure-ftpd 官网是 http://www.pureftpd.org/project/pure-ftpd

先下载源码包  当然也可以直接yum装

wget --no-check-certificate http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.42.tar.bz2
yum -y  install  gcc gcc-++ gdb #一些依赖包
#.configure \
–prefix=/usr/local/pureftpd \ //pureftpd安装目录
–with-everything \ //安装几乎所有的功能,包括altlog、cookies、throttling、ratios、ftpwho、upload script、virtual users(puredb)、quotas、virtual hosts、directory aliases、external authentication、Bonjour、privilege separation本次安装只使用这个选项。
--with-cookie \ //当用户登录时显示指定的横幅
--with-diraliases \ //支持目录别名,用快捷方式代cd命令
--with-extauth \ //编译支持扩展验证的模块,大多数用户不使用这个选项
--with-ftpwho \ //支持pure-ftpwho命令,启用这个功能需要更多的额外内存
--with-language=english \ //修改服务器语言,默认是英文,如果你要做修改,请翻译‘src/messages_en.h’文件
--with-ldap \   //LADP目录支持,需要安装openldap
--with-minimal \ //FTP最小安装,最基本的功能
--with-mysql \ //MySQL支持,如果MySQL安装在自定义目录上,你需要使用命令—with-mysql=/usr/local/mysq这类
--with-nonroot \   //不需要root用户就可以启动服务
#make
#make install
#cd /usr/local/src/pure-ftpd-1.0.22 //切换到源码目录
#cd configuration-files //切换到这个目录
#chmod 755 pure-config.pl //让用户有完全权限(因为默认没有执行权限)
#cp pure-config-pl /usr/local/pureftpd/bin //把执行文件复制到bin目录下
#mkdir /usr/local/pureftpd/etc //新建FTP的配置文件夹目录
#cp pure-ftpd.conf /usr/local/pureftpd/etc //复制ftp配置文件到etc中
#cd .. //切换到/pure-ftpd-1.0.22目录中
#cp pureftpd-ldap.conf /usr/local/pureftpd/etc //相关配置文件复制到etc中
#cp pureftpd-mysql.conf /usr/local/pureftpd/etc //相关配置文件复制到etc中
#cp pureftpd-pgsql.conf /usr/local/pureftpd/etc //相关配置文件复制到etc中

按照需求修改配置文件
ChrootEveryone yes //锁定所有用户到家目录中
# TrustedGID 100 //信任组ID100,可以不锁定
MaxClientsNumber 50 //最大的客户端数量
MaxClientsPerIP 8 //同一个IP允许8个链接
DisplayDotFiles no //不显示隐藏文件
AnonymousOnly no //只允许匿名用户
NoAnonymous yes//不允许匿名用户
DontResolve yes //禁止反向解析
MaxIdleTime 10 //最大空闲10分钟
# LDAPConfigFile /etc/pureftpd-ldap.conf //LDAP配置文件目录
# MySQLConfigFile /etc/pureftpd-mysql.conf//MySQL配置文件目录
# PGSQLConfigFile /etc/pureftpd-pgsql.conf //PGSQL配置文件目录
PureDB /usr/local/pureftpd/etc/pureftpd.pdb //虚拟用户数据库
# UnixAuthentication yes //主机认证
LimitRecursion 2000 8 //别表最大显示2000个文件,最深8个目录
AnonymousCanCreateDirs no //是否允许匿名用户创建目录
#MaxLoad 4 //最多可下载的数量
# PassivePortRange 30000 50000 //主动连接的端口范围
ForcePassiveIP 192.168.0.1 //这个地址总是直到匿名目录
# AnonymousRatio 1 10 //匿名用户上传下载速度比率
# UserRatio 1 10 //用户上传下载速度比率
# Bind 127.0.0.1,21 //绑定IP和端口
# AnonymousBandwidth 8 //匿名用户带宽8KB
# UserBandwidth 8 //用户带宽8KB
Umask 133:022 //文件和目录的umask
MinUID 1000 //用户ID至少要大于1000才能登陆
AllowUserFXP no //是否允许用户使用FXP协议登陆
AllowAnonymousFXP no //是否允许匿名用户使用FXP协议
ProhibitDotFilesWrite no //是否允许写入点文件
ProhibitDotFilesRead no //是否允许读取点文件
AnonymousCantUpload yes //不允许匿名用户上传
#NoChmod yes //不允许用户改变权限
#KeepAllFiles yes //允许用户断点续传
#Quota 1000:10//磁盘配额
#MaxDiskUsage 99 //磁盘的最大利用率
#NoRename yes //不允许自动重命名
IPV4Only yes //只允许使用IPV4协议

 新建虚拟用户
注意:新建虚拟用户之前需要创建一个组合用户(属于操作系统上的)。

#groupadd ftpgroup //新建系统组
#useradd –g ftpgroup –d /dev/null –s /sbin/nologin ftpuser //新建用户加入ftpgroup中
#cd /usr/local/pureftpd/bin //切换到bin目录中
#./pure-pw useradd puser –u ftpuser –d /www/ftptest –m
//pure-pw useradd 虚拟用户名 –u 寄生到系统用户名 –d FTP目录 –m(把用户密码加入PDB数据库中,不需要重启FTP)
#cd /www //切换到WWW中
#chmod –R ftpuser:ftpgroup ftptest //把FTP目录的所属用户和组改为虚拟用户所依托的系统用户和组
6. 启动测试

#/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
Running: /usr/local/pureftpd/sbin/pure-ftpd -A -c50 -B -C8 -E -fftp -H -I10 -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb -L2000:8 -s -U133:022 -u1000 -i -Z -4
注:如果出现running说明启动成功。
接下来ftP连接进行测试

转载请注明:DevOps » CentOs6.x的FTP服务搭建(vsftp与pure-ftp)

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址