一、什么是FTP
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为 “文传协议” 用于Internet上的控制文件的双向传输。
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftpd
二、使用pure-ftpd搭建FTP服务
pure-ftpd 官网 http://www.pureftpd.org/project/pure-ftpd
Terminal Command:
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.32.tar.bz2 tar jxf pure-ftpd-1.0.32.tar.bz2 cd pure-ftpd-1.0.32 ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-peruserlimits --with-tls make && make install cd configuration-file mkdir -p /usr/local/pureftpd/etc/ cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
三、pureftpd的配置
vim /usr/local/pureftpd/etc/pure-ftpd.conf
## 内容如下:
ChrootEveryone yes ## 锁定所有用户到家目录中(ftp用户的加目录) BrokenClientsCompatibility no ## 兼容不同客户端 MaxClientsNumber 50 ## 服务器共允许同时连接最大的客户端数量 Daemonize yes ## 后台运行 MaxClientsPerIP 8 ## 同一个IP的最大连接数 VerboseLog no ## 是否记录所有客户命令 DisplayDotFiles yes ## 没有发送 -a 选项也显示隐藏文件 AnonymousOnly no ## 不允许认证用户,仅作为一个公共的匿名FTP。 NoAnonymous no ## 不允许匿名连接,仅允许认证用户使用。 SyslogFacility ftp ## Syslog facility (auth, authpriv, daemon, ftp, security, user, local*) 缺省的功能( facility )是 "ftp"。 "none" 将禁止日志。 DontResolve yes ## 不进行客户端DNS解析 MaxIdleTime 15 ## 最大空闲时间15分钟 # 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 ## 虚拟用户数据库 LimitRecursion 3136 8 ## 列表最大显示,文件3136,目录最深8层 AnonymousCanCreateDirs no ## 匿名用户可以创建目录 MaxLoad 4 ## 超出负载后禁止下载 AntiWarez yes ## 禁止下载匿名用户上传但未验证的文件 Umask 133:022 ## 创建文件/目录的默认umask MinUID 100 ## 最小UID限制 AllowUserFXP no ## 仅运行用户进行FXP传输 AllowAnonymousFXP no ## 对匿名用户和非匿名用户允许进行匿名FXP传输 ProhibitDotFilesWrite no ## 不能删除/写入隐藏文件 ProhibitDotFilesRead no ## 禁止读取隐藏文件 AutoRename no ## 有同名文件时不自动重命名 AnonymousCantUpload no ## 不允许匿名用户上传文件 PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid ## purefptd 父进程PID文件 MaxDiskUsage 99 ## 当磁盘使用量达到99%时禁止上传 CustomerProof yes ## 防止命令误操作 ClientCharset=gbk ## 防止Windows登录出现中文乱码
mkdir /data/ftp ## 创建ftp服务的目录 useradd www ## 创建以哪个账号的身份登录ftp /usr/local/pureftpd/bin/pure-pw useradd test1 -uwww -d /data/ftp ## 建立虚拟账号 /usr/local/pureftpd/bin/pure-pw mkdb ## 创建密码文件(这一步是必须的) /usr/local/pureftpd/bin/pure-pw list ## 列出用户 /usr/local/pureftpd/bin/pure-pw userdel test1 ## 删除账号
由于pureftpd没有自带系统服务,所以为了方便写了一个系统服务,放在
/etc/init.d
以后就可以用这种方式来管理pureftpd服务:
service pureftpd start
目录即可:
vim /etc/init.d/pureftpd
## 加入以下代码
Code:
#!/bin/bash # chkconfig: - 31 22 # description: pureftpd service. # Source Function Library . /etc/init.d/functions PUREFTPD="/usr/local/pureftpd/sbin/pure-config.pl" PUREFTPD_CONF="/usr/local/pureftpd/etc/pure-ftpd.conf" PUREFTPD_PROCESS="pure-ftpd" PUREFTPD_PID="/tmp/pure_pid" RETVAL=0 prog="Pureftpd" start() { echo -n $"Starting $prog:" daemon $PUREFTPD $PUREFTPD_CONF ps -C pure-ftpd|sed -n '2'p|cut -d" " -f2 >$PUREFTPD_PID RETVAL=$? echo return $RETVAL } stop() { echo -n $"Stoping $prog:" killproc $PUREFTPD_PROCESS -TERM rm -rf $PUREFTPD_PID RETVAL=$? echo return $RETVAL } restart() { stop start } status() { if [ ! -r $PUREFTPD_PID ] ; then echo "pureftpd is stopped" exit 0 fi PID=`cat $PUREFTPD_PID` if ps -p $PID | grep -q $PID; then echo "pureftpd (pid $PID) is running..." else echo "pureftpd dead but pid file exists" fi } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) echo $"Usage: $0 {start|stop|restart|status|}" RETVAL=1 esac exit $RETVAL
chmod 755 /etc/init.d/pureftpd ## 更改权限