Linux架设FTP服务器之三

发表于:2007-07-02来源:作者:点击数: 标签:
2./etc/ftpusers和/etc/ftphosts的设置 /etc/ftpusers是用来设定系统上的某些用户不允许使用FTP传送文件,/etc/ftphosts是用来设定某些主机不允许连接本FTP 服务器 的。这样做的目的都是为了 安全 考虑。 /etc/ftpusers使用的范例如下: root bin daemon adm

2./etc/ftpusers和/etc/ftphosts的设置

/etc/ftpusers是用来设定系统上的某些用户不允许使用FTP传送文件,/etc/ftphosts是用来设定某些主机不允许连接本FTP服务器的。这样做的目的都是为了安全考虑。

/etc/ftpusers使用的范例如下:

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
限制某些用户登入FTP服务器是出于系统安全的原因,例如要避免超级用户登入系统。并且禁止某些和一些命令名相同的用户进入FTP服务器。

/etc/ftphosts的示例如下:

# Example host aclearcase/" target="_blank" >ccess file
#
# Everything after a @##@# is treated as comment,
# empty lines are ignored
#allow <username> <addrglob> [<addrglob> ...]
# Only allow host(s) matching <addrglob> to log in as <username>.
#deny <username> <addrglob> [<addrglob> ...]
# Always deny host(s) matching <addrglob> to log in as <username>.

allow ideal *.linuxaid.com.cn 10.0.0.0/8
deny fred *.hacker.com 131.211.32.0/24

这里只允许ideal从域名以linuxaid.com.cn为后缀的主机及10.0.0.0/255.0.0.0的主机登录进入FTP服务器;禁止fred从*.hacker.com和131.211.32.0/24登录进入FTP服务器。这里的username若为anonymous或ftp都指匿名用户。

3./etc/ftpconversions设置

该文件用来设定当用户下载文件时应该做那些操作,例如压缩、解压缩等。文件内容如下所示:

:.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
: : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
: : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
: : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
: : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
: : :.crc:/bin/cksum %s:T_REG::CKSUM
: : :.md5:/bin/md5sum %s:T_REG::MD5SUM


文件设置说明:

:.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
表示对所有以".Z"结尾的文件使用/bin/compress -d -c"的方式解压缩。

: : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
表示将传送的文件压缩为".Z"格式。

:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
表示将所有以".gz"的文件用"/bin/gzip -cd"解压缩。

: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
表示将传送的文件压缩为".gz"格式。

: : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
表示将要传送的文件用"tar"打包。

: : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
表示将要传送的文件压缩成"tar.Z"的格式

: : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
表示将要传送的文件压缩成"tar.gz"的格式

: : :.crc:/bin/cksum %s:T_REG::CKSUM
表示将要传送的文件进行CRC校验处理。

: : :.md5:/bin/md5sum %s:T_REG::MD5SUM
表示将要传送的文件进行md5校验。

其实安装FTP以后缺省的配置文件已经将常用的压缩也解压缩的程序定义进去了,所以一般不需要修改这个文件的内容,但可以根据实际需要修改内容的顺序。例如,用户要下载一个"file.tar.gz"的文件,但此FTP上没有这个文件,但是有文件file,那么FTP服务器会将file打包压缩为file.tar.gz在传递给用户。若服务器上没有file这个文件,服务器会按照/etc/ftpconversions文件中指定的顺序去搜索,,以这个例子而言,会依次搜索file.Z、file.gz、file.tar、file.tar.Z、file.tar.gz、file.crc、file.md5文件,将先找到的传送给用户。所以文件/etc/ftpconversions的内容可以按照需要而改变顺序。

到现在为止,已经安装配置成功了一个提供匿名访问的FTP服务器,可以连接上去测试功能是否符合需要。

4.wu-ftp的相关程序

ftpcount这个程序可以统计当前连接的用户数目,并给出上限,如:

[root@linux doc]# ftpcount
Service class friend - 0 users (no maximum)
Service class local - 0 users (no maximum)
Service class outworld - 0 users (no maximum)
这里正在连接的属于local的有0个人,没有上限。其他几个类别含义一样。

[root@linux doc]# ftpwho
Service class friend:
- 0 users (no maximum)
Service class local:
- 0 users (no maximum)
Service class local:
- 0 users (no maximum)
当前三个类别都没有用户连接。

ftpshut

该程序主要用来生成/etc/shutmsg,也就是前面/etc/ftpaccess中设定的shutdown命令,ftpshut的使用格式如下:

ftpshut [ -V ] [ -l min] [ -d min] time [ warning-message ... ]
-l 该选项设置在关闭FTP服务器以前多少分钟停止用户的连接请求
-d 该选项设置在关闭FTP服务器以前多少分钟将已经连接的用户断线
time 设置关闭FTP服务器的时间,例如希望在晚上10点关闭FTP服务器,则为2200
warning-message 断线以前显示给用户的告警信息
例如:

[root@linux /etc]# ftpshut -l15 -d5 1800 "ftp server will shutdown"
[root@lix /etc]# less shutmsg
2000 04 07 18 00 0015 0005
ftp server will shutdown

五、开设只能FTP的帐户

很多时候需要开设一些只允许ftp到服务器的用户,实现方法如下:

1、按照通常的方式为这些用户在系统上开设帐户。

[root@ns /etc]#useradd ftp_user1
[root@ns /etc]#chmod 700 /etc/shadows
[root@ns /etc]#vi /etc/shadows

删除项:
ftp_user1:!!:11113:0:99999:7:-1:-1:134537372
中第二个字段的"!!",然后再以ftp_usre1用户登录,就不会询问口令,然后使用passwd为该用户设定口令

2、使用vi修改/etc/shells文件,添加/dev/null项或/bin/passwd,如下所示:

[root@ns /etc]# cat shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh

修改为:

[root@ns /etc]# cat shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/dev/null
/bin/passwd


2、使用vi打开文件/etc/passwd
3、将那些只允许FTP的系统的用户的登录shell改为/dev/null(若不允许用户修改其口令)或/bin/passwd(若允许用户修改其口令字),如下所示:

ftp_user1:x:503:504::/home/ftp_user1:/bin/bash
改为:
ftp_user1:x:503:504::/home/ftp_user1:/dev/null

ftp_user1:x:503:504::/home/ftp_user1:/bin/passwd

这样,则该用户只能使用如pop3、FTP等服务,而不能通过te.net登录到系统中。

六、设置虚拟FTP主机
所谓虚拟匿名主机,指一台机器上有多个IP地址,并且可以向外提供过个匿名的FTP服务器,这些服务器在逻辑上是独立的,有不同的访问控制表,不同的下载内容。下面是设置一台虚拟FTP服务器的步骤:

1. 首先对本地某个网卡设置别名IP地址,即在一块网卡上绑定多个IP地址:如你的内部FTP主机为192.168.0.4

你可再绑定一个IP地址如下:
/sbin/ifconfig eth0:0 192.168.0.5 up //向接口添加一个新的IP
/sbin/route add -host 192.168.11.7 eth0:0 //增添路由信息

2. 先创建目录/home/virtualftp和/var/log/virtualftp。生成banner文件/home/virtualftp/banner_message修改FTP服务器的主配置文件/etc/ftpaccess,增加对虚拟FTP的支持信息,加下面的行到该文件中:

virtual 192.168.0.5 root /home/virtualftp
virtual 192.168.0.5 banner /home/virtualftp/banner_message
virtual 192.168.0.5 logfile /var/log/virtualftp/xferlog

上面三条指示分别设置的根目录,的记录文件,的登录显示信息。上面路径和文件名可随便定义。


3. 拷贝所需要的匿名FTP文件,主要是/lib,/etc,/bin目录
# cp /home/ftp/* /home/virtualftp -a

4.在DNS中定义192.168.0.5,设置成虚拟FTP的域名映射。

原文转自:http://www.ltesting.net