一、安装ProFTPD
1 、准备工作
一般系统自带的RPM 包的版本太老,有些Bug 并且有些功能不全,下载较新的ProFTPD 服务器进行安装。如果是自己练习或者内部使用,可以使用新版的,如果做服务器,提供正式的服务,一定使用稳的版本,这是一个良好的习惯。
下载地址: http://www.proftpd.org/download.html
安装gcc
如果系统没安装GCC 请安装GCC 程序。在FC4 的CD2 中,RedHat 这点比较讨厌,在Debian 系统中就简单了。
#rpm -ivh libstdc++-devel-4.0.0-8.i386.rpm
#rpm -ivh gcc-c++-4.0.0-8.i386.rpm
2 、编译安装ProFTPD
我们这里使用手工编译安装,配置文件放到/etc/proftpd/ 目录下,其他文件使用默认的安装目录,bin 文件为/usr/l数据库专家 认证l/sbin/proftpd 。
#tar -zxvf proftpd-1.3.0rc3.tar.gz // 解压源文件 #cd proftpd-1.3.0rc3 // 进入目录 #mkdir /etc/proftpd // 建立配置文件目录 #./configure --sysconfdir=/etc/proftpd // 生产config 文件 #make // 编译文件 #make install // 安装 # which proftpd // 查看系统文件位置 /usr/l数据库专家 认证l/sbin/proftpd |
注意:为规范服务器的管理,配置文件放到/etc/proftpd 目录下。
3 、手工启动ProFTPD
# /usr/l数据库专家 认证l/sbin/proftpd |
注:查看ProFTPD 是否启动可以使用ps –aux |grep proftpd 查看进程中是否有proftpd 。
4 、配置启动脚本,让ProFTPD 跟随服务器自己启动,我们把启动文件放到/etc/rc.l数据库专家 认证l 文件中。这种配置仅限于RedHat 系列的服务器。
#cp contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd // 将系统脚本拷贝到启动目录 # echo "/etc/init.d/proftpd start" >>/etc/rc.l数据库专家 认证l // 将启动脚本加到自启动文件中 |
二、配置proftpd 服务器
【目的】
1 、匿名用户能够登陆系统,并且能够向incoming 目录上传文件、建立目录,不能下载、删除、文件和目录,不能对目录和文件进行改名;pub 目录里面的文件只能下载,不能进行上传文件、删除,不能建立目录和删除目录。
2 、ftpadmin 用户可以对整个ftp 的进行管理,可以对文件进行上传、下载、删除、移动、改名等全部操作,对目录进行建立、删除、移动、改名等全部操作。
【配置过程】
1 、准备工作
(1 )、添加匿名的ftp 和ftpadmin 用户
默认的使用ftp 用户,一般系统安装后都会天加该用户,使用finger ftp 命令进行查询,看是否有ftp 用户。如果系统有该用户,使用vipw 命令修改ftp 用户的根为/dev/null (这个目录可以随便定义,根据你的需要进行选择,这理为了实验,随便找个目录)。如果没有该用户,我们自己添加该用户。
# useradd -s /bin/false -d /dev/null ftp # finger ftp # useradd -s /bin/false -d /var/ftp ftpadmin # finger ftpadmin #passwd ftpadmin |
(2 )、如果没有/var/ftp 目录,建立/var/ftp 根目录:
# mkdir /var/ftp # mkdir /var/ftp/incoming // 匿名用户可以写,不可以下载、删除、执行 # mkdir /var/ftp/pub // 匿名用户不能写、下载、删除、执行 # chgrp ftp /var/ftp/incoming // 将incoming 目录的所属组改为ftp # chgrp ftp /var/ftp/pub // 将pub 目录的所属组改为ftp # chown ftpadmin /var/ftp/pub // 将/var/ftp/pub 的目录属主该为ftpadmin # chown ftp /var/ftp/incoming/ // 将/var/ftp/incoming 的目录属主该为ftp # chmod –R 775 /var/ftp/incoming/ // 改变incoming 目录为属主和同组为全部权限,其他可读权限 # chmod –R 755 /var/ftp/pub // 改变pub 目录权限为属主全部权限,同组和其他为可读权限 |
可以使用下面命令进行确认:
# ls –l /var/ftp total 16 drwxrwxr-x 2 ftp ftp 4096 Mar 19 00:49 incoming drwxr-xr-x 2 ftpadmin ftp 4096 Mar 19 00:01 pub |
(3 )建立log 文件
# mkdir /var/log/proftpd # touch /var/log/proftpd/proftpd.log |
2 、修改配置文件
修改/etc/prftpd/proftp.conf
#User nobody # 以nobody,nogroup 的身份运行程序
Group nogroup#
ShowSymlinks off # 不显示链接文件的目标文件
DefaultRoot ~ !username # ~ 用户只能访问自己的目录,!usernmae 用户除外
RequireValidShell off # 用户是否拥有shell, 关闭安全#
UseReverseDNS off # 关闭DNS 反向查询, 节省连接时间
IdentLookups off
#TimeoutLogin 60 # 登陆时等待输入密码的时间
TimeoutIdle 300 # 登陆后允许IDLE 的时间
TimeoutNoTransfer 600 # 没有数据传输时允许IDLE 的时间
#
AllowStoreRestart on # 允许断点续上传AllowRetrieveRestart on # 允许断点续下载AllowForeignAddress on # 要允许 FXP 写成 on
#
PassivePorts 50000 65534 # 指定被动模式端口的范围#
MultilineRFC2228 on #FTP 安全扩展MaxClients 100 "Sorry, the m aximum n umber of allowed users are already connected (%m)" # 最大链接数限制MaxInstances 100 # 最大实例数为30,
MaxClientsPerHost 2 " 每个IP 只允许2 个连接" # 每个IP 只能有两个连接ServerLog /var/log/proftpd/
#SystemLog /var/log/proftpd/system_log
ExtendedLog /var/log/proftpd/proftpd.log ALL#
<Limit SITE_CHMOD>
DenyAll
</Limit>
<Anonymous /home/ftp>
User ftp
Group ftp
AnonRequirePassword off
MaxClients 50
MaxClientsPerHost 3 "Sorry, you may not connect more than five times."
Umask 002 002
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
TransferRate RETR 2000
TransferRate STOR 2000
<Limit LOGIN>
Allow from all
</Limit>
# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>
<Directory /home/ftp/incoming/*>
AllowOverwrite on
<Limit WRITE STOR CWD MKD>
Order Deny, Allow
Allow from all
</Limit>
<Limit READ RMD DELE RNFR RNTO SITE_CHMOD>
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/pub/*>
AllowOverwrite off
<Limit STOR CWD READ>
Order Deny, Allow
Allow from all
</Limit>
<Limit WRITE>
DenyAll
</Limit>
<Limit RMD DELE RNFR RNTO SITE_CHMOD>
DenyAll
</Limit>
</Directory>
</Anonymous>
<Anonymous ~>
User ftpadmin
Group ftp
# Limit the maximum number of anonymous logins
MaxClients 10
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
Umask 002 002
# Limit WRITE everywhere in the anonymous chroot
<Limit LOGIN>
Order Allow,Deny
Allow from 172.22.0.0/24
Allow from 172.16.22.0/24
Deny from all
</Limit>
<Directory /*>
AllowOverWrite on
<Limit SITE_CHMOD>
DenyAll
</Limit>
<Limit WRITE STOR CWD MKD READ RMD DELE RNFR RNTO SITE_CHMOD>
AllowAll
</Limit>
</Directory>
</Anonymous>
使用的命令:
1 、查看端口:ftp 使用21 端口
netstat –anl
2 、查看进程
ps –axu |grep proftpd
3 、重启ftp 服务
/etc/init.d/proftpd stop
/etc/init.d/proftpd start
4 、修改网卡地址
(1 )修改网络配置文件
vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 172.xx.xx.6 # 将172.xx.xx.6 改成你要改的ip 地址,保存推出
netmask 255.255.255.0
network 172.xx.xx.0
broadcast 172.xx.xx.255
gateway 172.xx.xx.254
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 172.xx.xx.11
(2 )重新启动网络
/etc/init.d/networking restart
1 、Porftpd.conf 配置格式
# 全局设置
设置项目1 参数1
设置项目2 参数2
# 某个目录的设置
<Directory " 路径名">
...
...
</Directory>
# 关于匿名用户的设置
<Anonymous " 匿名登陆的目录">
...
...
<Limit 限制动作>
...
...
</Limit>
</Anonymous>
2 、参数说明
CWD :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 :是否允许登陆的权限
3 、limit 说明
AllowUser 针对某个用户允许的Limit
DenyUser 针对某个用户禁止的Limit
AllowGroup 针对某个用户组允许的Limit
DenyGroup 针对某个用户组禁止的Limit
AllowAll 针对所有用户组允许的Limit
DenyAll 针对所有用户禁止的Limit