23.FTP
FTP:文件传输协议。FTP服务器能够在网络上提供文件传输服务,远程用户可以上传和下载文件。
Linux下常用FTP服务器有:proftpd、wu-ftpd、vsftp
FTP使用的端口:
TCP端口20是数据通道(传输文件和目录列表) .
TCP端口21是命令通道(传输用户命令)
Proftpd
ProFTP的安装
下载相关软件
ProFTP的最新版本
ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.9.tar.gz
#tar fvxz proftpd-1.2.9.tar.gz
#cd proftpd-1.29/
#./configure --prefix=/usr/local/proftpd
--enable-shadow
--enable-autoshadow
--with-modules=mod_ratio:mod_readme:mod_wrap
#make
#make install
proftpd 服务器配置文件是/usr/local/proftpd/etc/proftpd.conf
• proftpd是 proftpd 的执行文件
• ftpcount:显示目前在服务器上有多少人连接
• ftpshut:指定再过多久之后 proftpd 服务停止
• ftpwho:察看目前有多少人使用 proftpd 服务
ok, 现在我们可以来启动proftp了 /usr/local/proftpd/sbin/proftpd用你的ftp客户端试验以下,应该可以正常登陆,包括匿名和linux用户名可以。
创建proftpd脚本
#cp proftpd-1.2.9/contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
记得修改proftpd的实际路径在中间加入proftpd
#chmod 755 /etc/rc.d/init.d/proftpd
Service proftpd restart
ftpshut
/usr/local/proftpd/sbin/ftpshut
定时停止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会使用到这个命令。
ftpshut -l 20 -d 10 +30 "FTP Server Will shutdown at time"
ftpshut -R或删除/etc/shutmsg便可重启服务
ProFTP的结构
/vi usr/local/proftpd/etc/proftpd.conf
#全局设置
设置项目1 参数1
设置项目2 参数2
#某个目录的设置
<Directory "路径名">
...
</Directory>
#关于匿名用户的设置
<Anonymous "匿名登陆的目录">
...
<Limit 限制动作>
...
</Limit>
</Anonymous>
ProFTP的配置
welcome.msg的配置
欢迎文件welcome.msg的参数
知道这些参数,我们就可以写出一个友好的欢迎语
vim /home/kaoyan/welcome.msg
Limit的配置
如何禁止某个地址访问ftp
比如禁止10.1.1网段的机器访问ftp,可以这么设置
<Limit LOGIN>
Order deny,allow
Deny from 10.1.1.
Allow from all
</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:是否允许登陆的权限
AllowUser 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit
虚拟主机的配置
如果我们要做一个端口是5555的ftp服务器
<VirtualHost 210.51.0.124>
ServerName "FTP Server"
Port 5555
...
<Directory 目录>
...
<Limit 动作>
...
</Limit>
...
</Directory>
</VirtualHost>
打开和关闭连接
– ftp hostname
– 完全退出使用quit或bye
文件传送
– put local-file
– mput local*
– get remote-file
– mget remote*
其他命令
– ls命令 / pwd命令/!cd/!Clear