收藏文章 楼主
Linux下proftpd的安装配置与管理方法
网友【Ranger】 2005-05-23 10:47:27 分享在【时代发展的印记】版块    1    1

分享在 meiguo.com 上的图片

分享在 meiguo.com 上的图片
一. proftpd 简介。

proftpd是一款开放源码的ftp服务器软件,它是原来世界范围使用最广泛的wu-ftpd的改进版,它修正了wu-ftpd的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了Apache 的配置方式,使proftpd的配置和管理更加简单易懂。本文将介绍它在Red hat Linux 9中最基本的安装和配置。

二.软件的相关资源。

官方网站:proftpd.org/

源码软件包:proftpd是开源的软件,可以去其官方网站下载。目前最新稳定版本为1.2.10。

帮助文档: 该软件包中包含。

FAQ:该软件包中包含。

配置文件样例:该软件包中包含。

三.软件的安装。

1.安装

由其官方网站中下载其源码软件包proftpd-1.2.10. tar.gz。接下来我将对安装过程的一些重要步骤,给出其解释:

[root@localhost root]

#tar xzvf proftpd-1.2.10. tar.gz

[root@localhost root]

#cd bind-9.3.1

[root@localhost bind-9.3.1]

#./configure

[root@localhost bind-9.3.1]

#make

[root@localhost bind-9.3.1]

#make install

tar xzvf bind-9.3.1.tar.gz 解压缩软件包。

./configure 针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置,其常用选项有:

./configure --help 察看参数设置帮助。

--enable-ipv6 支持ipv6。

可以设置的参数很多,可以通过 -help察看需要的,一般情况下,默认设置就可以了。

默认情况下,安装过程应该建立了:

proftpd的deamon为/usr/local/sbin/proftpd

proftpd的配置文件,/usr/local/etc/proftpd.conf。

2.启动:

[root@localhost root]

# /usr/local/sbin/proftpd -c

/usr/local/etc/proftpd.conf

-c选项用来指定配置文件的位置,不指定的话默认位置是 /usr/local/etc/proftpd.conf 。

正常情况下proftpd应该启动了,ps aux 应该可以查到proftpd的进程,或netstat -an 也可以看到21端口的服务已经起来了。(ftp默认端口)

如果要设置开机自启动ftp server,只需在/etc/rc.d/rc.local中加入一行

/usr/local/sbin/proftpd

#!/bin/sh

#

# This script will be executed

*after* all the other init scripts.

# You can put your own

initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

/usr/local/sbin/proftpd

四.软件的配置。

1.初始配置文件

默认配置文件的位置为:

/usr/local/etc/proftpd.conf (如果文件不存在可以从压缩包中把配置文件样例拷贝过来即可)下面逐项分析其中一些常选项:(#后面的部分是注释)

# This is a basic ProFTPD

configuration file

(rename it to

# 'proftpd.conf' for actual use.

It establishes a single server

# and a single anonymous login.

It assumes that you have a user/group

# "nobody" and "ftp" for normal

operation and anon.

ServerName "

ServerType

standalone

DefaultServer

on

# Port 21 is the standard FTP port.

Port 21

ServerType 指定FTP Server 的启动类型,一般使用standalone方式比较简单,如果访问量不大,为节省资源考虑用xinetd侦听启动,必须在这里指定。Port 指定FTP的侦听端口,一般使用21端口

# Umask 022 is a good standard

umask to prevent new dirs and files

# from being group and world writable.

Umask 022

# To prevent DoS attacks, set the

maximum number of child processes

# to 30. If you need to allow

more than 30 concurrent connections

# at once, simply increase this value.

Note that this ONLY works

# in standalone mode, in inetd mode

you should use an inetd server

# that allows you to limit maximum

number of processes per service

# (such as xinetd).

MaxInstances 30

Umask 指定FTP server 进程的Umask 值,022与Linux系统得默认值一致。

MaxInstances 指定 FTP server 的最大连接数。

# Set the user and group under

which the server will run.

User nobody

Group nogroup

# To cause every FTP user to be

"jailed" (chrooted) into their home

# directory, uncomment this line.

#DefaultRoot ~

DefaultRoot

User 和Group 指定proftpd 进程启动时的有效用户ID,处于安全考虑默认的身份是nobody,有一点要指出的是,一般Red Linux 9.0 中默认是没有nogroup 这个组的,把Group指定为nobody 即可。

DefaultRoot 选项限制Linux 系统用户通过FTP方式登录时将被限制在其home 目录下。

# Set the maximum number of seconds

a data connection is allowed

# to "stall" before being aborted.

#TimeoutStalled 300

AllowRetrieveRestart on

AllowStoreRestart on

# Normally, we want files to be overwriteable.

AllowOverwrite on

TimeoutStalled 指定一个连接的超时时间。

AllowRetriveRestart 和AllowStroeRestart 指定允许断点续传。

User ftp

Group ftp

# We want clients to be able to

login with "anonymous"

as well as "ftp"

UserAlias anonymous 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

# Limit WRITE everywhere

in the anonymous chroot

DenyAll

这一部分,将在后面详细介绍。

2.配置文件结构分析

#全局设置

设置项目1 参数1

设置项目2 参数2

#某个目录的设置

...

...

#关于匿名登陆的设置

...

...

...

...

常用全局设置

DefaultRoot ~ # 限制每个FTP用户在自己的目录下,不可查看上一级目录

AllowRetrieveRestart on #下载时,允许断点续传

AllowStoreRestart on #上传时,允许断点续传

ServerIdent off #屏蔽服务器版本信息

TransferRate STOR|RETR 速度(Kbytes/s) user 使用者 #设定用户传输速率

MaxHostsPerUser 1 #每个帐户最多允许来源ip为1个, 对防止ftp帐号还是比较有用的。

MaxClientsPerUser 1 #每个帐户在每个客户端最多可以同时登陆1次,可以防止多线程软件下载对服务器的破坏

MaxClientsPerHost 1 #同一个客户端只能最多1个帐号可以登陆

WtmpLog on #是否要把ftp记录在日志中,如果不想可以设置成off屏蔽掉log日志。

TimeoutIdle 600 #客户端idle时间设置,默认就是600秒

DisplayLogin welcome.msg #设置ftp登陆欢迎信息文件

RootLogin on #允许root用户登录,默认是不允许的,安全起见不推荐此选项。

欢迎词设置

关于欢迎文件的设置包含如下参数:

%T 目前的时间

%F 所在硬盘剩下的容量

%C 目前所在的目录

%R Client 端的主机名称

%L Server 端的主机名称

%U 使用者帐户名称

%M 最大允许连接人数

%N 目前的服务器连接人数

%E FTP服务器管理员的 email

%i 本次上传的文件数量

%o 本次下载的文件数量

%t 本次上传+下载的文件数量

知道这些参数,可以写出一个友好的欢迎语文件,例如:

欢迎您%U, 这是T-force的测试FTP服务器;

目前时间是:%T;

本服务器最多允许%M个用户连接数;

目前服务器上已有%N个用户连接数;

目前你所在的目录是%C;

目录所在的硬盘还剩下%F字节。

anonymous 配置块

在配置文件中anonymous配置块是非常重要的一部分,全局帐户的权限配置一般都由它来控制,下面分析一个比较常见的例子

# A basic anonymous configuration,

no upload directories.

If you do not

# want anonymous users,

simply delete this entire

section.

#指定匿名用户登录目录

User ftp

#指定本块设置的用户

Group ftp

#指定本块设置的用户属组

# We want clients to be able to login

with "anonymous" as well as "ftp"

UserAlias anonymous ftp

#设定用户的别名

AnonRequirePassword on

#登陆需要密码

# 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

# Limit WRITE everywhere

in the anonymous chroot

DenyAll

AllowAll

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等权限,还是比较实用的

注:在测试是否可以下载时,不能用长度为0的空文件去测试,要用一个有内容的文件(文件大小不能为0k)。

针对上面这个Limit所应用的对象,又包括以下范围

AllowUser 针对某个用户允许的Limit

DenyUser 针对某个用户禁止的Limit

AllowGroup 针对某个用户组允许的Limit

DenyGroup 针对某个用户组禁止的Limit

AllowAll 针对所有用户组允许的Limit

DenyAll 针对所有用户禁止的Limit

五.一种简单实用的配置管理方式:

proftpd和mysql组合可以完成比较庞大而且完备的权限控制,但是也同样增加了管理和维护的复杂性,在这里我介绍一种简单易行的配置方法,适用于100个用户以下的应用。这种方法的核心在于巧妙的运用了设置gid位,读者最好找资料了解一下相关的知识。这种方法的配置管理工作相当少,也相当的简单,同时还可以保持一个清晰的权限系统结构。

1.思路

首先需要明确的概念是proftpd的用户与linux系统的用户的关系:linux系统的用户即为proftpd的用户。proftpd的权限控制是基于Linux系统得权限控制之上的,即用户对于某个文件或目录,必须先有Linux系统的权限,在此基础上proftpd才能设置其特有的一些权限。其实一般来说Linux自有的权限系统就是一个比较完善的权限系统了,我们完全可以只利用这个权限系统,就足可以满足我们的要求了。

我们设置一个ftp管理员ftpadmin属于ftpadmin组,ftp的根目录/ftp是ftpadmin的个人根目录,这样ftpadmin可以完成日常的管理。通过设置/ftp的gid可以保证新上传的文件是属于ftpadmin用户,加上再设置umask值002保证上传文件的组读写权限,这样管理员就可以对其管理下的文件进行管理,而同时保证了不改变该文件的属主。

ftp的用户,我们只需新建一个Linux用户,而把他的用户目录制定在/ftp之下就可以。操作起来很简单。

2.建立ftp管理员:ftpadmin

[root@localhost root]groupadd ftpadmin #ftpadmin为新添加的组的名字

[root@localhost root]useradd -d

/ftp -g ftpadmin -s /sbin/nologin admin

[root@localhost root]chmod 2775 /ftp

同时保证ftpadmin 是 /ftp的属主,ftpadmin 是/ftp的组属主。这样就保证了ftpadmin对要管理的/ftp目录有全部的权限。

-s /sbin/nologin 指定用户不能从shell登录,就是说只能从ftp方式登录,这样是出于安全的考虑。

修改/usr/local/etc/proftpd.conf

nobody ftpadmin

nogroup ftpadmin

Umask 002

#允许所有者,组用户对ftp进行管理。

掩码Umask改为 002 。即组成员和所有者都可对文件夹进行增删,改等操作。其他用户可读可执行,但不可写。这样,ftpadmin用户可以通过同组的身份对所有的文件进行读写,同时也不改变其内容的原有权限。也就说,不改变这个文件夹下的文件的所有者身份,但同时又可以管理这些文件。

chmod 2775 /ftp,通过设置了文件夹的gid,以后在这个文件夹下写的所有文件,不管其所有者是谁,文件的组必定是ftpadmin(因为/ftp的组属于ftpadmin),都合理的被纳于ftpadmin的管理之下。

3.添加用户:user1

useradd -d /ftp/user1 -g ftpadmin -s

/sbin/nologin user1

这样user1就对/ftp/user1的目录有完整的权限,而作为管理员也可以通过组权限对目录进行管理。

每当需要添加用户的时候,只需方便的简单的添加一个Linux的用户就可以了。

4.对应的配置文件:proftpd.conf中的重要条目

Umask 002

DefaultRoot

Umask 002 保证了新建的文件有组读写权限。

DefaultRoot ~ 保证 每个用户登录后被锁定在自己的目录里,看不到其他用户的目录。

参考资料:

[1]:proftpd.org/

[2]:ipv6.bupt.edu.cn/

作者:王洋
meiguo.com 发布人签名/座右铭谁还没年轻过呢?呵呵呵
大家都在看
楼主新近贴
回复/评论列表
默认   热门   正序   倒序
meiguo.com 创始人

emotion

1   2005-05-23 10:47:27  回复

回复/评论:Linux下proftpd的安装配置与管理方法

暂无用户组 升级
退出
等级:0级
美果:
美过
精华推荐
  1. 美国人口流动数据剖析:年轻富有群体搬家去哪儿了?
  2. 关于EVUS的填写心得和常见问题
  3. 五星红旗在月球背面升起!阿波罗登月遭遇再度质疑?
  4. 巨型公司:市值已超3.5万亿美元,约合18个阿里巴巴!
  5. 从旧金山到洛杉矶,美国西部旅行的完整实录
  6. 人身安全“没保障”的原因?赴美留学的趋势遇冷
  7. 关于美国的社保(全面解读)
  8. 新罕布什尔州的一位女子在领取彩金的现场捐出5000万美元
  9. 中国防长:“谁胆敢把台湾从中国分裂出去,必将粉身碎骨、自取灭亡”
  10. “走线”路不通了?拜登政府颁布最严边境令?
  11. 《潜望》对话李开复:如果美国形成AGI霸权,中国咋办?
  12. 拆解:太精致啦!到底是苹果M4 Mac mini牛?还是华强北更牛?
  13. 在加州海滩捡蛤蜊,72个罚9万美元!
  14. 移民故事:入赘美国的河南保安【蔡小华】现状
  15. 回归之王:唐纳德·特朗普“赢得又大又快”
  16. 能决定2024选举结果?特朗普即将放大招了!
  17. 苹果公司在2024秋季的新品发布会(懒人速览)
  18. “极右翼”控制移民政策!特朗普政府的内阁名单曝光
  19. 宁愿混居美国,华人姑娘袒露了不愿回国的真相!
  20. 伊隆·马斯克在“We, Robot”三连发:Cybercab、Robovan及Optimus!
  21. 中国人即将登月!
  22. 深入剖析:性在人类交往中的作用
  23. 世上只有男人和女人!~ 特朗普总统:上帝只创造了两种性别,无其它!
  24. 加州公司的市值盘点 top10
  25. 漂亮国再次遣返中国移民,这批有131人!
  26. 完整曝光:美国前总统【川普(特朗普)】遭遇刺客的前前后后
  27. 坐火车“游览全美国”的14条线路盘点
  28. 福建人在纽约:有多少人通过走线(偷渡)到纽约的?
  29. 珠海航展:轰20的先行版遭遇美国酸溜溜了
  30. 美国房市降温?待售房屋开始下调要价!
  31. 《黑神话:悟空》发行仅3小时后竟然就这样了!
  32. 悲惨回顾:美国历史上的十大枪击案盘点
  33. 号外:伊隆·马斯克的第11个孩子出生了
  34. 碧昂斯和巨石强森这样的美国巨星在大选中,如何站队的?
  35. 关于美国大学的学费开支
  36. 佛罗里达遭遇的飓风可以影响到美国大选结果?

美国动态 美果转盘 美果商店

Your IP: 18.216.99.18, 2024-11-26 03:52:12

Processed in 0.59012 second(s)

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息
已有0次打赏
(1) 分享
分享
取消