&;#30070;你的 FreeBSD 安&;#35037;好後就&;#20839;建 FTP ,只是&;#38928;&;#35373;不&;#21855;&;#21205;它而已, 有人&;#35258;得 FreeBSD &;#20839;建的 ftpd 太&;#38525;春,&;#26371;另外用&;#21029;的 ftpd &;#20358;取代, 常&;#35211;的替代方案有:proftpd , pureftp ......等,不&;#36942;要&;#38568;&;#26178;注意更新,因&;#28858; FTP 程式常常被找到有安全漏洞。
1 以 FreeBSD &;#20839;建的 ftpd 提供服&;#21209;
一般&;#35498;&;#20358;,&;#30070;你安&;#35037;好 FreeBSD ,FTP 的服&;#21209;程式 /usr/libexec/ftpd 就有了
只要修改一下 /etc/inetd.conf , FTP 服&;#21209;就已&;#32147;可以提供&;#32102;有本&;#27231;&;#24115;&;#34399;的人使用
[color=#FFFFFF'][/color]
1-1 打&;#38283; FTP 服&;#21209;
FreeBSD 系&;#32113;的&;#38928;&;#35373; ftpd 提供 daemon 模式(stand alone)和由 inetd &;#21855;&;#21205; ftpd &;#20841;&;#31278;方式
&;#20841;&;#31278;方式比&;#36611;起&;#20358;,daemon 的方式&;#36969;合&;#23565;同一&;#26178;&;#38291;&;#36899;&;#32218;使用多,&;#36000;&;#36617;&;#36611;大的主&;#27231;
1-1-1 方法一:daemon 模式 (stand alone)
1-1-1-1 立即&;#21855;&;#21205; ftpd daemon如果只是要&;#39340;上&;#21855;&;#21205;服&;#21209;只要&;#22519;行:
/usr/libexec/ftpd -D -l -l &;#21443;&;#25976;&;#35498;明:
-D :&;#35731; ftpd 以 daemon 的方式&;#21855;&;#21205;。
-l :叫 syslogd &;#35352;&;#37636;每次的&;#36899;&;#32218;,用&;#20841;次 -l &;#21063;可以&;#36899;使用的&;#21205;作都&;#35352;&;#37636;
-l 要留下&;#36899;&;#32218;&;#35352;&;#37636;&;#36996;需要配合修改 /etc/syslog.conf 才&;#26371;&;#21855;&;#21205;&;#35352;&;#37636;
ftpd &;#36996;有很多的&;#21443;&;#25976;,可以
man ftpd 查看。
1-1-1-2 如何&;#35731; FreeBSD &;#38283;&;#27231;&;#26178;自&;#21205;&;#21855;&;#21205; ftpd
如果只用前面的方法&;#21855;&;#21205; ftpd daemon,下次系&;#32113;重新&;#38283;&;#27231;後就&;#27794;了,&;#28858;了&;#35731;它能自&;#21205;&;#21855;&;#21205;,我&;#20497;可以把&;#21855;&;#21205;指令放入 /etc/rc.local 中或是仿 /usr/local/etc/rc.d 的&;#27284;案,自己&;#23531;&;#20491; ftpd.sh 。
例一:
ee /etc/rc.local 在&;#35041;面放一行:
/usr/libexec/ftpd -D -l -l 例二:
仿 /usr/local/etc/rc.d 中的&;#27284;案,新增一&;#20491;叫 ftpd.sh 的 script :
ee /usr/local/etc/rc.d/ftpd.sh &;#35041;面放入下面的&;#20839;容:
#!/bin/sh
ftpd_flag="-l -l -S"
ftpd="/usr/libexec/ftpd"
case "$1" in
start)
[ -x ${ftpd} ] &;amp;&;amp; ${ftpd} -D ${ftpd_flag} > /dev/null &;amp;&;amp; echo -n ' ftpd
;;
stop)
/usr/bin/killall ftpd > /dev/null &;amp;&;amp; echo -n ' ftpd'
;;
*)
echo "Usage: `basename $0` {start│stop}" >&;amp;2
;;
esac
exit 0
[color=#FFFFFF'][/color]
存好&;#27284;後再更改一下&;#27284;案的&;#27402;限,&;#35731;它可以&;#22519;行:
chmod 554 /usr/local/etc/rc.d/ftpd.sh &;#36889;&;#27171;,&;#30070; FreeBSD &;#38283;&;#27231;&;#26178;就&;#26371;自&;#21205;&;#21855;&;#21205; ftpd ,也可以利用
/usr/local/etc/rc.d/ftpd stop &;#20358;停止服&;#21209;,&;#22519;行&;#26178;要加什&;#40636;&;#21443;&;#25976;就修改 ftpd_flag 那行。
[color=#FFFFFF'][/color]
1-1-2 方法二:由 inetd &;#20358;&;#21855;&;#21205; ftpd
&;#36889;&;#31278;方式,想&;#30070;然&;#29246;,就是要修改 /etc/inetd.conf &;#22217;:
[color=#FFFFFF'][/color]
ee /etc/inetd.conf [color=#FFFFFF'][/color]
先&;#27298;查一下 /etc/inetd.conf 中有&;#27794;有下面&;#36889;行:
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
如果像上面那行一&;#27171;,&;#38283;&;#38957;是井字&;#34399;,表示&;#29694;在 FTP 服&;#21209;&;#38928;&;#35373;是被&;#38364;&;#38281;的。井字&;#34399;表示&;#35387;解,不使用,只要把井字&;#34399;去掉改成下面的&;#27171;子:
[color=#FFFFFF'][/color]
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l存&;#27284;後&;#22519;行下面的指令:
kill -HUP `cat /var/run/inetd.pid` [color=#FFFFFF'][/color]
&;#35731; inetd 重新抓取 /etc/inetd.conf &;#35373;定&;#27284;就好了
注意:上面的
` 是 Esc &;#37749;下面那&;#37707;毛毛&;#34802;的按&;#37749;哦,可&;#21029;打成&;#21934;引&;#34399;
1-2 停止 FTP 服&;#21209;
如果要停止 FTP 服&;#21209;,看之前是以 daemon 模式&;#21855;&;#21205;&;#36996;是 inetd 模式&;#21855;&;#21205;而有所不同。
1-2-1 daemon 模式
daemon 模式可以&;#22519;行下列指令&;#20358;&;#32066;止 ftpd 的程序:
killall ftpd 如果之前是&;#23559; ftpd 放在 /etc/rc.local 中&;#20358;由系&;#32113;在&;#38283;&;#27231;&;#26178;自&;#21205;&;#21855;&;#21205;,可以用下面的方法&;#20358;停止自&;#21205;提供 FTP 服&;#21209;。
先打&;#38283; /etc/rc.local &;#20358;&;#32232;&;#36655;,&;#22519;行:
ee /etc/rc.local
[color=#FFFFFF'][/color]
&;#23559;&;#27284;案中,&;#22519;行 ftpd 那行的最前面加&;#20491;井字&;#34399;,&;#20786;存好即可。
1-2-2 inetd 模式
&;#30070;初是以 inetd 模式&;#20358;提供服&;#21209;的,&;#21063;要修改 inetd 的&;#35373;定&;#27284; /etc/inetd.conf ,&;#20006;&;#35731; inetd 重新&;#35712;取&;#35373;定。
先打&;#38283; /etc/inetd.conf &;#20358;&;#32232;&;#36655;,&;#22519;行:
[color=#FFFFFF'][/color]
ee /etc/inetd.conf &;#23559;&;#35373;定&;#27284;中,有 ftpd 那行的前面加上井字&;#34399;後,&;#20786;存&;#35373;定&;#27284;。
[color=#FFFFFF'][/color]
&;#35731; inetd 重&;#35712;&;#35373;定&;#27284;,&;#22519;行下面指令:
kill -HUP `cat /var/run/inetd.pid` 如果要&;#30906;&;#35469; FTP 服是否已&;#32147;停止了,可以&;#22519;行:
netstat -na 看看下面&;#36889;行是不是已&;#32147;消失了:
tcp4 0 0 *.21 *.* LISTEN 1-3 限制使用者只能在自己目&;#37636;活&;#21205;(chroot)
如果&;#27794;有特殊&;#35373;定,使用者用自己的&;#24115;&;#34399; FTP 到主&;#27231;後,可以自由的切&;#25563;任意目&;#37636;的,如果不想&;#35731;它&;#20098;跑&;#21063;要做以下&;#35373;定。
1-3-1 方法一:利用 /etc/ftpchroot
FreeBSD 的 ftpd 以 /etc/ftpchroot &;#20358;控制哪些人或群&;#32068;要如何 chroot ,所以我&;#20497;&;#38283;&;#21855;/新增&;#36889;&;#20491;&;#35373;定&;#27284;&;#20358;&;#32232;&;#36655;。
[color=#FFFFFF'][/color]
ee /etc/ftpchroot [color=#FFFFFF'][/color]
在&;#27284;案&;#35041;面放入我&;#20497;要管制的人或群&;#32068;:
gsyan
foo
@staff 上面的&;#35373;定使得 gsyan, foo 及&;#23660;於 staff 群&;#32068;的人都只能在自己目&;#37636;活&;#21205;。
&;#35498;明:
[color=#FFFFFF'][/color]
小老鼠&;#38283;&;#38957;的表示後面接的名&;#31281;&;#28858;群&;#32068;。
[color=#FFFFFF'][/color]
[color=#FFFFFF'][/color]
有方法可以只&;#38283;放一&;#20491;&;#24115;&;#34399;不 chroot 其它全部 chroot &;#21966;?最近 FreeBSD &;#20839;建的 ftpd 在 /etc/ftpchroot 又多了可&;#35373;定的&;#26481;&;#26481;, 如果
man ftpchroot 可以看到&;#35498;明,就表示可以使用下面的的&;#35373;定&;#20358;&;#36948;到只&;#38283;放部份&;#24115;&;#34399;不&;#37782;定在&;#20491;人目&;#37636;的目的。
首先&;#38283;&;#21855; /etc/ftpchroot &;#20358;&;#32232;&;#36655;:
[color=#FFFFFF'][/color]
ee /etc/ftpchroot 假&;#35373; admin 是管理&;#21729;的&;#24115;&;#34399;,&;#35731; admin 可以在系&;#32113;中到&;#34389;游走,就&;#35041;面放入下面三行:
[color=#FFFFFF'][/color]
admin /
ftp .
@ www&;#20786;存好就可以用 ftp &;#36899;&;#32218;看看, 上面的&;#35373;定有底下的效果:
第一行&;#35373;定:admin 登入&;#26178;&;#26371;切&;#25563;到 /
第二行&;#35373;定:匿名登入&;#26178;&;#21063;保持原&;#20358;的方式,只能在&;#24115;&;#34399;指定的公用目&;#37636;活&;#21205;。
第三行&;#35373;定:其它使用者&;#21063;只能在&;#20491;人目&;#37636;中的 www &;#36039;料&;#22846;中活&;#21205;。
第三行&;#25033;用在 server 有 apache 提供使用者放&;#32178;&;#38913;, 而 apache &;#35373;定
UserDir=www &;#26178;,以後只要告&;#35380;使用者: 『&;#35531;&;#23559;做好的&;#32178;&;#38913;直接用自己的&;#24115;&;#34399; ftp 到主&;#27231;即可』, 以前都要解&;#37323;半天,&;#35531;他 ftp 後把&;#32178;&;#38913;放到 www &;#36039;料&;#22846;, 不&;#36942;,&;#35352;得先&;#23559;使用者的 www 目&;#37636;先建立好,不然可是&;#26371;&;#36899;登入都&;#28961;法登入哦!!
在 FreeBSD 4.8R 以後的 /etc/ftpchroot 又新增了功能,&;#35443;&;#32048;的&;#35373;定可以
man ftpchroot (不&;#36942;,之前的版本&;#27794;&;#36889;&;#37707; man )。
[color=#FFFFFF'][/color]
1-3-2 方法二:利用 /etc/login.conf
&;#36889;&;#20491;方法是利用使用者&;#36039;料&;#24235; (系&;#32113;密&;#30908;&;#27284; /etc/master.passwd) 中 login class 的&;#27396;位,&;#20358;&;#35373;定使用者&;#38584;於的 class ,然後在 /etc/login.conf 中&;#35373;定各 class 在 FTP chroot 的&;#21205;作&;#28858;何,在 /etc/ftpchroot 不方便&;#35373;定&;#26178;,&;#36969;用於要&;#34389;理很多人的&;#29376;&;#27841;。
[color=#FFFFFF'][/color]
&;#38283;&;#21855; /etc/login.conf &;#20358;修改,&;#22519;行:
ee /etc/login.conf 然後找到下面 default: &;#38283;&;#38957;的哪&;#24190;行,&;#39006;似下面的&;#20839;容:
default:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
...................略
加下面&;#36889;一行:
:ftp-chroot:\ [color=#FFFFFF'][/color]
&;#35722;成:
[color=#FFFFFF'][/color]
default:\
:ftp-chroot:\ :copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
...................略
然後&;#22519;行下列&;#36889;行指令,把 login.conf &;#36681;成&;#36039;料&;#24235;格式
cap_mkdb /etc/login.conf [color=#FFFFFF'][/color]
&;#36889;&;#27171;,所有的&;#24115;&;#34399;都&;#26371;做 chroot,活&;#21205;的&;#31684;&;#22285;就限定在自己的目&;#37636;中。
想全部管制,但又想&;#38283;放系&;#32113;管理用的&;#24115;&;#34399;不做 chroot 呢? 前面的方法
,我&;#20497;&;#35373;定的是 default &;#36889;&;#20491; login class 要做 FTP 的 chroot,也就是所有人共同的&;#35373;定,想&;#35731;系&;#32113;管理可以到&;#34389;游走,就&;#35373;定一&;#20491;系管的 class ,&;#20006;且&;#23559; ftp-chroot 的&;#23660;性去掉即可&;#36948;到部份&;#38283;放的目的。
&;#38283;&;#21855; /etc/login.conf 新增系管的 login class 叫 admin,&;#20006;加入 ftp-chroot &;#28858;否的&;#35373;定:
ee /etc/login.conf 新增下面&;#24190;行(注意&;#34253;色的部份), 注意:除了前面 defaults: 下的 ftp-chroot 部份,我&;#20497;在下面另外新增一&;#20491; login class 叫 admin:
default:\
:ftp-chroot:\ :copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
...................略
admin:\
:ftp-chroot@:\
:tc=default: ...................略
然後&;#22519;行下列&;#36889;行指令,把 login.conf &;#36681;成&;#36039;料&;#24235;格式:
cap_mkdb /etc/login.conf [color=#FFFFFF'][/color]
注意:上面在 admin &;#36889;&;#20491; class 中用的是:
:ftp-chroot
@:\
[color=#FFFFFF'][/color]
ftp-chroot 多了&;#20491;小老鼠哦!它代表&;#36889;&;#20491;值要相反的意思,也就不做 ftp-chroot。
再&;#20358;,我&;#20497;要告&;#35380;系&;#32113;,&;#35504;&;#23660;於 admin &;#36889;&;#20491; login class ,直接修改&;#24115;&;#34399;&;#36039;料&;#24235;,&;#22519;行
vipw [color=#FFFFFF'][/color]
修改管理&;#21729; (不做 chroot) 的 login class &;#28858; admin
例如:
假&;#35373;系&;#32113;管理&;#21729; gsyan 原&;#20358;的&;#24115;&;#34399;&;#36039;料是:
[color=#FFFFFF'][/color]
gsyan:*:1000:1000::0:0:大雄:/home/gsyan:/bin/tcsh
要&;#23559;它的 login class 修改&;#28858; admin ,就改&;#28858;下面的&;#27171;子:
[color=#FFFFFF'][/color]
gsyan:*:1000:1000:
admin:0:0:大雄:/home/gsyan:/bin/tcsh
都修改完了就&;#20786;存&;#27284;案,利用 FTP &;#36575;&;#39636;以不同身份登入&;#28204;&;#35430;看看。
&;#35498;明:
[color=#FFFFFF'][/color]
FreeBSD 中 /etc/master.passwd 密&;#30908;&;#27396;位依序&;#28858;:
&;#24115;&;#34399;名&;#31281;:密&;#30908;:UID:GID:
class:&;#24375;制&;#25563;密&;#30908;的&;#26178;&;#38291;:有效&;#26178;&;#38291;:&;#36039;料:家目&;#37636;:shell
所以要改的 login class 是第五&;#20491;&;#27396;位。
&;#38364;於密&;#30908;&;#27284;的格式可以
man 5 passwd 查看
[color=#FFFFFF'][/color]
&;#23559;不同身份的使用者分&;#28858;&;#24190;&;#20491; login class,&;#20006;利用 /etc/login.conf &;#20358;&;#35373;定各身份能&;#22816;使用的系&;#32113;&;#36039;源是&;#28415;不&;#37679;的管制工具,非常值得好好的研究,&;#35443;&;#32048;的&;#20839;容可以
man login.conf 。
[color=#FFFFFF'][/color]
1-4 提供匿名(&;#35370;客用)的 FTP 服&;#21209;
&;#35731;在系&;#32113;中&;#27794;有&;#24115;&;#34399;&;#35370;客可以下&;#36617; FTP 站中的&;#27284;案,&;#36889;&;#31278;叫匿名的 FTP 服&;#21209; (Anonymous FTP),要提供&;#36889;&;#31278;服&;#21209;必&;#38920;有一&;#20491;叫 ftp 的&;#24115;&;#34399;&;#20006;建立好相&;#38364;的目&;#37636;及&;#27284;案,&;#36889;部份如果不清楚,利用 /stand/sysinstall &;#20358;做是最&;#36629;&;#39686;不&;#36942;的。底下是&;#35373;定的步&;#39519;:
[color=#FFFFFF'][/color]
1.呼叫 /stand/sysinstall ,&;#22519;行:
/stand/sysinstall [color=#FFFFFF'][/color]
2.&;#30070;出&;#29694;安&;#35037;&;#40670;&;#21934;『/stand/sysinstall Main Menu』, 按方向&;#37749;移到『Configure』,然後按
空白&;#37749;
3.&;#36914;入到『FreeBSD Configuration Menu』後,按方向&;#37749;移到『Networking』,然後按
空白&;#37749;
4.&;#36914;入到『Network Services Menu』後,按方向&;#37749;移到『Anon FTP』,後按
空白&;#37749; [color=#FFFFFF'][/color]
5.&;#36914;入到『Anonymous FTP Configuration』後,&;#36664;入下面的&;#36039;料:
6.&;#36664;入完&;#30050;後就按
OK 。
7.接著&;#36664;入FTP的 GID (使用&;#38928;&;#35373;值,直接按 Enter &;#37749;就可以)。
[color=#FFFFFF'][/color]
8.接著,&;#35426;&;#21839;是否要&;#29986;生&;#36914;站&;#27489;迎&;#35422; (welcome message),直接按 Enter &;#37749;就可以。
9.&;#36664;入&;#36914;站的&;#27489;迎&;#35422;:
[color=#FFFFFF'][/color]
10.&;#32232;&;#36655;完好後按 Esc &;#37749;,再按 Enter &;#37749;&;#20841;次即可存&;#27284;&;#38626;&;#38283;。
11.接著都&;#36984;&;#40670;&;#21934;最上面的
Exit 即可。
[color=#FFFFFF'][/color]