LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2192|回复: 15

debian系统下面配置proftp服务器!我所有失败后的经验总结(发此贴主要是为了感谢这个论

[复制链接]
发表于 2006-1-17 15:45:20 | 显示全部楼层 |阅读模式
debian系统下面配置proftp服务器!我所有失败后的经验总结(发此贴主要是为了感谢这个论坛,感谢北南南北的引导贴。原创)
   我之所以选择proftpd,是因为我以前一直用wu-ftpd,但是我总是没搞定wu-ftpd所出现的问题。在抓狂之后我走向了安装proftpd的道路!

   ProFTPD 也是开放源码的软件,以 GPL 许可发布。ProFTPD 可以说是 wu-ftpd 的替代,
同时在安全,可伸缩性等方面有很大的提高。特别是对于熟悉 Apache 配置的人而言,
它的配置和 Apache 十分相似,因此,用起来肯定能得心应手。
一个单一的和 Apache 的 httpd.conf 类似的配置文件
每个目录下的 .ftpaccess 文件(和 Apache 的. htaccess 类似)
很容易配置的,多个虚拟 FTP 服务器以及匿名 FTP 服务
好了,废话少说,转入正题:
<color=red>第一步.</color>
#Apt-get install proftpd      
选择inetd ,之后就OK ,
这时候我们的linux一个普通用户就能登陆,其他都不能登陆的,所以我们还有很多设置要改!


首先大家先跟我一起要有这样一个思路:
  建立下面的文件夹:
  /home/china-net      (这个文件夹就是我专门用来FTP上传和下载的)
   /home/china-net/user1.com
   /home/china-net/user2.com
   /home/china-net/user3.com
                                         等等是我的服务器用户网站文件夹!
而用户组  ftpadmin 的用户 ftpadmin 就是/home/china-net里面的超级管理员
而用户组  ftpuser   的用户 user1 ,user2 ,user3 ,分别是
             /home/china-net/user*.com 文件的对应所属!!


2. 安装好之后,会产生两个文件
/etc/proftpd.conf   (FTP的主要配置文件)
/etc/ftpusers       (里面是FTP禁止登陆的用户)

3.这时候我们来建立FTP的用户组和用户
#groupadd ftpuser             (这个用户组包含我们公司全部的FTP客户)
#useradd –g ftpuser -d /home/china-net/user1.com / -s /dev/null user1
#useradd –g ftpuser -d /home/china-net/user1.com / -s /dev/null user2
#useradd –g ftpuser -d /home/china-net/user1.com / -s /dev/null user3
                                           (上面三个命令就是建立用户,既我们的FTP客户)
#passwd user1
Changing password for user echo
New UNIX password:user1
Retype new UNIX password:user1
passwd:all authentication tokens updated successfully

然后让我们的FTP用户只能FTP登陆不能TELNET
#nano /etc/shells
/dev/null   (在最后面加入这行)
#nano /etc/passwd
user1:x:1002:1001::/home/ftpuser/:/dev/null   改为
user1:x:1002:1001::/home/ftpuser/./:/dev/null
这样user1只能用ftp登录,而不能用telnet

重复上面的命令再设置另外两个用户 user2 user3
完毕之后  user1.com就可以登陆了。但是会有两个问题:
                 a.访问上级目录!!?
                 b.上传的文件会无影无终!!!?

4.  解决访问上级目录的问题:
这时候在 /etc/proftpd.conf文件里面加一句
DefaultRoot /home/china-net
你可以用FTP软件试下就知道了。/home/china-net为你FTP的根目录,你的权限最多访问到这里!!
这时候你看看,访问上级目录的问题基本上解决了。:)
可是还是不完美。如果我们这样改呢:
DefaultRoot ~ !admin   
这个时候你在看看,哪个用户登陆都是它自己的根目录!!!
好,下面解决不能上传的问题。

5. 在这里补充一下: chmod chgrp chown 这三个命令一定要熟练使用!不然你就设置不好FTP!
#groupadd ftpadmin
#useradd –g ftpadmin –d /home/china-net ftpadmin –s /dev/null
#chgrp –R ftpadmin /home/china-net        (参数R是包含所有目录,这里是加群组)
#chown –R ftpadmin /home/china-net        (这里是加用户)


6. 一个不能上传的问题困扰了我很久,然后我从这里得到了启发:
<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
MaxClients 10
DisplayLogin   welcome.msg
DisplayFirstChdir .message
</Anonymous>
这样设置后,我的FTP的匿名用户居然可以上传和下载 /home/ftp目录里面的东西,不过根目录也是限制在这个文件下面,不能访问上级目录的。而这个却正是我的user1用户应该拥有的权限!所以我的设置还要改

<Directory /home/china-net/user1.com>
<Limit WRITE>
AllowUser user1
</Limit>
<Limit RMD RNFR DELE RETR> #不允许删除,改名,下载
DenyUser
</Limit>
</Directory>


OK!

  写到这里的时候,我的步骤也基本到这里停止了,也刚好下班。算是用了一天的时间!
然后总结了一下,我还有很多的问题没有解决:
   让用户上传不可能在proftpd.conf上面来限制的,那样是不是太麻烦了?是不是应该
有个ftpaccess 这个文件呢?
  我对proftpd里面的这个文件还完全不了解!!
 楼主| 发表于 2006-1-17 15:50:10 | 显示全部楼层
补上几个我参考的连接:
http://www.linuxsir.cn/bbs/showthread.php?t=18027
http://www.linuxsir.cn/bbs/showthread.php?t=43590&page=1

  我知道如果不熟悉proftpd的朋友一定很需要一些配置手册,这里我把我找到的转贴一下:
  帖子来源:http://www.5ilinux.com/blog/archives/000085.html

开始讲一些proftpd的基本配置吧,其实大家如果熟悉apache的配置的话,你会发现proftpd的设置基本都是类似的,它的配置基本格式是

#全局设置
设置项目1 参数1
设置项目2 参数2

#某个目录的设置
<Directory "路径名">
...
...
</Directory>

#关于匿名用户的设置
<Anonymous "匿名登陆的目录">
...
...
<Limit 限制动作>
...
...
</Limit>
</Anonymous>


我们用到的比较多的可能是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 使用者

下面我们以例子来解说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>

而且更加灵活,具体用那种方式,看大家了,我只是给大家入个门而已
回复 支持 反对

使用道具 举报

发表于 2006-1-17 23:36:05 | 显示全部楼层
要是能解决windows端的乱码问题就好了
回复 支持 反对

使用道具 举报

发表于 2006-1-18 13:16:32 | 显示全部楼层
这样的资料非常实用,呵,很感谢楼主.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-19 09:08:40 | 显示全部楼层
Post by xiaoliwind


  写到这里的时候,我的步骤也基本到这里停止了,也刚好下班。算是用了一天的时间!
然后总结了一下,我还有很多的问题没有解决:
   让用户上传不可能在proftpd.conf上面来限制的,那样是不是太麻烦了?是不是应该
有个ftpaccess 这个文件呢?
  我对proftpd里面的这个文件还完全不了解!!




这里我也找到了一个好的解决办法:实际上很简单,我没想到  
<Directory ~ !/home/china-net>         
  <Limit WRITE>
  AllowGroup ftpuser
  </Limit>
  <Limit RMD RNFR DELE RETR>
  DenyUser user1
  </Limit>
TransferRate RETR 50 user user1.com
TransferRate STOP 100 user ftpadmin
</Directory>

就是把  AllowUser user1 改成整个用户组 AllowGroup ftpuser
下面的也可以限制整个用户组!
回复 支持 反对

使用道具 举报

发表于 2006-1-19 18:22:51 | 显示全部楼层
用系统用户啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-20 13:09:32 | 显示全部楼层
绝对限制系统用户!
回复 支持 反对

使用道具 举报

发表于 2006-5-20 02:52:06 | 显示全部楼层
Post by xiaoliwind
补上几个我参考的连接:
http://www.linuxsir.cn/bbs/showthread.php?t=18027
http://www.linuxsir.cn/bbs/showthread.php?t=43590&page=1

  我知道如果不熟悉proftpd的朋友一定很需要一些配置手册,这里我把我找到的转贴一下:
  帖子来源:http://www.5ilinux.com/blog/archives/000085.html

开始讲一些proftpd的基本配置吧,其实大家如果熟悉apache的配置的话,你会发现proftpd的设置基本都是类似的,它的配置基本格式是

#全局设置
设置项目1 参数1
设置项目2 参数2

#某个目录的设置
<Directory "路径名">
...
...
</Directory>

#关于匿名用户的设置
<Anonymous "匿名登陆的目录">
...
...
<Limit 限制动作>
...
...
</Limit>
</Anonymous>


我们用到的比较多的可能是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 使用者

下面我们以例子来解说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>

而且更加灵活,具体用那种方式,看大家了,我只是给大家入个门而已

useradd -d /home/kaoyan -g ftpusers -s /bin/fales kaoyan
在使用这个命令的时候,由于我的系统没有/bin/fales,fpt始终没有起动起来
改成/bin/sh后就能连上了,我这样做和/bin/fales有区别吗??
回复 支持 反对

使用道具 举报

发表于 2006-5-20 09:19:48 | 显示全部楼层
如果用webmin进行配置的话,就省事多了。

如果用虚拟用户的话,那么就不需在系统中添加真实用户了。
回复 支持 反对

使用道具 举报

发表于 2006-5-20 11:06:53 | 显示全部楼层
Webmin 确实是好东西!。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表