由 nethawk 在 10-31-2002 19:54 发表:
wu_ftpd 配置问题
想请教一个问题,我是想配置一个ftp服务器,其中 guest可以下载和上传,另外开一个 real 用户,在pub 和 upload 下都可以 写入和删除,以便远程管理,请问应该怎么配置? 在用real登陆时,虽然可以将其家目录定位在ftp下
但有什么办法可以将目录限制在ftp下,不让其读取系统文件? 也就是怎么来限制real 用户的访问目录?
由 lanmaster 在 10-31-2002 20:35 发表:
class remote guest *:
delete no guest
overwrite no guest
rename no guset
chmod no guest
upload /home/ftpd/pub yes guset 0644 dirs
upload /home/ftpd /pub yes real 0777 dirs
你看这一下这个对你有没有用。我也是在别的资料中看到,给你贴出来的。后一个问题我也不知道。让其他人解决吧。
成长中的菜鸟!
E-Mail:qcy_[email protected]
QQ :7118899
由 nethawk 在 11-01-2002 16:47 发表:
谢了,这个我可以实现,主要是怎么限止 real 用户的工作目录问题?
由 kanaka 在 11-11-2002 12:16 发表:
可以参考:
《用wu-ftpd架设FTP服务器》一文。
地址是:
http://www.lslnet.com/linux/docs/linux-3300.htm
用wu-ftpd架设FTP服务器
蓝森林 http://www.lslnet.com 2001年1月3日 21:14
一、前言
当我们架设的网站需要提供下载功能时,除了使用http的方式连接外,也可以另外提供ftp服务供用户直接连线下载。事实上,ftp是个存在已久的服务,它的设计是用来传输两台电脑之间的数据,以避免太多的远端执行。如果要传送的文件比较大时,若以http的方式连线传输会占用一些网站的资源(例如可连线的人数),这时就要用到ftp了。ftp是一个以TCP/IP为基础的应用程序,所以一般的ftp服务程序都会以内嵌于inetd的执行方式。
ftp分为两个部分,一个是服务器端的程序,一个是用户端的。在Unix上的ftp服务程序非常多,不同的操作系统所内建的版本也都不一样,常见的有wu-ftpd、proftpd、Troll ftpd、ncftpd和Bero ftpd等等。其中最常用的最受欢迎的的是wu-ftpd,它是当初由华盛顿大学wuarchive.wustl.edu开发出来的,是一个以效率以及稳定性为考量的程序,它提供了原始码以及开放学术单位免费使用。
二、安装与设定
wu-ftpd的安装非常容易,大多数版本的Linux中都包含了wu-ftpd的rpm软件包,你可以在安装Linux时指定装入。如果你想自行编译源代码,也可以到ftp://ftp.wu-ftpd.org下载最新版本的源代码包。
安装好以后,可以用ckconfig命令来检查是否已经正确安装。在/etc/passwd中可以指定ftp用户的登入目录。
wu-ftpd主要有以下6个配置文件:
ftpaccess(主要配置文件,控制存取权限)
ftpconvertions(配置文件压缩/解压缩转换)
ftpgroups(设定ftp自己定义的群组)
ftphosts(设定个别的用户权限)
ftpservers(设定不同IP/Domain Name以对应到不同的虚拟主机)
ftpusers(设定哪些帐号不能用ftp连线)
下面我们来一一介绍。
⒈/etc/ftpaccess(wu-ftpd的主要配置文件)
class--定义群组,用法如下:
class
1<class 名称=""><种类><用户地址>[<用户地址>……]
2
3由class定义的群组用户才可以连线进来,可以使用多层式的class来规范哪些群组的用户能够从哪些地方上来。这里有三个重要的种类,real、anonymous个guest。real如果没有列在定义中,那么这台机器中任何真实的一般用户都无法用自己的帐号连上来。anonymous如果没有在定义,就表示不让没有帐号的的人连上来。如果有定义guest,那么guest群组的人就可以上来。另外<用户地址>是指ftp上来的用户会用到的IP地址,<class 名称="">则可自行设定。以下是一些例子:
4
5class all real,guest,anonymous *
6
7定义了一个名为all的class,包含三种人,所有IP的连线用户(也就是所有人都包括了)
8
9class local real localhost loopback
10
11local这个class说,只有real的用户可以从本机机器连上来
12
13class remote guest,anonymous *
14
15remote这个class包含了从任何地方上来的guest和anonymous用户,但是real用户不算
16
17class rmtuser real !*.andsky.com
18
19rmtuser这个class包含了从外面来的(除了andsky.com)真实用户
20
21autogroup--自动对应群组,用法如下:
22
23autogroup<group 名称=""><class 名称="">[<class 名称="">……]
24
25当你定义好的那些同属于一个class的用户,一旦连线上来就会被对应到一个相应的群组下面,这样你就可以用Unix的文件权限对某一群人做限制。
26
27deny--拒绝某些地址连线,用法如下:
28
29deny<拒绝连线的地址><信息文件>
30
31禁止某些机器连线,并显示<信息文件>。例如:
32
33deny 210.62.146.*:255.255.255.254 /etc/reject.msg
34
35guestgroup--设定访客群
36
37guestuser--设定访客帐号
38
39realgroup--设定真实群组
40
41realuser--设定真实帐号
42
43nice--设定给某些class多少优先权,用法如下:
44
45nice<nice-delta><class 名称="">
46
47在Linux中,nice的值是-20(最优先)到19(最后处理),这里你可以指定负的值来提高某class的优先顺序。
48
49defumask--设定某class的umask,用法如下:
50
51defumask<umask>[<class 名称="">]
52
53umask是建立文件时该文件的的权限掩码
54
55tcpwindow--设定tcpwindow的大小
56
57keepalive--设定是否使用TCP SO_KEEPALIVE来控制断线情形
58
59timeout--设定连线超时,用法如下:
60
61timeout accept<秒>
62
63接受连线超时,预设120秒
64
65timeout connect<秒>
66
67连线建立超时,预设120秒
68
69timeout data<秒>
70
71数据传送超时,预设1200秒
72
73timeout idle<秒>
74
75用户发呆超时,预设900秒
76
77file-limit--限制某class只能传几个文件,用法如下:
78
79file-limit[<raw>]<int out="" total="">[<class>]
80
81对某个class限制存取文件的数目,包含了in(上传)、out(下载),total raw代表整个传输的结果,不光是数据文件。例如:
82
83file-limit out 20 lvfour
84
85限制lvfour这个class的用户最多只能下载20个文件
86
87byte-limit--限制某class只能传几个字节,用法跟file-limit相似
88
89limit-time--限制一个连线只能持续多久,用法如下:
90
91limit-time{*|anonymous|guest}<分钟>
92
93为了避免有人挂在站上不下来,可以用这个方法限制用户的上线时间,例如:
94
95limit-time guest 5
96
97让guest帐号的用户只能用5分钟
98
99limit--限制某class能同时几人上线,用法如下:
100
101limit<class 名称=""><连线数目><时间区段><额满信息文件>
102
103设定某个class在某一时间区段内最多能够几人同时上线,后面是当超过连线数目时要显示的信息。例如:
104
105limit all 32 Any /home/ftp/etc/toomanyuser.msg
106
107限制所有连线在任何时间只能有32个用户,超过则拒绝连线并显示信息
108
109limit levellone 5 Any2300-0600 /home/ftp/etc/toomanyuser.msg
110
111限制levellone这个class的用户在23:00到6:00这段时间内只能有5人连线
112
113noretrieve--设定哪些文件不可下载
114
115noretrieve[absolute/relative][class=<class 名称="">]…[-][<文件名>…]
116
117absolute或relative指文件是用绝对路径还是相对路径
118
119allow=retrieve--设定哪些文件可以下载
120
121allow[absolute/relative][class=<class 名称="">]…[-][<文件名>…]
122
123loginfails--设置登入错误可尝试的次数
124
125当用户连线时可能打错ID或密码,这个设定可以让他打错几次以后就断线,避免有人用穷举法猜测密码。
126
127private--设定线上是否可以执行SITE GROUP/SITE GPASS
128
129当开放SITE GROUP与SITE GPASS指令时,可以用这两个指令切换到/etc/ftpgroup的群组。一般而言我们不会用到这个功能,以避免安全漏洞。
130
131greeting--显示Server的版本信息,用法如下:
132
133greeting <full brief="" terse="">
134
135当用户登入画面显示的server信息,full是预设值,包含版本号以及hostname,brief只有hostname,而terse只有“FTP server ready”的信息。
136
137barnner--设定未进入Login画面之前用户看到的信息,用法如下:
138
139banner<文件路径>
140
141这里叙述了在用户登入时,在还没打ID/Password之前要出现的信息。文件路径指的是相对于真实的路径,而不是相对于ftp的根目录。
142
143host--设定ftp主机名
144
145email--指定ftp管理者的email地址
146
147message--信息文件的设定,用法如下:
148
149message<文件>{<何时>{<class 名称="">……}}
150
151这里的文件的路径是相对于ftp的根目录的,“何时”是指当你做了什么动作之后的反应,有几个选择:
152
153login(登入时)
154
155cwd=<目录>(进入某目录时)
156
157class 名称是前面已经定义过的,允许你的信息只对哪些人发出。
158
159而信息文件的内容除了文字以外,还可以使用以下一些事先定义好的代号:
160
161%T(本机时间)
162
163%F(目前分区所剩余的空间)
164
165%C(目前所在的目录)
166
167%E(管理者的E-mail)
168
169%R(客户端主机名称)
170
171%L(本机主机名称)
172
173%U(用户名称)
174
175%M(与我相同class用户允许多少人连线)
176
177%N(与我相同class用户目前有多少人连线)
178
179%B(绝对磁盘限制大小,目前分区(单位blocks))
180
181%b(preferred磁盘限制大小,目前分区(单位blocks))
182
183%Q(目前已使用的blocks)
184
185%I(最大可使用的inodes(+1))
186
187%i(Preferred inodes限制)
188
189%q(目前使用的indoes)
190
191%H(超量使用磁盘空间的时间限制)
192
193%h(超量使用文件数目的时间限制)
194
195readme--通知用户哪些README文件已经更新
196
197log commands--记录用户所使用过的命令,用法如下:
198
199log commands<用户种类>
200
201log transfers--记录用户所传输的文件,用法如下:
202
203log transfers<用户种类><传输方向>
204
205设定有哪些类型的用户传输文件需要记录,包含了inbound(用户上传)和outbound(用户下载),例如:
206
207log transfers anonymous,guest inbound,outbound
208
209log security--记录安全性,用法如下:
210
211log security<用户种类>
212
213特别用于记录某类用户关于noretrive、notar等有关安全性的记录
214
215log syslog--记录到系统的syslog文件
216
217alias--设定目录别名,用法如下:
218
219alias<别名字符串><目录>
220
221cdpath--设定cd更换目录搜索顺序
222
223compress,tar--设定是否自动压缩,用法如下:
224
225compress<yes no=""><class 名称="">[<class 名称="">……]
226
227tar<yes no=""><class 名称="">[<class 名称="">……]
228
229定义哪些人可以执行压缩以及tar
230
231shutdown--通知用户要关站了
232
233shutdown<信息文件>
234
235如果信息文件存在的话,当这个文件指定的某时间以后,就会拒绝连线并切断已有的连线,等时间一到就关机。这个信息文件的格式如下:
236
237<年><月><日><时><分><拒绝倒数><断线倒数><文字>
238
239daemon address--指定只监听某个IP地址,用法如下:
240
241daemon address<address>
242
243当你有许多IP的时候,使用这个选项将会取消其它任何虚拟FTP主机的设定。不设定的话,监听所有IP。
244
245virtual--设定虚拟FTP站台
246
247wu-ftpd提供了虚拟主机的功能,也就是说,在同一台机器上提供了不同FTP站台,以主机名称或IP来区分;当然你要用名称的话,还需要跟DNS配合才行。virtual有很多个设定:
248
249virtual<address><root banner="" logfile=""><路径>
250
251<address>可以是主机名或IP地址
252
253<root banner="" logfile="">root指的是ftp的根目录,banner是欢迎信息,logfile指的是这个虚拟站台的log文件
254
255以下是一些例子:
256
257virtual virtual.com.bj root /home/ftp2
258
259virtual virtual.com.bj banner /etc/vftpbanner.2
260
261virtual virtual.com.bj logfile /etc/viftplog.2
262
263virtual<address><hostname email=""><字母>
264
265<hostname email="">用户可以查到hostname跟管理者email,以下是一些例子:
266
267virtual 210.62.146.50 hostname virtual.site.com.bj
268
269virtual vritual.site.com.bj email [email protected]
270
271virtual<address>allow<用户>[<用户>……]
272
273virtual <address>deny<用户>[<用户>……]
274
275很明显,以上两个选项是设定是否允许连线的,以下是一些例子:
276
277virtual virtual.site.com.bj allow *
278
279virtual virtual.site.com.bj deny badman
280
281virtual<address>private
282
283本虚拟站台拒绝anonymous用户
284
285defaultserver deny <用户>[<用户>……]
286
287defaultserver allow <用户>[<用户>……]
288
289当我们使用了虚拟主机,原先的deny,allow设定不知道要设哪个server,所以会无效,用defaultserver代表原来的主机
290
291defaultserver private
292
293主站台拒绝anonymous用户
294
295passive address--转换IP数值
296
297passive address<外部IP>/cidr
298
299passive ports--passive的ports范围
300
301passive ports<cidr><min><max>
302
303pasv-allow--允许使用pasv
304
305pasv-allow<class 名称="">[<地址>……]
306
307port-allow--允许使用port
308
309port-allow<class 名称="">[<地址>……]
310
311mailserver--指定Upload通知的mail服务器
312
313incmail--指定anonymous upload的email通知地址
314
315virtual incmail--指定虚拟主机anonymous upload的email通知地址
316
317defaultserver incmail--指定预设主机anonymous upload的email通知地址
318
319mailfrom--通知的寄信人upload
320
321virtual mailfrom--虚拟主机upload通知的寄信人
322
323defaultserver mailfrom--预设主机upload通知的寄信人
324
325chmod--设定是否可以改变文件权限
326
327delete--设定是否可以删除文件
328
329overwrite--覆盖文件
330
331rename--重命名文件
332
333umask--允许设定umask
334
335passwd-check--设定anonymous FTP的密码检查程度,用法如下:
336
337p</class></class></max></min></cidr></address></address></address></hostname></hostname></address></root></address></root></address></address></class></class></yes></class></class></yes></class></full></class></class></class></class></int></raw></class></umask></class></nice-delta></class></class></group></class></class>