您的位置:首页 > 运维架构 > Linux

Suse Linux 10下安装配置vsftpd

2011-06-08 15:10 453 查看
一、下载

vsftpd的下载地址:

ftp://vsftpd.beasts.org/users/cevans/

下载的是源代码压缩包vsftpd-2.0.5.tar.gz文件,解压缩:

tar xzvf vsftpd-2.0.5.tar.gz

得到文件夹vsftpd-2.0.5,我将其拷贝到/usr/local/src目录下。

二、编译

一般vsftpd需要有nobody这个用户,该用户一般已存在,如果不存在,使用useradd nobody建立。

而且安装时需要/usr/share/empty作为临时目录,一般已存在。(可是我的系统上就没有,需要我自己建立)。查看Makefile文件得知如何编译,然后编译:

make vsftpd

然后安装:

make install

安装完毕,此时查看/etc/xinetd.d/目录下多出了vsftpd脚本。

三、配置

vsftpd

中常用的配置文件有两个:/etc/ftpusers和/etc/vsftpd.conf,其中以/etc/vsftpd.conf最为重要。但我安装完

之后发现/etc下并没有vsftpd.conf文件,我将源代码文件夹里的vsftpd.conf文件复制到/etc目录下。

(1)/etc/ftpusers

这个配置文件很简单,只要用户的名字在此文件内,便不能使用FTP。

(2)/etc/vsftpd.conf:vsftpd的主要设定文件

vsftpd.conf中参数众多,现在我们一个个介绍它们:

#如果不修改这个文件,就可以得到一个最小设置的匿名FTP服务器

#默认的设定只允许利用anonymous登录

#write_enable=YES

#write_enable=YES为允许用户有写的权限,默认值为NO

#dirmessage_enable=YES

#当用户进入某个目录时,如果该目录存在.message文件,则会显示该文件的内容,通常用来告知

#此目录存放文件的信息,默认值为NO

#nopriv_user=ftpsecure

#指定vsftpd以何帐号提供FTP服务,默认值是nobody。这样即使被cracker入侵vsftpd,cracker也仅能取得nobody的权限。

#ls_recurse_enable=YES

#ls_recurse_enable默认值为YES,代表禁用ls -Rl /,因为这个指令会耗费大量系统资源。

#no_anon_password=NO

#no_anon_password默认值为NO,代表anonymous不用输入密码就可登录FTP服务器。

#hide_ids=YES

#默认值为NO,若设置为YES,则登录FTP服务器会发现所有文件及目录其所有者及群组均为ftp

####################################################################

# Local FTP user Settings

# 有关本机用户的FTP相关设置(/etc/passwd中普通用户帐号)

####################################################################

#local_enable=YES

#local_enable默认值为NO,代表/etc/passwd中普通用户不能使用FTP服务。

#local_umask=022

#local-umask的意义是Local User上传文件时,文件权限会使用所指定的umask加以运算,默认值为077

#chroot_local_user=YES

#chroot_local_user的用途是将用户的HOME目录变为其FTP登录后的根目录,如此一来,所有Local User

#便不能离开起home目录。其默认值为NO。

#chroot_list_enable=YES

# chroot_list_file=/etc/vsftpd.chroot_list

#若不想利用chroot_local_user=YES把所有本地用户(Local User)都限制在其home目录,

#可利用chroot_list_enable=YES设定值,将某些帐号限制在home目录下

#当chroot_list_enable=YES时,登录用户名字若在/etc/vsftpd.chroot_list内

#则会启用chroot机制,将这个用户限制在其home目录下。

#chroot_list_enable默认值是NO,chroot_list_file默认值为/etc/vsftpd.chroot_list

#local_max_rate=7200

#local_max_rate用来限制Local user每秒的最高传输速度

#其单位是bytes/sec,默认值为0,就是没有限制。

################################################################

# Anonymous用户的相关配置

################################################################

#anonymous_enable=YES

#anonymous_enable=YES,允许用户可用匿名(anonymous)或ftp帐号,不用密码就可登录FTP服务器,默认值是YES。

#anon_world_readable_only=YES

#anon_world_readable_only=YES,用来限制匿名(anonymous)用户只能下载有开放Other可以write的文件,其默认值为YES。

#anon_upload_enable=YES

#anon_upload_enable用来限制匿名(anonymous)用户可否上传文件,默认值为NO。

#anon_umask=022

#anon_umask的意义是匿名(anonymous)用户上传文件时,文件权限会用所指定的umask加以运算,默认值为077。

#anon_mkdir_write_enable=YES

#anon_mkdir_write_enable允不允许anonymous用户建立目录,其默认值为NO。

#anon_other_write_enable=YES

#所否允许anonymous用户有write的权限,不过记得通过anon_other_write_enable的限制后,

#还得看打算写的目录或文件的权限允不允许anonymous用户write。

#chown_uploads=YES

#chown_username=whoever

#chown_uploads用户指定anonymous帐号上传的文件是否要改变其所有者。

#chown_uploads默认值为NO,chown_username用来指定新的所有者。

#anon_max_rate=7200

#anon_max_rate用来限制anonymous用户每秒的最高传输速度,

#其单位是bytes/sec,默认值是0,就是没有限制。

###############################################################

# Log Settings

# 有关FTP日志的相关规定

###############################################################

#syslog_enable=YES

#syslog_enable=YES会将本来应记录在/var/log/vsftpd.log的信息,转而传给syslogd daemon,

#由syslogd的配置文件决定存于何位置。syslog_enable默认值为NO。

#log_ftp_protocol=YES

#log_ftp_protocol=YES会将所有FTP有关的请求和回应全部记录,其默认值为NO。

#xferlog_enable=YES

#xferlog_enable=YES会详细记录有关上传/下载的信息,其默认值为NO。

#vsftpd_log_file=/var/log/vsftpd.log

#vsftpd_log_file可用来指定vsftpd的log文件位置。

#xferlog_std_format=YES

#xferlog_std_format默认值为NO,若设定为YES,则log内容会采用标准xferlog格式(wu-ftpd日志文件所采用的格式)。

#xferlog_file=/var/log/xferlog

#xferlog_file用来指定wu-ftpd格式的log的存放位置。

#dual_log_enable=YES

#dual_log_enable默认值为NO,若设定为YES,则/var/log/xferlog和/var/log/vsftpd.log均会记录FTP相关日志。

#setproctitle_enable=YES

#setproctitle_enable默认值为NO,若设定为YES,则查看系统进程状态时,会列出ftp连接的状态。

#例如执行 ps -ef | grep vsftp 可看到谁正在连接。

#nobody 4424 ... vsftpd: 127.0.0.1: not logged in

################################################################

# Transfer Settings

# 传输文件的相关规定

################################################################

#connect_from_port_20=YES

#connect_from_port_20=YES代表主动模式的数据连接是用端口20,其默认值为NO。

#idle_session_timeout=600

#idle_session_timeout设定FTP客户端多久未执行任何ftp指令操作,便将其断线,默认值为300秒。

#data_connection_timeout=120

#允许数据传输时idle的秒数,默认值是300秒。

#async_abor_enable=YES

#async_abor_enable的默认值为NO,必须要FTP客户端有支持async_abort的机制才可以打开。

#ascii_upload_enable=YES

#ascii_upload_enable的默认值为NO,若设为YES则用户可用ascii方式上传数据,不过若启用此参数可能会

#导致Dos攻击,所以采用默认值。

#ascii_download_enable=YES

#同上,ascii_download_enable默认值为NO,若设为YES则用户可用ascii方式下载数据,不过若启用此参数可能会

#导致Dos攻击,所以采用默认值。

#pasv_enable=NO

#pasv_enable默认值为YES,若设为NO,FTP客户端则无法使用被动模式FTP。

#pam_service_name=vsftpd

#vsftpd PAM模块的名称,起存放在/etc/pam.d/目录。

#listen=YES

#listen默认值为NO,若设定为YES,则vsftpd会用standalone方式启动。

启动vsftpd服务语句:

#service vsftpd start(重启restart/停止stop)

#/etc/init.d/vsftpd start (重启restart/停止stop)

四、装完之后的问题

但装完之后问题多多,根本没法成功:(1)

先是FTP的的主目录问题,虽然配置文件里允许匿名用户上传文件,但FTP主目录/srv/ftp却并不是允许任何用户有写的权限,所以必须在该目录下建

立一个允许ftp这个匿名用户写的目录,我在/srv/ftp/目录下又建了两个目录incoming,pub,其中incoming目录的权限允许其他

用户读和写,pub目录允许其他用户读,但不可写。(2)并不是某个目录允许写或读,其下的文件就允许写或读,要想理想中的操作,还必须更改文件

的权限。例如,我想下载incoming目录中的某文件,而该文件并不允许匿名用户读的话,就没法下载。所以我更改配置文件,将匿名用户上传的文件的权限

都改成匿名用户可以下载的,方法是将anon_umask=022,注意这个022是一个八进制数,其实是0022。(3)还有就是开放端口的问

题,比如我开放的FTP端口是10021,必须在SuseFirewall2中开放此端口,由于FTP的数据传输使用另一条连接,在被动模式下(个人比较

喜欢被动模式,因为他可以解决某些防火墙的问题),要开放一个端口范围(通过pasv_max_port和pasv_min_port指定),我为了方便

SuseFirewall2开放端口的方便,将这两个值都设为50000,这样SuseFirewall2就只需要再开放50000端口就行了,而不用开

放一个范围。(4)最后就是路由器的NAT问题,如果是在有网关的局域网内建FTP服务器,必须将外面对网关IP(路由器对外IP)某端口的连接转发到内网的那台服务器的IP的相应端口上。我最后是让vsftpd以standalone的方式运行,所以listen=YES得启用,且使用的是被动模式,故pasv_enable=YES要启用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: