proftp安装配置,虚拟账号便于管理
首先下载安装:
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用户修改文件的权限设置,可以修改以下设置
<Limit SITE_CHMOD>
DenyAll #禁用; AllowAll 启用全部用户; AllowUser abc 只允许abc用户
</Limit>
参考: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 使用者





























