上次我们讲了proftp的基本安装,由于我们后面有关于mysql和quota的设置,所以编译的时候把相应的模块都编译进去了,如果你不需要mysql和磁盘限额的功能,完全可以不需要这么编译。
这里要讲一个非常实用的命令,
/usr/local/proftpd/sbin/ftpshut
这个命令还是比较实用的,因为你可能需要不断的调整你的服务器,而这个命令就非常灵活,可以在不停止proftpd进程的前提下,定时停止ftp连接,这里将会详细说它是怎么使用的。
ftpshut [ -l min ] [ -d min ] time [ warning-message ... ]
-l min: 在ftp关闭服务之前的几分钟内,尝试建立新的ftp连接均不被接受
-d min: 在ftp关闭服务之前的几分钟内,已经建立的ftp连接将被中止
time: 在多少时间后,服务器将关闭ftp服务,格式有两种
+number 经过number分钟后关闭
MMHH 在今天MM:HH服务器将关闭
注意,这里我们用这个命令是把ftp服务给停了,但实际的proftpd进程还没停止,所以一般调试ftp会使用到这个命令。
举例:
再经过30分钟后,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
好了,开始讲一些proftpd的基本配置吧,其实大家如果熟悉apache的配置的话,你会发现proftpd的设置基本都是类似的,它的配置基本格式是
#全局设置
设置项目1 参数1
设置项目2 参数2
#某个目录的设置
<Directory "路径名">
...
...
</Directory>#关于匿名用户的设置
<Anonymous "匿名登陆的目录">
...
...
<Limit 限制动作>
...
...
</Limit>
</Anonymous>
我们用到的比较多的可能是Limit的使用,Limit大致有以下动作,基本能覆盖全部的权限了,大家灵活使用就是了。
CMD:Change Working Directory 改变目录针对上面这个Limit所应用的对象,又包括以下范围
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:是否允许登陆的权限
AllowUser 针对某个用户允许的Limit关于限制速率的参数为:
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit
TransferRate STOR|RETR 速度(Kbytes/s) user 使用者
下面我们以例子来解说proftp的配置,这样大家可能更加容易理解。
1。ftp服务器支持断点续传,且最大支持同时10人在线,每个ip只允许一个连接;
2。允许ftpusers用户组只能访问自己的目录,而不能访问上级或者其他目录;
3。用户登陆服务器时不显示ftp服务器版本信息,以增加安全性;
4。建立一个kaoyan的ftp帐户,属于ftpusers组,kaoyan用户只允许下载,没有可写的权限。下载速率限制在50Kbytes/s。
5。建立一个upload用户,也属于ftpusers组,同kaoyan用户的宿主目录一样,允许upload用户上传文件和创建目录的权限,但不允许下载,并且不允许删除目录和文件的权限,上传的速率控制在100Kbytes/s
先是前期的用户和组添加以及目录的权限设置
group add ftpusers
useradd -d /home/kaoyan -g ftpusers -s /bin/fales kaoyan
useradd -d /home/kaoyan -g ftpusers -s /bin/fales upload
chown -R kaoyan:upload /home/kaoyan
chmod -R 775 /home/kaoyan
如果你只想ftpusers组的用户访问,可以设置成770都行。
设置/usr/local/proftpd/etc/proftpd.conf
注意#表示注释,对设置没影响,可以不写
ServerName "Frank's FTP Server"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 30 #最多有30个proftpd的PID
User nobody
Group nobody
TimeoutStalled 10
MaxClients 10 #最多允许10个用户在线
MaxClientsPerHost 1 "对不起,一个IP只允许一个连接"
AllowStoreRestart on
#允许断点续传(上传),断点续续(下载)是默认支持的,不用设置
DisplayLogin welcome.msg #欢迎词文件
ServerIdent off #屏蔽服务器版本信息
DefaultRoot ~ ftpusers #设置ftpusers组只能访问自己的目录
<Directory />
AllowOverwrite on
</Directory>
<Directory /home/kaoyan>
<Limit WRITE> #不允许写
DenyUser kaoyan
</Limit>
<Limit RMD RNFR DELE RETR> #不允许删除,改名,下载
DenyUser upload
</Limit>
TransferRate RETR 50 user kaoyan
TransferRate STOR 100 user upload
</Directory>
我这里实现的方式还可以通过
<Anonymous ~kaoyan>
...
...
</Anonymous>
<><Anonymous ~upload>
...
...
</Anonymous>
而且更加灵活,具体用那种方式,看大家了,我只是给大家入个门而已
好了,今天就讲到这里,明天继续讲一些proftp的其他配置
相关文章:
proftpd学习笔记(一)
proftpd学习笔记(三)
proftpd学习笔记(四)
我按照你的文档装了一遍,运行正常,但如果要设置quota就出现了问题,凡是设置了quota的用户就没有办法登陆到ftp服务器。
[root@exper htdocs]# ftp localhost
Connected to localhost (127.0.0.1).
220 exper.qyzx.edu.sh.cn FTP server ready
Name (localhost:root): ml
331 Password required for ml.
Password:
421 Service not available, remote server has closed connection
Login failed.
No control connection for command: No such file or directory
在/var/log/quota中为
May 11 16:19:50 mod_quotatab/1.2.11[7407]: creating new tally entry to match limit entry
May 11 16:43:08 mod_quotatab/1.2.11[7422]: found limit entry for user 'ml'
May 11 16:43:08 mod_quotatab/1.2.11[7422]: creating new tally entry to match limit entry
这是为什么啊?应该怎么做才能解决?
你好,我的ftp只是普通应用而已,没有添加mysql,quota的。
我只是普通编译而已,就是
./configure --prefix=/usr/local/proftpd
make
make install
这一步也按照你的笔记做了,
group add ftpusers
useradd -d /home/kaoyan -g ftpusers -s /bin/fales kaoyan
useradd -d /home/kaoyan -g ftpusers -s /bin/fales upload
chown -R kaoyan:upload /home/kaoyan 修改了这句为chown -R kaoyan:ftpusers /home/kaoyan
chmod -R 775 /home/kaoyan
也给这两个用户添加了用户密码了的。
启动ftp后就提示下面的错误,请张老师看看。
已连接到 192.168.2.2 -> IP=192.168.2.2 PORT=21
220 shantou0754 FTP server ready
USER shantou0754
331 Anonymous login ok, send your complete email address as your password.
PASS (hidden)
530-Unable to set anonymous privileges.
530 Login incorrect.
连接失败
正在延迟 120 秒,在重新连接尝试第 1 次之前
你好,按照你的笔记装了proftpd后,再根据自己的情况修改了用户名,添加了root可以登陆,启动ftp后就什么都登陆不了的。提示的都是530错误的。
Posted by: Vincent at May 15, 2004 11:58 PM如果你不用mysql验证的话,可以在编译的时候不加mysql的参数,你的错误提示明显是你用了mysql的验证方式,按理在这篇文章没设置mysql验证,那是后来文章介绍.我劝你删除重新编译,能不加mysql参数尽量不加,排除这方面的错误,如果实在要用,那就好好检查一下你的配置文件,我怀疑你编译前没使ld.so.confN文件生效,导致mysql参数编译无效,进而验证失败.
Posted by: frank at March 29, 2004 07:36 PM只要把用户回到anonymous中就可以登录,不知为何?
Posted by: xujj at March 29, 2004 01:54 PM这是日志和错误提示,先谢了
Mar 29 13:52:03 xujj proftpd[1834]: xujj.luck.com (192.168.50.6[192.168.50.6]) - mod_sql/4.10: error: no SQLAuthTypes configured Mar 29 13:52:03 xujj proftpd[1834]: xujj.luck.com (192.168.50.6[192.168.50.6]) - FTP session opened. Mar 29 13:52:08 xujj proftpd[1834]: xujj.luck.com (192.168.50.6[192.168.50.6]) - PAM(upload): Authentication failure. Mar 29 13:52:44 xujj proftpd[1834]: xujj.luck.com (192.168.50.6[192.168.50.6]) - FTP session closed
Name (192.168.50.6:root): upload
331 Password required for upload.
Password:
530 Login incorrect.
Login failed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
提示什么?
Posted by: frank at March 28, 2004 10:34 PM不好意思,又来麻烦您了。
已经安装完了,匿名也可以正常登录。可以系统用户不能登录。加在
...
就可以,请教版主可能哪里出了问题?
Posted by: xujj at March 28, 2004 09:21 PMTransferRate RETR 50 user kaoyan
这个怎么没有用。
我的proftpd是v1.29
你好,这行是不是有问题,应该是chown -R kaoya:ftpusers吧?
chown -R kaoyan:upload /home/kaoyan