作者:丁木China | 来源:互联网 | 2014-05-28 09:12
wgetftp://mirror.wrpn.net/proftpd/distrib/source/proftpd-1.3.2.tar.bz2tarjxfproftpd-1.3.2.tar.bz2cdproftpd-1.3.2./configure--prefix/home/proftpd--disable-ipv6ma
wget
ftp://mirror.wrpn.net/proftpd/distrib/source/proftpd-1.3.2.tar.bz2
tar jxf proftpd-1.3.2.tar.bz2
cd proftpd-1.3.2
./configure --prefix=/home/proftpd --disable-ipv6
make && make install
vi /etc/rc.local
vi /home/proftpd/etc/proftpd.conf
修改端口,
# Port 21 is the standard FTP port.
Port
2121
# standalone 模式下耗费资源多一点,但配置简单
ServerType
standalone
#注释掉 编译时已经disable-ipv6,这里如果不注释掉,启动时会报错
#UseIPv6
off
#修改执行账号
User
nobody
Group
nobody
#去掉下面这一行的注释 “#”,这一行是把ftp用户限定在自己的目录下,禁止切换到上层目录
DefaultRoot ~
默认情况下proftpd是通过系统账号做认证的,或许你也跟我一样
不愿意用这种方式。那么有什么方式呢?查阅资料之后发现有另外两种方式。
一,采用mysql方式存储虚拟用户,如此一来用户容量巨大。比较适合公开ftp
server,对于我的应用过于夸张了。这里也不做详细介绍了,有兴趣的可以去搜索一下,资料很多。下面说一下资料并不多的方法。
二,文件形式的虚拟用户存储方案。
首先在proftpd.conf中添加以下两行:
AuthUserFile /home/proftpd/etc/ftp.passwd #
指定认证文件的存储路径
AuthOrder mod_auth_file.c mod_auth_unix.c #
这两个文件是proftpd认证是的先后次序,
mod_auth_file.c是我们要用的文件认证形式,mod_auth_unix.c是以系统账号认证
然后要做的就是创建认证文件(/home/proftpd/etc/ftp.passwd),这里需要用到proftp提供的一个工具:ftpasswd,可以在proftp源文件中contrib目录下找到:
#复制到指定目录
cp contrib/ftpasswd /home/proftpd/sbin/
最后就是添加账号:
./contrib/ftpasswd --file /home/proftpd/etc/ftp.passwd --name
ftpusername --passwd --home=/data/htdocs --shell=/sbin/nologin
执行后会提示输入账号密码,确认之后创建完毕
最最后,启动proftpd
/home/proftpd/sbin/proftpd start
接下来就可以用指定的端口、账号密码连接新proftpd了~
Notice:
proftpd默认情况下是不支持断点续传的,但是你又需要此功能?哈哈,很简单,只需要在proftpd.conf中添加以下两行,然后重启就ok
# break point
AllowRetrieveRestart on
AllowStoreRestart on
如果想允许ftp用户修改文件的权限设置,可以修改以下设置
DenyAll #禁用; AllowAll 启用全部用户; AllowUser abc 只允许abc用户
参考:http://www.proftpd.org/docs/howto/Limit.html
增加一些可能用到的命令:
#立即关闭的命令
/usr/local/proftpd/sbin/ftpshut +0
#关闭命令为
/usr/local/proftpd/sbin/ftpshut
ftpshut [ -l min ] [ -d min ] time [ warning-message ... ]
-l min: 在ftp关闭服务之前的几分钟内,尝试建立新的ftp连接均不被接受
-d min: 在ftp关闭服务之前的几分钟内,已经建立的ftp连接将被中止
time: 在多少时间后,服务器将关闭ftp服务,格式有两种
+number 经过number分钟后关闭
MMHH 在今天MM:HH服务器将关闭
举例:
在半小时后,将FTP服务关闭,在这之前的20分钟不可接受任何新的ftp连接,已经建立的在服务关闭前10分钟强制断线,并在客户端显示“FTP
Server Will shutdown at time”
ftpshut -l 20 -d 10 +30 "FTP Server Will shutdown at time"
其实ftpshut就是产生/etc/shutmsg ,你只要删除这个文件ftp又可以重新服务,或者
直接用
ftpshut -R
比较多的应用是Limit,Limit大致有以下动作,基本能覆盖全部的权限
CMD:Change Working Directory 改变目录
MKD:MaKe Directory 建立目录的权限
RNFR: ReName FRom 更改目录名的权限
DELE:DELEte 删除文件的权限
RMD:ReMove Directory 删除目录的权限
RETR:RETRieve 从服务端下载到客户端的权限
STOR:STORe 从客户端上传到服务端的权限
READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等
WRITE:写文件或者目录的权限,包括MKD和RMD
DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的
ALL:所有权限
LOGIN:是否允许登陆的权限
针对上面这个Limit所应用的对象,又包括以下范围
AllowUser 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit
关于限制速率的参数为:
TransferRate STOR|RETR 速度(Kbytes/s) user 使用者
配置proftpd可以断点续传:
AuthUserFile /etc/proftpd/ftp.passwd 虚拟用户文件
AuthOrder mod_auth_file.c 认证mod
RequireValidShell off 不使用有效的shell
AllowOverwrite on 可以覆盖
allowretrieverestart on
allowstorerestart on