vsftpd 高手篇

FROM: http://blog.163.com/tony2006@126/blog/static/5617819720082253591421/

From: flyinweb's blog

环境:linux as 3.0 + vsftpd -1.2.0-4的系统架构,是在独立服务器环境!

1. 配置本地组访问的FTP

首先创建用户组 test和FTP的主目录

groupadd test

mkdir /tmp/test

然后创建用户

useradd -G test –d /tmp/test –M usr1

注:

G:用户所在的组;d:表示创建用户的自己目录的位置给予指定;M:不建立默认的自家目录,也就是说在/home下没有自己的目录

useradd –G test –d /tmp/test –M usr2

接着改变文件夹的属主和权限

chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1

chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有

这个实验的目的就是usr1有上传、删除和下载的权限,而usr2只有下载的权限没有上传和 删除的权限,当然啦大家别忘了我们的主配置文件vsftpd.conf,要确定local_enable=yes、write_enable=yes、 chroot_local_usr=yes这三个选项是有的哦!

2. 配置独立FTP的服务器的非端口标准模式进行数据连接

这个非常容易:在VSFTPD.CONF中添加

Listen_port=33333

就可以了啦!

3. 配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限

(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)

A:配置网卡

第一块网卡地址是10.2.3.4 掩码是255.255.0.0

ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up

B:写入/etc/sysconfig中(为了重起后IP地址不会丢失)

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-eth0:1

vi ifcfg-eth0:1在其中修改内容如下

DEVICE=eth0:1

BROADCAST=211.131.4.255

HWADDR=该网卡的MAC地址

IPADDR=211.131.4.253

NETMASK=255.255.255.0

NETWORK=211.131.4.0

onBOOT=yes

TYPE=Ethernet

wq推出

C:进入vsftpd.conf所在的文件夹

cp vsftpd.conf vsftpd2.conf

修改vsftpd.conf添加以下信息

Listen_address=10.2.3.4

修改vsftpd2.conf添加以下信息

Listen_address=211.131.4.253

Ftpd_banner=this is a virtual ftp test

到此虚拟的FTP服务器建立好了

D:建立logins.txt

vi /tmp/logins.txt

添加入下信息:

longlei------------用户名

longlei------------密码

zhangweibo

zhangweibo

jinhui

jinhui

lxp

lxp

格式要按照我的来哦,一个用户名,一个密码啦

F:建立访问者的口令库文件,然后修改其权限

db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db

G:进如/etc/pam.d/中创建ftp.vu

在此文件中添加如下信息

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

H:在/var/ftp/创建目录并改变其属性和它的属主

useradd -d /var/ftp/test qiang

chmod 700 /var/ftp/test

在目录中添加test_file测试文件

I:进入vsftpd2.conf修改其中的信息

Listen_yes

Anonymous_enable=no

Local_enable=yes

Write_enable=no

Anon_upload_enable=no

Anon_mkdir_write_enable=no

Anon_other_write_enable=no

Chroot_local_user=yes

Guest_enable=yes----------起用虚拟用户

Guest_username=qiang------将虚拟用户映射为本地用户

Listen_port=5555

Max_client=10

Max_per_ip=1

Ftpd_banner=this is a virtual server and users

Pam_service_name=ftp.vu

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件

重起服务,到此虚拟USER就建好了

J:在VSFTPD.CONF所在的目录中创建virtaul文件目录

并在文件目录中创建以你用户名命名的配置文件

Longlei zhangweibo jinhui lxp

在longlei中添加:

Anon_world_readable_only=no

在lxp中添加

Anon_world_readable_only=no

这样此两个用户就有了浏览目录的权限了

在jinhui中添加

Anon_world_readable_only=no

Write_enable=yes

Anon_upload_enable=yes

此用户就有了上传、下载和浏览的权限

在zhangweibo中添加

Anon_world_readable_only=no

Write_enable=yes

Anon_upload_enable=yes

Anon_other_write_enable=yes

此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限

K:修改vsftpd2.conf

加入user_config_dir=/vsftpd.conf所在的目录/virtual

重起服务器

下面是VSFTPD.CONF中的所有配置信息

Anonymous_enable=yes (允许匿名登陆)

Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

Local_umask=022 (FTP上本地的文件权限,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)*

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Ftpd_banner=XXXXX (欢迎信息)

Pam_service_name=vsftpd (验证方式)*

Listen=yes (独立的VSFTPD服务器)*

Anon_upload_enable=yes (开放上传权限)

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

Write_enable=yes (开放本地用户写的权限)

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

Anon_world_readable_only=no (放开匿名用户浏览权限)

Ascii_upload_enable=yes (启用上传的ASCII传输方式)

Ascii_download_enable=yes (启用下载的ASCII传输方式)

Banner_file=/var/vsftpd_banner_file (用户连接后欢迎信息使用的是此文件中的相关信息)

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

Accept_timeout=60(秒) (将客户端空闲1分钟后断)

Connect_timeout=60(秒) (中断1分钟后又重新连接)

Local_max_rate=50000(bite) (本地用户传输率50K)

Anon_max_rate=30000(bite) (匿名用户传输率30K)

Pasv_min_port=50000 (将客户端的数据连接端口改在Pasv_max_port=60000 50000—60000之间)

Max_clients=200 (FTP的最大连接数)

Max_per_ip=4 (每IP的最大连接数)

Listen_port=5555 (从5555端口进行数据连接)

Local_enble=yes (本地帐户能够登陆)

Write_enable=no (本地帐户登陆后无权删除和修改文件)

这是一组

Chroot_local_user=yes (本地所有帐户都只能在自家目录)

Chroot_list_enable=yes (文件中的名单可以调用)

Chroot_list_file=/任意指定的路径/vsftpd.chroot_list (前提是chroot_local_user=no)

这又是一组

Userlist_enable=yes (在指定的文件中的用户不可以访问)

Userlist_deny=yes

Userlist_file=/指定的路径/vsftpd.user_list

又开始单的了

Banner_fail=/路径/文件名 (连接失败时显示文件中的内容)

Ls_recurse_enable=no

Async_abor_enable=yes

one_process_model=yes

Listen_address=10.2.2.2 (将虚拟服务绑定到某端口)

Guest_enable=yes (虚拟用户可以登陆)

Guest_username=所设的用户名 (将虚拟用户映射为本地用户)

User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹 (指定不同虚拟用户配置文件的路径)

又是一组

Chown_uploads=yes (改变上传文件的所有者为root)

Chown_username=root

又是一组

Deny_email_enable=yes (是否允许禁止匿名用户使用某些邮件地址)

Banned_email_file=//任意指定的路径/xx/

又是单的

Pasv_enable=yes ( 服务器端用被动模式)

User_config_dir=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)

VSFTPD的菜鸟篇:

这是我这个菜鸟学习LINUX所写的第一篇文章,是比较基础的FTP架设的应用,如果我写有什么问题请大家多指教,我后续会陆续出进阶篇把FTP中各种详细的配置跟大家一起进行探讨。

我所用的是LINUX AS+VSFTPD-1.2.0-4的系统架构,在这里说明的是如果对配置文件不是很熟悉,最好做个备份,以免误操作:

1. 匿名服务器的连接(独立的服务器)

在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:

Anonymous_enable=yes (允许匿名登陆)

Dirmessage_enable=yes (切换目录时,显示目录下.message的内容)

Local_umask=022 (FTP上本地的文件权限,默认是077)

Connect_form_port_20=yes (启用FTP数据端口的数据连接)*

Xferlog_enable=yes (激活上传和下传的日志)

Xferlog_std_format=yes (使用标准的日志格式)

Ftpd_banner=XXXXX (欢迎信息)

Pam_service_name=vsftpd (验证方式)*

Listen=yes (独立的VSFTPD服务器)*

功能:只能连接FTP服务器,不能上传和下传

注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项

2. 开启匿名FTP服务器上传权限

在配置文件中添加以下的信息即可:

Anon_upload_enable=yes (开放上传权限)

Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)

Write_enable=yes (开放本地用户写的权限)

Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

3. 开启匿名服务器下传的权限

在配置文件中添加如下信息即可:

Anon_world_readable_only=no

注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限

(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去

4.普通用户FTP服务器的连接(独立服务器)

在配置文件中添加如下信息即可:

Local_enble=yes (本地帐户能够登陆)

Write_enable=no (本地帐户登陆后无权删除和修改文件)

功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限

注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传

5. 用户登陆限制进其它的目录,只能进它的主目录

设置所有的本地用户都执行chroot

Chroot_local_user=yes (本地所有帐户都只能在自家目录)

设置指定用户执行chroot

Chroot_list_enable=yes (文件中的名单可以调用)

Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可

6. 限制本地用户访问FTP

Userlist_enable=yes (用userlistlai 来限制用户访问)

Userlist_deny=no (名单中的人不允许访问)

Userlist_file=/指定文件存放的路径/ (文件放置的路径)

注:开启userlist_enable=yes匿名帐号不能登陆

7. 安全选项

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)

Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)

Accept_timeout=60(秒) (将客户端空闲1分钟后断)

Connect_timeout=60(秒) (中断1分钟后又重新连接)

Local_max_rate=50000(bite) (本地用户传输率50K)

Anon_max_rate=30000(bite) (匿名用户传输率30K)

Pasv_min_port=50000 (将客户端的数据连接端口改在

Pasv_max_port=60000 50000—60000之间)

Max_clients=200 (FTP的最大连接数)

Max_per_ip=4 (每IP的最大连接数)

Listen_port=5555 (从5555端口进行数据连接)

8. 查看谁登陆了FTP,并杀死它的进程

ps –xf |grep ftp

kill 进程号

用vsFTPd自架Linux网络安装服务器,以及Redhat局域网安装的解决办法

约定:

1。本帖操作环境是Redhat 9.0,vsFTPd的版本是Redhat 9.0所带的vsftpd-1.1.3-8.i386.rpm,在安装盘的第三张中

2。vsFTPd实现的最基本的目的:用系统中存在的真实用户能登入FTP,能用匿名访问。

3。本帖中vsFTPd运行模式是在standalone模式下运行的,也就是说,本帖中 vsFTPd所有的功能都是在standalone模式下运行的。至于有些功能是否能在xinetd模式下运行,您就得测试了,不能照搬照抄。因为有些功 能是必须运行在特定的模式下的。

3。服务器的IP和和DNS设定

第一块网卡

IP:192.168.0.1

子掩码:255.255.255.0

网关不设置:

第二块网卡:

IP:192.168.0.2

子掩码:255.255.255.0

网关不设置

因为我的操作环境是一个小型的局域网,所以其它的机器的IP都是在192.168.0这个网 段上。ADSL是接在服务器的第一个网卡上。服务器的第二个网卡是接集线器,其它的客户机都是接在集线器上。为了能让ADSL访问internet,因为 自己手动设置了IP,所以DNS也要自己来设置,DNS如下:

202.96.134.133

202.96.168.68

设置工具是:

[root@linuxsir001 root]# redhat-config-network

相应参考资料:vsFTPd官方文档:

http://www.linuxsir.com/bbs/showthr...;threadid=43451

一。用vsFTPd来架设FTP服务器,vsFTPd服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高

1。查看是否安装了vsFTPd软件

[root@linuxsir001 root]# rpm -qa | grep vsftpd

如果没有任何显示,说明没有把vsFTPd安装上,如果出现的是下面的这样的提示,就证明已经安装上了。

[root@linuxsir001 root]# rpm -qa | grep vsftpd

vsftpd-1.1.3-8

我以Redhat 9.0,以其自带的vsFTPd包vsftpd-1.1.3-8版本来为本帖约定。

[root@linuxsir001 root]# rpm -ivh vsftpd*.rpm

2。打开vsFTPd服务器。

[root@linuxsir001 root]# ntsysv

把vsftpd服务器打开,也就是在运行 ntsysv命令后,把vsftpd服务选中。

vsftpd

3。运行/etc/init.d/vsftpd start

[root@linuxsir001 root]# /etc/init.d/vsftpd start

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

4。配制vsFTPd,vsFTPd的运行有两种模式,一种是standalone "initd"模式,另外一种是xinetd模式,上面我们所说的就是standalone "initd"运行模式。两种模式运行机制不是相同的,stardard initd模式,适合专业FTP,且FTP总是一直有人访问,占用资源也是比较大,如果您的FTP总是有人访问和登入。就要用这种模式。如果您的FTP访 问人数比较小,建议您用xinetd模式。xinetd模式,是当用户请求时,vsFTPd才会启动。

不同的环境,当然得用不同的启动模式。

如果想了解更多的,请在本帖后面跟帖,我会慢慢补充xinetd模式,以及虚拟用户如何设置方面的问题。

1]我们主要把vsFTPd的配制文件改一下就行了。配制文件在/etc/vsftpd/vsftpd.conf,用您喜欢的编辑器打开。请参考下面的配制文件。

# Example config file /etc/vsftpd.conf

#

# The default compiled in settings are very paranoid. This sample file

# loosens things up a bit, to make the ftp daemon more usable.

#

# Allow anonymous FTP?

anonymous_enable=YES

#

# Uncomment this to allow local users to log in.

local_enable=YES

#

# Uncomment this to enable any form of FTP write command.

write_enable=YES

#

# Default umask for local users is 077. You may wish to change this to 022,

# if your users expect that (022 is used by most other ftpd's)

local_umask=022

#

# Uncomment this to allow the anonymous FTP user to upload files. This only

# has an effect if the above global write enable is activated. Also, you will

# obviously need to create a directory writable by the FTP user.

#anon_upload_enable=YES

#

# Uncomment this if you want the anonymous FTP user to be able to create

# new directories.

#anon_mkdir_write_enable=YES

#

# Activate directory messages - messages given to remote users when they

# go into a certain directory.

dirmessage_enable=YES

#

# Activate logging of uploads/downloads.

xferlog_enable=YES

#

# Make sure PORT transfer connections originate from port 20 (ftp-data).

connect_from_port_20=YES

#

# If you want, you can arrange for uploaded anonymous files to be owned by

# a different user. Note! Using "root" for uploaded files is not

# recommended!

#chown_uploads=YES

#chown_username=whoever

#

# You may override where the log file goes if you like. The default is shown

# below.

#xferlog_file=/var/log/vsftpd.log

#

# If you want, you can have your log file in standard ftpd xferlog format

xferlog_std_format=YES

#

# You may change the default value for timing out an idle session.

#idle_session_timeout=600

#

# You may change the default value for timing out a data connection.

#data_connection_timeout=120

#

# It is recommended that you define on your system a unique user which the

# ftp server can use as a totally isolated and unprivileged user.

#nopriv_user=ftpsecure

#

# Enable this and the server will recognise asynchronous ABOR requests. Not

# recommended for security (the code is non-trivial). Not enabling it,

# however, may confuse older FTP clients.

#async_abor_enable=YES

#

# By default the server will pretend to allow ASCII mode but in fact ignore

# the request. Turn on the below options to have the server actually do ASCII

# mangling on files when in ASCII mode.

# Beware that turning on ascii_download_enable enables malicious remote parties

# to consume your I/O resources, by issuing the command "SIZE /big/file" in

# ASCII mode.

# These ASCII options are split into upload and download because you may wish

# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),

# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be

# on the client anyway..

#ascii_upload_enable=YES

#ascii_download_enable=YES

#

# You may fully customise the login banner string:

#ftpd_banner=Welcome to blah FTP service.

#

# You may specify a file of disallowed anonymous e-mail addresses. Apparently

# useful for combatting certain DoS attacks.

#deny_email_enable=YES

# (default follows)

#banned_email_file=/etc/vsftpd.banned_emails

#

# You may specify an explicit list of local users to chroot() to their home

# directory. If chroot_local_user is YES, then this list becomes a list of

# users to NOT chroot().

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list

#

# You may activate the "-R" option to the builtin ls. This is disabled by

# default to avoid remote users being able to cause excessive I/O on large

# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume

# the presence of the "-R" option, so there is a strong case for enabling it.

#ls_recurse_enable=YES

pam_service_name=vsftpd

userlist_enable=YES

#enable for standalone mode

listen=YES

tcp_wrappers=YES

2]更改完配制文件后,我们可以用下面的命令来重启vsFTPd服务器

[root@linuxsir001 root]# /etc/init.d/vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

3]以匿名方式来访问测试,在text模式下:

注意:在text模式下,要用用户名ftp,密码ftp来访问,这才是在text中匿名访问FTP。看如下的操作:

[root@linuxsir001 root]# ftp 192.168.0.1

Connected to 192.168.0.1.

220 (vsFTPd 1.1.3)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.0.1:root): ftp 这里写上ftp

331 Please specify the password.

Password:[这里添写ftp的密码],匿名登入密码也是ftp

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,0,1,137,151)

150 Here comes the directory listing.

drwxr-xr-x 6 0 0 4096 May 25 13:54 RedHat90

drwxr-xr-x 2 0 0 4096 Feb 28 19:21 pub

226 Directory send OK.

ftp>

那匿名用户所访问的是哪个目录?是/var/ftp这个目录

出现问题的解决:有时出错,是因为没有ftp和nobody用户,所以要在系统中添加这两个用户,一般的情况下,这两个用户在系统中是存在的。看下面的操作。

[root@linuxsir001 root]# adduser ftp

adduser: user ftp exists

[root@linuxsir001 root]# adduser nobody

adduser: user nobody exists

从上面的操作中可知ftp和nobody用户是存在的,所以没有必要添加ftp和nobody用户了。如果不存在,一定要添加这两个用户,否则会出现匿名用户不能访问的情况。

4]如果要以系统中存在的普通用户登入FTP,也没有什么可以设置的,添加一个用户就行。比如我要添加beinan这个用户,就要用下面的办法

[root@linuxsir001 root]# adduser beinan

[root@linuxsir001 root]# passwd beinan

Changing password for user beinan.

New password:

BAD PASSWORD: it does not contain enough DIFFERENT characters

Retype new password:

passwd: all authentication tokens updated successfully.

[root@linuxsir001 root]#

这样的话,就在/home目录中出现一个beinan的用户目录:如下:

[root@linuxsir001 root]# ls /home/

beinan

如果我们想让beinan这个用户作为虚拟用户,也就是说,beinan这个用户是不能登入系统的,只能是登入FTP。 那这样的用户应该如何添加呢??

[root@linuxsir001 backupNow]# adduser -g ftp -s /sbin/nologin beinan

[root@linuxsir001 backupNow]# passwd beinan

Changing password for user beinan.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@linuxsir001 backupNow]#

注:这仅仅是vsFTPd添加虚拟用户的一个方法,还有更好的办法需要我们去学习!另外的办 法也在测试之中。严格上来说,这种办法不能算虚拟用户。还有另外的一个办法,就是通过pam认证,用db_load来添加用户,目前我也弄成功了,不过相 对要复杂一点。正在测试之中。

如果我们想把用户目录定位到别的目录应该怎么办呢??这个也比较简单,看一下useradd就比较明白了。比如我想添加beinan这个用户,并把目录放在/opt目录中:如下操作:

[root@linuxsir001 root]# adduser -d /opt/beinan beinan

[root@linuxsir001 root]# passwd beinan

Changing password for user beinan.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

如果是添加虚拟用户,也就是不让用户登入系统,只能登入FTP的用户。如果我们想把beinan这个用户目录定位在/opt/beinan这个目录中,根据上面的方法。我们应该如下操作

[root@linuxsir001 backupNow]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan

[root@linuxsir001 backupNow]# passwd beinan

Changing password for user beinan.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

[root@linuxsir001 backupNow]#

看一下是不是已经成功添加到了beinan这个用户,并把beinan的家目录放在了/opt目录中呢??

[root@linuxsir001 root]# ls /opt/

beinan

证明已经成功。

我们可以在text模式下以beinan用户登入,然后来访问ftp。

[root@linuxsir001 root]# ftp 192.168.0.1

Connected to 192.168.0.1.

220 (vsFTPd 1.1.3)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.0.1:root): beinan

331 Please specify the password.

Password:

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

是不是成功了???

我们也可以用gftp来访问beinan用户,并上传相应的东西,所传上的东西就放在beinan用户所在的家目录中,普通用户的家目录在哪里,写您所用的添加用户的方法有关。我在前面已经说了两种办法,一种是默认的添加方法,就是放在/home目录中。

在本例中,我是采用默认的添加用户的方法。也就是不特别指定用户用户,这样的话,用户目录就在/home目录中。比如用beinan登入FTP时,访问的就是/home/beinan这个目录。让传的东西也在这个目录中。

那匿名用户所访问的是哪个目录呢???

应该是:/var/ftp这个目录

5]访问ftp的几种方法

第一种方法就是text访问,也就是用ftp命令来访问。这个前面已经说过了。

第二种方法是以客户端FTP软件来访问,在linux中有gftp。在本例中,我的FTP地 址是通过局域网访问的。地址栏中,添上192.168.0.1,端口是21,用户名和密码的添写,如果您是用匿名登入,请不要添写用户名和密码。如果用普 通用户登入,这个是必须要用用户名和密码的。

第三种办法是和浏览器访问:如果匿名登入,就直接用下面的方法:

ftp://192.168.0.1

如果是用户登入方式,应该是

ftp://beinan@192.168.0.1

如果想让在互联网上的用户能访问到,如果您是用ADSL来访问互联网,要查找到您的动态IP,用下面的办法

[root@linuxsir001 root]# ifconfig ppp0

ppp0 Link encap:Point-to-Point Protocol

inet addr:218.61.7.23 P-t-P:218.61.7.1 Mask:255.255.255.255

UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1

RX packets:24245 errors:0 dropped:0 overruns:0 frame:0

TX packets:20411 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:3

RX bytes:23103297 (22.0 Mb) TX bytes:3588337 (3.4 Mb)

从上面的可以知道,能让在internet访问的地址是:218.61.7.23

二。如何让局域网通过这个FTP安装Linux呢??以Redhat 9.0为例:

1。我们要在/var/ftp中,为每个发行版建一个目录,然后把每个发行版的每个版本再建一个目录。把每个版本的ISO都解压到相应的目录里。举个例子:

比如我想让其它的客户机,通过我的服务器来安装Redhat9.0,我就要在/var/ftp目录中建一个RedHat90的目录,然后把RedHat 9.0的三个ISO都解到这个目录中。

这样服务器的设置就完成了。

2。客户机方面如何引导及设置???我们可以做一个系统的引志盘,但有的发行版也没有必要。 这也要以各个发行版的情况而定。比如Redhat 9.0的安装,如果您的客户机上有windows,就直接通过局域网的FTP,dosutils images isolinux三个目录放到一个在fat32分区中建的目录中,比如说在客户机上建一个Redhat9的目录,然后把三个文件拷到客户机中的fat32 分区中的Redhat9的目录中。

3.客户机安装及操作:

以DOS盘引导,不要加载CDROM,直接进入客户机中fat32分区Redhat9/dosutils目录,执行下面的命令。

autoboot

这样就开始了安装:

4.出现的画面中,我们要选ftp安装。在设置网络环境时,我们要设置好IP和网关之类的。

以我的局域网为例:

客户机的IP设置成192.168.0.5,掩码也是2552555.255.0,网关设置成192.168.0.1。name 服务可以不设置。以匿名方式访问FTP。

下一步会出现让我们添写FTP,及安装源的地址,还是以我的局域网为例:

地址:192.168.0.1

路径:因为我是把三个ISO放在了/var/ftp/RedHat90的目录下,我应该写如下的

/RedHat90

这样就OK了,一切和其它的安装方式都是一样的了。

因为每个发行版不太一样,所以通过网络安装,有的要做引导盘,如何做引导盘,我想大家早就知道了。如果不知道这方面的,请用搜索来找这方面的帖子。

__________________

补充一:如何有选择的把用户限制在家目录中呢?

我们要自己建一个文件,在/etc目录中

#touch /etc/vsftpd.chroot_list

以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。

在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。

beinan

nanbei

然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd.chroot_list

把前面的#号去掉,也就是这样的

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

如果没有这样的两行,就可以自己添加上去也是一样的。

设置好后,重新vsFTPD服务器。

补充一之补充:如何把系统内所有的FTP用户都限制在家目录中呢??经juliaugong兄的提示,我查找了vsFTPd的洋文说明,证明这个选项是一刀切的解决所有的用户都能限制在家目录中

我们可以通过更改vsftpd.conf文件,加入如下的一行

chroot_local_user=YES

改完配制文件,不要忘记重启vsFTPd服务器

[root@linuxsir001 root]# /etc/init.d/vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

补充二:打开vsFTP服务器的日志功能:

把下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,这对于我们来说是极为重要的。

#xferlog_file=/var/log/vsftpd.log

补充三:如何让绑定IP到vsFTP?也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP

在/etc/vsftpd/vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP

listen_address=192.168.0.2

加完后,要重启vsFTP服务器

[root@linuxsir001 root]# /etc/init.d/vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

补充四:如何让vsFTP服务器限制链接数,以及每个IP最大的链接数??

答:应该改vsFTP服务器的配制文件vsftpd.conf,加入下面的两行:

max_clients=数字

max_per_ip=数字

举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:

max_clients=100

max_per_ip=5

改好了配制文件,不要忘记启动vsftp服务器。

补充五:如何限制下载的速度?

anon_max_rate=数字 注:这是匿名的下载速度

local_max_rate=数字 注:这是vsFTP服务器上普通用户的下载速度

注:这个数字的单位是字节,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024x80=81920

所以我们要在vsftpd.conf中加入下面的两行

anon_max_rate=81920

local_max_rate=81920

不要忘记重启vsftpd服务

补充六:我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区??

可以,应该如下操作!

首先要把ftp这个用户删除

#userdel -r ftp

会有错误信息,不过不用理,这是正常的。

然后我们再把这个用户添加上,比如我想为帐号ftp的家目录设置在/mnt/LinG/ftp,我们就可以如下操作

[root@linuxsir001 root]# mkdir /mnt/LinG

[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp

仅仅是这样做还不行,因为这样还是不能让匿名用户找到它的家目录,所以我们必须改变/mnt/LinG/ftp这个目录的权限。

[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/

[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/

补充七:如何定制欢迎信息,也就是我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。

实现这个并不难,我们可以查看vsftpd.cof文件中,是否有这行。

dirmessage_enable=YES

如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。

然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:

欢迎您来到LinuxSir FTP!

在这里,您会得到最真诚的帮助;

如果有什么问题和建议,请来信,多谢。

我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。

然后我们把.message这个文件复制到各个用户的家目录中。比如我的FTP的一个用户是beinan,这个用户所在的家目录是/home/beinan

我们就要把.message放在/home/beinan这个目录下。如果系统用户ftp, 他的目录就是/var/ftp这个目录,这个是默认的,当匿名用户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把. message放在/var/ftp目录中。其它的用户,也无非就是类似的操作。

补充八:如何实现虚拟路径?

比如:

/home/a 映射为ftp://localhost/a

/home/b/c 则为ftp://localhost/c

其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。

#mount --bind [原有的目录] [新目录]

比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作

我们要先在/var/ftp目录中建一个目录

#mkdir /var/ftp/WinSoft

然后执行mount命令

#mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft

这样就OK了。

补充九:如何上匿名访问、上传,并支持下载和执行?

在默认的情况下,vsftp是不支持匿名用户的访问的,所以我们要自己打开相应的选项。现在我针对这个问题,我们要打开如下的选项。

anonymous_enable=YES 注:允许匿名访问

anon_upload_enable=YES 注:允许上传

anon_mkdir_write_enable=YES 注:允许建立相应的目录

anon_umask=022 把上传到FTP的文件或者目录改变权限

当然打开这些选项还是不行的,我们还要让匿名写入文件的上一级目录有写入权,以我所做的 FTP为例,我所做的FTP的匿名访问的目录是/var/ftp,在vsFTPd中,/var/ftp这个目录是不能让匿名用户有写入权限的,这是为了安 全考虑,所以我们必须自己在/var/ftp目录中建一个目录,让这个目录有写入权。

比如:我在/var/ftp目录建一个upload目录,然后把它的权限设置成777,这样匿名用户就能写入了。

#mkdir /var/ftp/upload

#chmod 777 /var/ftp/upload

改了一系列的文件,不要忘记重启vsFTPd服务器

我是用standalone模式的,当然用下面的方法

[root@linuxsir001 root]# service vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器

[root@linuxsir001 root]# service xinetd restart

停止 xinetd: [ 确定 ]

启动 xinetd: [ 确定 ]

[root@linuxsir001 root]# ]

补充十:通过pam认证方式,添加虚拟用户

通过pam认证,用db_load添加用户,是真正的虚拟用户。现在我们简单的介绍一下,通过以后的学习,我们再深入补充:

1。在/etc/pam.d/目录中创建一个文件ftp

[root@linuxsir001 root]# touch /etc/pam.d/ftp

2。在/etc/pam.d/ftp里面加上如下的两行

auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

3。创建一系统的用户名用密码的文件logins.txt

[root@linuxsir001 root]# touch logins.txt

在logins.txt文件中,输入如下的内容。这个内容您可以自己来定。比如我下面的。其 实linuxsir007是FTP的虚拟用户名,123456是linuxsir007的密码;linuxsir008是虚拟用户名,234567是 linuxsir008的密码,以此类推,您想加入几个就是几个;下面是我添加的FTP的虚拟用户名和密码。

linuxsir007

123456

linuxsir008

234567

linuxsir009

567890

linuxsir010

678901

linuxsir011

789012

4。创建一个真实的用户名linuxsir006,这个linuxsir006的用户,所在的家目录由您来定。我在这里不多说了。我是按系统默认的来添加的。

[root@linuxsir001 root]# useradd linuxsir006

5。把/etc/hosts复制到/home/linuxsir006,并改变它的属主

[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts

[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts

6。通过db_load来创建虚拟用户的库文件。我们在前面建的logins.txt文件,我是放在了/root用户目录下。所以咱们得把目录切换到/root目录来创建虚拟用户的库文件。

[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

7。更改vsftpd.conf文件,加入如下的几行

pam_service_name=ftp

guest_enable=YES

guest_username=linuxsir006

anon_world_readable_only=NO

8。重启vsFTPd服务器;改了一系列的文件,不要忘记重启vsFTPd服务器

我是用standalone模式的,当然用下面的方法

[root@linuxsir001 root]# service vsftpd restart

关闭 vsftpd: [ 确定 ]

为 vsftpd 启动 vsftpd: [ 确定 ]

[root@linuxsir001 root]#

如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器

[root@linuxsir001 root]# service xinetd restart

停止 xinetd: [ 确定 ]

启动 xinetd: [ 确定 ]

[root@linuxsir001 root]#

9。如果您想让用户登入FTP时,登入成功的相应的信息,请把您制作的.message复制到您的用户的家目录中,这方面的请参考前面的补充。

10。测试:

[root@linuxsir001 root]# ftp 192.168.0.1

Connected to 192.168.0.1.

220 (vsFTPd 1.1.3)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.0.1:root): linuxsir007

331 Please specify the password.

Password:

230-欢迎光临LinuxSir自由FTP

230-在这里,您将得到最真诚的帮助!

230-本站限度为30KB!

230-每个IP限四个线程

230-请大家遵守FTP的有关规定。

230-多谢合作!

230-

230-LinuxSir管理部

230 Login successful. Have fun.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (192,168,0,1,85,171)

150 Here comes the directory listing.

-rw-r--r-- 1 ftp ftp 174 Jun 01 12:59 hosts

drwxr-xr-x 3 ftp ftp 4096 Jun 01 13:29 linuxsir008

drwxr-xr-x 2 ftp ftp 4096 Jun 01 13:24 sun

226 Directory send OK.

ftp>

补充十一:如何把Redhat 9.0中系统默认安装的vsftpd-1.1.3-8.i386.rpm,系统默认vsFTPd是用standalone启动方式 ,改为xinetd启动方式 ?

如果是用源码包安装的,安装后就是xinetd模式,如果是用RPM包安装的,在Redhat 9.0中,应该用下面的方法来解决。

1.在/etc/xinetd.d/目录中创建一个文件vsftpd

[root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd

/etc/xinetd.d/vsftpd内容如下:

service ftp

{

socket_type = stream

wait = no

user = root

server = /usr/sbin/vsftpd

# server_args =

# log_on_success += DURATION USERID

# log_on_failure += USERID

nice = 10

disable = no

}

2。复制vsftpd.conf到/etc/目录下,因为xinetd对vsFTPd配制文 件应该在/etc目录下,所以我们就必须把这个文件复制到/etc目录下,否则会出现系统中local用户无法登入,也就是说,不复制这个文件会出现 ftp非匿名用户无法访问,只能用匿名用户访问。

[root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf

3。更改配制文件/etc/vsftpd.conf,把如下的项注掉:

也就是把

listen=YES

改为

#listen=YES

或者是把这行删除也行。

4。把/etc/init.d/vsftpd这个文件删除。其实最好的备份到别处,因为我们有时实验来实验去,可能还会转到standalone模式启动。我就直接移动到别的目录,比如是/root下面的backup目录。

[root@linuxsir001 root]#mkdir /root/backup

[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup

5。运行ntsysv,把vsftpd的服务取消

[root@linuxsir001 root]#ntsysv

[ ] vsftpd

6。重启xinetd服务

[root@linuxsir001 root]# service xinetd restart

REDHAT 8.0 初始 VSFTPD 设置指南

REDHAT 8.0 初始 VSFTPD 设置指南

REDHAT 8 改用了VSFTPD作为默认的FTPD服务器

vsftpd相关文档:

/etc/vsftpd.ftpusers 这里面列出禁止登陆的用户名单

/etc/vsftpd.user_list 当配置文件中定义userlist_deny=NO时 这里面列出禁止登陆的用户名单 (默认)

当配置文件中定义userlist_deny=YES时这里面列出容许登陆的用户名单

/etc/vsftpd.conf vsftpd的基本配置文件

另外因为vsftpd需要由xinetd来引导启动,单独运行vsftpd时会提示:

500 OOPS:vsftpd: does not run standalnoe, must be started from inetd

这里所说的inetd在redhat中已用xinetd替代了。

所以在修改配置文件后,需要重新启动FTP服务时,需要这样做:

xinetd -restart

vsftpd与xinetd相关的文件:

/etc/xinetd.conf xinetd的基本配置文件

/etc/xinetd.d/vsftpd xinetd引导vsftpd的配置文件(是否自动启动的选择也在这里)

执行文件在这个位置

/etc/sbin/vsftpd

/etc/sbin/xinetd

FAQ1:启动时如何自动运行vsftpd?

ANS: 修改/etc/xinetd.d/vsftpd中 disable = no ;

FAQ2: 如何配置以容许root用户远程登陆进来?

ANS: 修改/etc/vsftpd.user_list和/etc/vsftpd.ftpusers

将root一栏删除或在前头加"#"注释;

FAQ3: 如何容许anonymous匿名用户登陆?

ANS: 修改/etc/vsftpd.conf中: anonymous_enable = YES

redhat 9.0下的vsftp如何配

我是在台湾的一家网站上偶尔发现的,我把繁体字转变为简体字,那个网站说,没有得到作者同意,不能转载,呵呵,但我还是转载了,LINUX崇尚自由嘛

3.2 VSFTP—安全与效能兼备的ftp 服务器

3.2.1 VSFTP 概述

FTP,file transfer protocol,这是档案传输的通讯协议,也是一般最常用来传送档案的方式。读者在使用RedHat9 的时候,可能会感受到ftp server 有一些改变:第一,就是ftp server 只剩下vsftp,原有的wuftp 等都没放入﹔第二,就是vsftp 从XINETD 中独立出来,并将设定档从/etc/vsftpd.conf 之中移到/etc/vsftpd/vsftpd.conf。

为什么做这样的改变?可以想见的是vsftp 已有独立运作的能力,不需要XINETD 来做更进一步的管控,并且类似sendmail、httpd、ssh、samba 等,将设定文件的放入/etc 下独立的目录。

FTP 分为两类,一种为PORT FTP,也就是一般的FTP﹔另一类是PASVFTP,分述如下: PORT FTP

这是一般形式的FTP,首先会建立控制频道,默认值是port 21,也就是跟

port 21 建立联机,并透过此联机下达指令。第二,由FTP server 端会建立数据

传输频道,默认值为20,也就是跟port 20 建立联机,并透过port 20 作数据的

传输。

PASV FTP

跟PORT FTP 类似,首先会建立控制频道,默认值是port 21,也就是跟

port 21 建立联机,并透过此联机下达指令。第二,会由client 端做出数据传输

的请求,包括数据传输port 的数字。

这两者的差异为何?PORT FTP 当中的数据传输port 是由FTP server 指定,

而PASV FTP 的数据传输port 是由FTP client 决定。通常我们使用PASV FTP,

是在有防火墙的环境之下,透过client 与server 的沟通,决定数据传输的port。

3.2.2 范例

3.2.1. 直接启动VSFTP 服务

这个范例是套用RedHat 的预设范例,直接启动vsftp。

[root@relay vsftpd]# /sbin/service vsftpd start

Starting vsftpd for vsftpd: OK ]

3.2.2. 更换port 提供服务:将预设的port 21 更换为2121

为了安全,或是以port 来区隔不同的ftp 服务,我们可能会将ftp port 改为

21 之外的port,那么,可参考以下步骤。

Step1. 修改/etc/vsftpd/vsftpd.conf

新增底下一行

listen_port=2121

Step2. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

3.2.3. 特定使用者peter、john 不得变更目录

使用者的预设目录为/home/username,若是我们不希望使用者在ftp 时能够

切换到上一层目录/home,则可参考以下步骤。

Step1. 修改/etc/vsftpd/vsftpd.conf

将底下三行

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list

改为

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/chroot_list

Step2. 新增一个档案: /etc/vsftpd/chroot_list

内容增加两行:

peter

john

Step3. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

若是peter 欲切换到根目录以外的目录,则会出现以下警告:

ftp> cd /home

550 Failed to change directory.

3.2.4. 取消anonymous 登入

若是读者的主机不希望使用者匿名登入,则可参考以下步骤。

Step1. 修改/etc/vsftpd/vsftpd.conf

anonymous_enable=YES

改为

anonymous_enable=NO

Step2. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

3.2.5. 安排欢迎话语

若是我们希望使用者在登入时,能够看到欢迎话语,可能包括对该主机的

说明,或是目录的介绍,可参考以下步骤。

首先确定在/etc/vsftpd/vsftpd.conf 当中是否有底下这一行

dirmessage_enable=YES

RedHat9 的默认值是有上面这行的。

接着,在各目录之中,新增名为.message 的档案,再这边假设有一个使用

者test1,且此使用者的根目录下有个目录名为abc,那首先我们在/home/test1

之下新增.message,内容如下:

Hello~ Welcome to the home directory

This is for test only...

接着,在/home/test1/abc 的目录下新增.message,内容如下:

Welcome to abc's directory

This is subdir...

那么,当使用者test1 登入时,会看到以下讯息:

230- Hello~ Welcome to the home directory

230-

230- This is for test only...

230-

若是切换到abc 的目录,则会出现以下讯息:

250- Welcome to abc's directory

250-

250- This is subdir ...

3.2.6. 对于每一个联机,以独立的process 来运作

一般启动vsftp 时,我们只会看到一个名为vsftpd 的process 在运作,但若

是读者希望每一个联机,都能以独立的process 来呈现,则可执行以下步骤。

Step1. 修改/etc/vsftpd/vsftpd.conf

新增底下一行

setproctitle_enable=YES

Step2. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

使用ps -ef 的指令,可以看告不同使用者联机的情形,如下图所示:

[root@home vsftpd]# ps -ef|grep ftp

root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER

nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244:

connected

test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1:

IDLE

nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244:

connected

test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2:

IDLE

root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp

[root@home vsftpd]#

3.2.7. 限制传输档案的速度:本机的使用者最高速度为200KBytes/s,匿名登入

者所能使用的最高速度为50KBytes/s

Step1. 修改/etc/vsftpd/vsftpd.conf

新增底下两行

anon_max_rate=50000

local_max_rate=200000

Step2. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

在这边速度的单位为Bytes/s,其中anon_max_rate 所限制的是匿名登入的

使用者,而local_max_rate 所限制的是本机的使用者。VSFTPD 对于速度的限

制,范围大概在80%到120%之间,也就是我们限制最高速度为100KBytes/s,

但实际的速度可能在80KBytes/s 到120KBytes/s 之间,当然,若是频宽不足

时,数值会低于此限制。

3.2.8. 针对不同的使用者限制不同的速度:假设test1 所能使用的最高速度为

250KBytes/s,test2 所能使用的最高速度为500KBytes/s。

Step1. 修改/etc/vsftpd/vsftpd.conf

新增底下一行

user_config_dir=/etc/vsftpd/userconf

Step2. 新增一个目录:/etc/vsftpd/userconf

mkdir /etc/vsftpd/userconf

Step3. 在/etc/vsftpd/userconf 之下新增一个名为test1 的档案

内容增加一行:

local_max_rate=250000

Step4. 在/etc/vsftpd/userconf 之下新增一个名为test2 的档案

内容增加一行:

local_max_rate=500000

Step5. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

3.2.9-1. 建置一个防火墙下的ftp server,使用PORT FTP mode:预设的ftp

port:21 以及ftp data port:20

启动VSFTPD 之后执行以下两行指令,只允许port 21 以及port 20 开放,

其它关闭。

iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT

iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

3.2.9-2. 建置一个防火墙下的ftp server,使用PORT FTP mode:ftp port:2121

以及ftp data port:2020

Step1. 执行以下两行指令,只允许port 2121 以及port 2020 开放,其它关闭。

iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT

iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

Step2. 修改/etc/vsftpd/vsftpd.conf

新增底下两行

listen_port=2121

ftp_data_port=2020

Step3. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

在这边要注意,8、9 两个例子中,ftp client(如cuteftp)的联机方式不能

够选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftp

server,但是执行ls、get 等等的指令时,便无法运作。

3.2.10. 建置一个防火墙下的ftp server,使用PASS FTP mode:ftp port:2121

以及ftp data port 从9981 到9986。

Step1. 执行以下两行指令,只允许port 2121 以及port 9981-9990 开放,其它关

闭。

iptables -A INPUT -p tcp -m multiport --dport

2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT

iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

Step2. 修改/etc/vsftpd/vsftpd.conf

新增底下四行

listen_port=2121

pasv_enable=YES

pasv_min_port=9981

pasv_max_port=9986

Step3. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

在这边要注意,在10 这个例子中,ftp client(如cuteftp)的联机方式必须

选择passive mode,否则无法建立数据的联机。也就是读者可以连上ftp

server,但是执行ls,get 等等的指令时,便无法运作。

8.2.11. 将vsftpd 与TCP_wrapper 结合

若是读者希望直接在/etc/hosts.allow 之中定义允许或是拒绝的来源地址,

可执行以下步骤。这是简易的防火墙设定。

Step1. 确定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的设定为YES,如下图所

示:

tcp_wrappers=YES

这是RedHat9 的默认值,基本上不需修改。

Step2. 重新启动vsftpd

[root@home vsftpd]# /sbin/service vsftpd restart

Shutting down vsftpd: OK ]

Starting vsftpd for vsftpd: OK ]

Step3. 设定/etc/hosts.allow,譬如提供111.22.33.4 以及10.1.1.1 到10.1.1.254 连

线,则可做下图之设定:

vsftpd : 111.22.33.4 10.1.1. : allow

ALL : ALL : DENY

8.2.12. 将vsftpd 并入XINETD

若是读者希望将vsftpd 并入XINETD 之中,也就是7.x 版的预设设定,那

么读者可以执行以下步骤。

Step1. 修改/etc/vsftpd/vsftpd.conf

listen=YES

改为

listen=NO

Step2. 新增一个档案: /etc/xinetd.d/vsftpd

内容如下:

service vsftpd

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/sbin/vsftpd

port = 21

log_on_success += PID HOST DURATION

log_on_failure += HOST

}

Step3. 重新启动xinetd

[root@home vsftpd]# /sbin/service xinetd restart

Stopping xinetd: OK ]

Starting xinetd: OK ]

3.2.3 设定档说明

在范例中,有些省略的设定可以在这边找到,譬如联机的总数、同一个位

址的联机数、显示档案拥有者的名称等等,希望读者细读后,可以做出最适合

自己的设定。

格式

vsftpd.conf 的内容非常单纯,每一行即为一项设定。若是空白行或是开头为#的一行,

将会被忽略。内容的格式只有一种,如下所示

option=value

要注意的是,等号两边不能加空白,不然是不正确的设定。

===ascii 设定=====================

ascii_download_enable

管控是否可用ASCII 模式下载。默认值为NO。

ascii_upload_enable

管控是否可用ASCII 模式上传。默认值为NO。

===个别使用者设定===================

chroot_list_enable

如果启动这项功能,则所有的本机使用者登入均可进到根目录之外的数据夹,除了列

在/etc/vsftpd.chroot_list 之中的使用者之外。默认值为NO。

userlist_enable

用法:YES/NO

若是启动此功能,则会读取/etc/vsftpd.user_list 当中的使用者名称。此项功能可以在询

问密码前就出现失败讯息,而不需要检验密码的程序。默认值为关闭。

userlist_deny

用法:YES/NO

这个选项只有在userlist_enable 启动时才会被检验。如果将这个选项设为YES,则在

/etc/vsftpd.user_list 中的使用者将无法登入﹔ 若设为NO , 则只有在

/etc/vsftpd.user_list 中的使用者才能登入。而且此项功能可以在询问密码前就出现错误

讯息,而不需要检验密码的程序。

user_config_dir

定义个别使用者设定文件所在的目录,例如定义user_config_dir=/etc/vsftpd/userconf,

且主机上有使用者test1,test2,那我们可以在user_config_dir 的目录新增文件名为

test1 以及test2。若是test1 登入,则会读取user_config_dir 下的test1 这个档案内的设

定。默认值为无。

===欢迎语设定=====================

dirmessage_enable

如果启动这个选项,使用者第一次进入一个目录时,会检查该目录下是否有.message

这个档案,若是有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对

该目录的说明。默认值为开启。

banner_file

当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值

为无。

ftpd_banner

这边可定义欢迎话语的字符串,相较于banner_file 是档案的形式,而ftpd_banner 是字

串的格式。预设为无。

===特殊安全设定====================

chroot_local_user

如果设定为YES,那么所有的本机的使用者都可以切换到根目录以外的数据夹。预设

值为NO。

hide_ids

如果启动这项功能,所有档案的拥有者与群组都为ftp,也就是使用者登入使用ls -al

之类的指令,所看到的档案拥有者跟群组均为ftp。默认值为关闭。

ls_recurse_enable

若是启动此功能,则允许登入者使用ls -R 这个指令。默认值为NO。

write_enable

用法:YES/NO

这个选项可以控制FTP 的指令是否允许更改file system,譬如STOR、DELE、

RNFR、RNTO、MKD、RMD、APPE 以及SITE。预设是关闭。

setproctitle_enable

用法:YES/NO

启动这项功能,vsftpd 会将所有联机的状况已不同的process 呈现出来,换句话说,使

用ps -ef 这类的指令就可以看到联机的状态。默认值为关闭。

tcp_wrappers

用法:YES/NO

如果启动,则会将vsftpd 与tcp wrapper 结合,也就是可以在/etc/hosts.allow 与

/etc/hosts.deny 中定义可联机或是拒绝的来源地址。

pam_service_name

这边定义PAM 所使用的名称,预设为vsftpd。

secure_chroot_dir

这个选项必须指定一个空的数据夹且任何登入者都不能有写入的权限,当vsftpd 不需

要file system 的权限时,就会将使用者限制在此数据夹中。默认值为/usr/share/empty

===纪录文件设定=====================

xferlog_enable

用法:YES/NO

如果启动,上传与下载的信息将被完整纪录在底下xferlog_file 所定义的档案中。预设

为开启。

xferlog_file

这个选项可设定纪录文件所在的位置,默认值为/var/log/vsftpd.log。

xferlog_std_format

如果启动,则纪录文件将会写为xferlog 的标准格式,如同wu-ftpd 一般。默认值为关

闭。

===逾时设定======================

accept_timeout

接受建立联机的逾时设定,单位为秒。默认值为60。

connect_timeout

响应PORT 方式的数据联机的逾时设定,单位为秒。默认值为60。

data_connection_timeout

建立数据联机的逾时设定。默认值为300 秒。

idle_session_timeout

发呆的逾时设定,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线,

单位为秒。默认值为300。

===速率限制======================

anon_max_rate

匿名登入所能使用的最大传输速度,单位为每秒多少bytes,0 表示不限速度。默认值

为0。

local_max_rate

本机使用者所能使用的最大传输速度,单位为每秒多少bytes,0 表示不限速度。预设

值为0。

===新增档案权限设定==================

anon_umask

匿名登入者新增档案时的umask 数值。默认值为077。

file_open_mode

上传档案的权限,与chmod 所使用的数值相同。默认值为0666。

local_umask

本机登入者新增档案时的umask 数值。默认值为077。

===port 设定======================

connect_from_port_20

用法:YES/NO

若设为YES,则强迫ftp-data 的数据传送使用port 20。默认值为YES。

ftp_data_port

设定ftp 数据联机所使用的port。默认值为20。

listen_port

FTP server 所使用的port。默认值为21。

pasv_max_port

建立资料联机所可以使用port 范围的上界,0 表示任意。默认值为0。

pasv_min_port

建立资料联机所可以使用port 范围的下界,0 表示任意。默认值为0。

===其它========================

anon_root

使用匿名登入时,所登入的目录。默认值为无。

local_enable

用法:YES/NO

启动此功能则允许本机使用者登入。默认值为YES。

local_root

本机使用者登入时,将被更换到定义的目录下。默认值为无。

text_userdb_names

用法:YES/NO

当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的

UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。

默认值为NO。

pasv_enable

若是设为NO,则不允许使用PASV 的模式建立数据的联机。默认值为开启。

===更换档案所有权===================

chown_uploads

用法:YES/NO

若是启动,所有匿名上传数据的拥有者将被更换为chown_username 当中所设定的使

用者。这样的选项对于安全及管理,是很有用的。默认值为NO。

chown_username

这里可以定义当匿名登入者上传档案时,该档案的拥有者将被置换的使用者名称。预

设值为root。

===guest 设定=====================

guest_enable

用法:YES/NO

若是启动这项功能,所有的非匿名登入者都视为guest。默认值为关闭。

guest_username

这里将定义guest 的使用者名称。默认值为ftp。

===anonymous 设定==================

anonymous_enable

用法:YES/NO

管控使否允许匿名登入,YES 为允许匿名登入,NO 为不允许。默认值为YES。

no_anon_password

若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。

anon_mkdir_write_enable

用法:YES/NO

如果设为YES,匿名登入者会被允许新增目录,当然,匿名使用者必须要有对上层目

录的写入权。默认值为NO。

anon_other_write_enable

用法:YES/NO

如果设为YES,匿名登入者会被允许更多于上传与建立目录之外的权限,譬如删除或

是更名。默认值为NO。

anon_upload_enable

用法:YES/NO

如果设为YES,匿名登入者会被允许上传目录的权限,当然,匿名使用者必须要有对

上层目录的写入权。默认值为NO。

anon_world_readable_only

用法:YES/NO

如果设为YES,匿名登入者会被允许下载可阅读的档案。默认值为YES。

ftp_username

定义匿名登入的使用者名称。默认值为ftp。

deny_email_enable

若是启动这项功能,则必须提供一个档案/etc/vsftpd.banner_emails,内容为email

address。若是使用匿名登入,则会要求输入email address,若输入的email address 在

此档案内,则不允许联机。默认值为NO。

===Standalone 选项==================

listen

用法:YES/NO

若是启动,则vsftpd 将会以独立运作的方式执行,若是vsftpd 独立执行,如RedHat9

的默认值,则必须启动﹔若是vsftpd 包含在xinetd 之中,则必须关闭此功能,如

RedHat8。在RedHat9 的默认值为YES。

listen_address

若是vsftpd 使用standalone 的模式,可使用这个参数定义使用哪个IP address 提供这

项服务,若是主机上只有定义一个IP address,则此选项不需使用,若是有多个IP

address,可定义在哪个IP address 上提供ftp 服务。若是不设定,则所有的IP address

均会提供此服务。默认值为无。

max_clients

若是vsftpd 使用standalone 的模式,可使用这个参数定义最大的总联机数。超过这个

数目将会拒绝联机,0 表示不限。默认值为0。

max_per_ip

若是vsftpd 使用standalone 的模式,可使用这个参数定义每个ip address 所可以联机

的数目。超过这个数目将会拒绝联机,0 表示不限。默认值为0。

=============================

3.2.4 FTP 数字代码的意义

110 重新启动标记应答。

120 服务在多久时间内ready。

125 数据链路埠开启,准备传送。

150 文件状态正常,开启数据连接端口。

200 命令执行成功。

202 命令执行失败。

211 系统状态或是系统求助响应。

212 目录的状态。

213 文件的状态。

214 求助的讯息。

215 名称系统类型。

220 新的联机服务ready。

221 服务的控制连接埠关闭,可以注销。

225 数据连结开启,但无传输动作。

226 关闭数据连接端口,请求的文件操作成功。

227 进入passive mode。

230 使用者登入。

250 请求的文件操作完成。

257 显示目前的路径名称。

331 用户名称正确,需要密码。

332 登入时需要账号信息。

350 请求的操作需要进一部的命令。

421 无法提供服务,关闭控制连结。

425 无法开启数据链路。

426 关闭联机,终止传输。

450 请求的操作未执行。

451 命令终止:有本地的错误。

452 未执行命令:磁盘空间不足。

500 格式错误,无法识别命令。

501 参数语法错误。

502 命令执行失败。

503 命令顺序错误。

504 命令所接的参数不正确。

530 未登入。

532 储存文件需要账户登入。

550 未执行请求的操作。

551 请求的命令终止,类型未知。

552 请求的文件终止,储存位溢出。

553 未执行请求的的命令,名称不正确。

__________________

架设FTP服务器

架设FTP服务器 来源:天津热线[转帖] 在Internet上FTP(File Transfer

Protocol,文件传输协议)扮演着十分重要的角色。我们可以通过FTP与远程机器传输 交换文件数据,下载或上传最新的软件。基本的FTP服务器根据服务的对象可以分为两种,一种是Unix(当然也包括Linux)系统基本的FTP服务器, 使用者是服务器上合法的用户;而另一种是匿名FTP服务器(Anonmous

FTP Service),任何人只要使用anonmous或ftp帐号并提供电子邮件地址作为口令就可以使用FTP服务。

对于系统中合法的用户,其登录目录为他们的home目录;如果是匿名用户登录的话,登录后会到/home/ftp这个目录中,该除非我们在该目录中存放下载文件,否则匿名FTP使用者将不能做任何事情。在本章,我们将详细地介绍FTP服务器的安装、配置以及服务器的维护。

安装FTP服务器 在Linux的发行套件中都有FTP服务器的软件包wu-ftpd(Washington University FTP

server),这是目前最流行的一种免费FTP服务器软件,目前绝大多数的FTP站点都是由wu-ftpd来架设的,而wu-ftp如此流行的原因是因为它强大的功能,例如:

·可控制不同网域的机器对 FTP服务器的存取权限和访问时段。

·使用者在下载文件时,可自动对文件进行压缩或解压缩工作。

·可以记录文件上传或下载的过程。

·可以限制最高访问人数,以维持系统的最佳运行效率。

·可显示相关的信息,以便用户了解当前的接收状态。

·可暂时关闭FTP服务器,以便系统维护。

在安装系统时如果选择了wu-ftpd软件包,就会自动安装。但如果我们想要使用最新的FTP软件包的话,可以到全世界各大FTP站点下载。目前最新的版本是wu-ftpd-2.5.0,得到了wu-ftpd-2.5.0.tar.gz后,请按照我们下面的步骤进行安装。

1.将wu-ftpd-2.5.0.tar.gz复制到临时目录中并解压缩:

# tar zxvf wu-ftpd-2.5.0.tar.gz

进入解压缩产生的目录wu-ftpd-2.5.0中,在开始安装之前请仔细阅读里面的README、INSTALL等文件,以便了解安装需要注意的事项。

2.执行命令“bulid lnx”,编译wu-ftpd-2.5.0的源程序。

# ./bulid lnx

这条命令将编译Linux系统使用wu-ftpd所需的服务程序,如果一切正常的话,将产生如下几个可执行文件:

ftpd FTP服务程序

ftpshut 关闭FTP服务的程序

ftpcount 显示FTP 服务器目前连接的人数的程序

ftpwho 查看目前使用者

3.执行安装命令“make install”,将编译生成的可执行文件和man pages安装到系统中。

# make install

4. 修改/etc/inetd.conf文件,加入如下一行:

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a

如果系统中以前安装有wu-ftpd的话,这一步可以略去不做,安装安装程序会自动更新/etc/inetd.conf文件有关ftp的记录项。

5.如果想为FTP用户提供压缩解压缩的功能,我们还需要将tar、gzip、compress、cpio、sh等可执行文件复制到/home/ftp/bin目录下。此外,还需要将ls命令复制到/home/ftp/bin中,以便使用者查看目录。

因为我们复制到/home/ftp/bin目录下的程序有可能是动态链接的,所以它们运行时 还需要共享函数库,我们要将他们运行时需要用到的共享库复制到/home/frp/lib目录中。检查这些命令所需要的共享库可以使用“ldd”命令。例 如对于“ls”命令,我们使用“ldd

/usr/bin/ls”命令就可以得到如下的输出:

# ldd /usr/bin/ls

libc.so.6 = > /lib/libc.so.6 ( 0x40003000 )

/lib/ld-linux.so.2 = > /lib/ld-linux.so.2 ( 0x00000000 )

这样,我们就需要将/lib/libc.so.6和/lib/ld-linux.so.2复制到/home/ftp/lib目录中。其它命令所需的共享库您也可以参照上面的方法找出并复制到/home/etc/lib目录中。

接下来复制/etc/passwd和/etc/group文件到/home/ftp/etc,并删除其中任何个人用户和个人用户组的信息。基本上应该按照下面的例子修改:

#/home/ftp/etc/passwd文件

root:*:0:0:::

bin:*:1:1:::

operator:*:11:0:::

nobody:*:99:99:::

ftp:*:1000:1000:::

# /home/ftp/etc/group文件

root::0:

bin::1:

daemon::2:

sys::3:

adm::4:

ftp::1000:

6.为了确保提供FTP服务不会给我们的系统带来安全隐患,我们还需要采取以下措施:

# chmod 0555 /home/ftp

# chmod 0111 /home/ftp/bin/*

# chmod 0555 /home/ftp/lib/*

# chmid 0444 /home/ftp/etc/*

配置FTP服务器在安装好wu-ftpd之后,我们还需要定制FTP服务器,使之实现我们上 一节中提到的各种功能。为了使我们的FTP服务器实现这些功能,我们需要修改ftpusers、ftpaccess、ftpconversions、 xferlog、ftpgroups、ftphosts等系统配置文件。下面我们就来看一看这些文件的功能以及配置它们的方法。

各配置文件的功能在开始配置FTP服务器的配置文件之前,我们先来简要地介绍一下各个文件的功能。在开包后的wu-ftpd-2.5.0目录中的doc/examples目录下,我们可以找到以下这些文件的示例。

/etc/ftpaccess

一般情况下,我们最为重视的配置文件应该是“ftpaccess”,因为该文件决定着我们FTP服务器是否能够正常工作。此外,我们还可以在这个系统参数文件中设置多项有关使用权限记录,以及与信息有关的文件名称及路径。

/etc/ftpusers 决定哪些人不可以执行ftp命令来传输文件,这些帐号通常是root、bin、news以及guest等有特殊用途的帐户。

/etc/ftpconversions 配置该文件可以实现用户在通过FTP传输文件的同时,对文件进行压缩打包等处理。

/etc/ftphosts 决定哪些网络中的主机或某些用户不能访问FTP服务器的文件。

/etc/ftpgroups 该文件不是决定哪些用户组不能够访问FTP服务器,它只有在使用SITE GROUP功能时才有用。

/var/log/xferlog FTP日志文件。该文件将记录使用匿名帐户的用户所上传或下载的过的文件,该文件只是记录FTP信息,我们不需要对它进行配置。

大致了解了各个设置文件的功能以后,我们就来为您介绍这些文件中的内容以及学习如何配置。

配置/etc/ftpaccess文件我们前面介绍的wu-ftpd的大多数功能都是在 ftpaccess文件中设置的。我们无须自己编写该文件,doc/examples/ftpaccess.heavy是一个稍微修改一下就能适用于大多 数FTP服务器的例子,所以下面我们将以这个示例文件为例为您介绍ftpaccess文件的配置。

# wu-ftpd-2.5.0的/etc/ftpaccess示例文件ftpaccess.heavy

#

# 设置用户登录FTP服务器时,允许输错密码的次数。

# loginfails 2表示允许用户输错两次密码,如果两次都输入

# 错误的话,FTP服务器打印“repeated login failures”的信息

# 并退出FTP会话过程。如不设置,则缺省值是5。

#

loginfails 2

#

# class是用来定义用户级别的命令,它的格式为

# class <class> <typelist> <addrglob> [ <addrglob>….]

# FTP服务器上有三种类型的使用者,分别是“real”——表示

# 在该FTP服务器上有合法帐号的用户;“guest”——表示另行

# 定义的某些使用组的使用者;“anonymous”——权限最低的匿名

# 用户。有了这三种使用者以后,在ftpaccess文件中就可以根据不

# 同的使用者设置不同的存取权限。但是,只有三种定义一般是不够

# 的,我们可以根据class的语法定义更多的控制命令。例如:

# class remote real,guest,anonymous *

# 这条class语句定义了remote中有三种不同的使用者,“*”表示网络

# 上所有的计算机,也就是说任何人都可以访问FTP服务器,一般的匿名

# FTP站点都应该有这一项。如果我们希望某台主机或网域中的机器具有

# 特殊的权限,那么我们可以设置如下的class:

# class local real,guest,anonymous localhost

# 这表示本地主机的类别被定义为local,当我们从主机连上FTP服务器上

# 时,就可以用较为特别的权限。

# 下面是ftpaccess.heavy文件指定的两个class,它们的意思是来自*.domain

# 和本地主机被归为local组,而其它的主机则是remote组。

#

class local real,guest,anonymous *.domain 0.0.0.0

class remote real,guest,anonymous *

#

# 我们可以使用limit命令设置某个时间段的FTP用户数量,如果超出了

# 规定的人数,则打印/etc/msgs/msgs.toomany文件并拒绝用户登录。例如:

# limit local 20 Any /etc/msgs/msgs.roomany

# 就是限制local这个组的机器同时间内最多允许20人连接FTP服务器,如果

# 超员,则打印/etc/msgs/msgs.toomany文件,显示当前在线人数太多。ftp的

# 说明文件都可以包含变量,在说明文件中可以使用“变量替换(magic

# sookies)”以指定的字符串代替某个变量:

# %T 本地时间

# %F CWD所在分区的剩余空间

# %C 当前工作目录

# %E 定义在ftpaccess文件中维护者的电子邮件地址

# %R 远端主机名称

# %L 本地主机名称

# %U 登录时所给的用户名称

# %M 该class允许的最大使用者数目

# %N 该class目前的使用者数目

#

# 我们可以利用这些变量编辑一个显示信息非常完y

#

# readme命令的作用是指定用户登录或进行其它操作(如更换目录)时

# FTP服务器提示用户阅读的文件。

#

readme README* login

readme README* cwd=*

#

# messages命令主要是设置一些FTP的显示信息,如下面的“message

# /welcome.msg login”就是代表用户登录时,将显示/home/ftp目录下的

# welcome.msg作为进站画面。我们要提醒您的是FTP服务器都是以

# /home/ftp这个目录作为根目录的,所以要写成/welcome.msg。而

# “message .message cwd=*”则是定义用户在更换目录时将显示在目录

# 下的文件。

#

message /welcome.msg login

message .message cwd=*

#

# 下面定义的允许从local和remote登录的机器在传输文件时,可执行compress

# 压缩文件或使用tar命令将多个文件打包成一个文件。

#

compress yes local remote

tar yes local remote

#

# 是否允许通过SITE GROUP和SITE GPASS命令适用秘密文件

# allow use of private file for SITE GROUP and SITE GPASS?

#

private yes

#

# 设置密码检查的规则。FTP服务器将要求匿名用户使用其电子邮件

# 地址作为密码,可是有人还是会胡乱输入,所以我们可以使用passwd-check

# 来查看用户是否输入一个类似于user@hostname的E-mail地址:none表

# 示不进行密码检查; trivial表示密码必须含有“@”;而使用rfc822时,

# 表示密码必须满足rfc822规定的地址。当密码不合要求时,warn将给予

# 警告,但依然允许他们登录,而enforce则表示警告并使用户退出。

#

# passwd-check <none|trivial|rfc822> [<enforce|warn>]

passwd-check rfc822 warn

#

# log commands <typelist>记录<typelist>类型(可以是anonymous、

# guest和real)用户使用的命令。Log transfer <typelist> <directions>

# 记录<typelist>类型的用户做的<directions>(可以为inbound传进服务器、

# outbound传出服务器)方向的文件传输。

#

log commands real

log transfers anonymous,real inbound,outbound

#

# 如果shutdown<path>指定的文件存在,FTP服务器将定期检查<path>文件

# 以查看服务器是否预定关闭。<path>文件的格式为:

# <year> <month> <day> <hour> <minute> <deny_offset> <disc_offset> <text>

# <deny_offset>和<disc_offset>的意思是在服务器关闭前多长时间新的登录

# 请求和现存的连接将被拒绝和终止。<text>是对拒绝连接的用户的一段信息。

# 如:

# 1999 10 25 00:00 0010 0005

# System shutdown at %s

# 表示1999年10月25日00:00关闭FTP服务器,10分钟以前拒绝连接,5分钟

# 以前中断正在连接的FTP服务。外部程序ftpshut可以用来产生<path>文件,

# 例如上面的文件可以通过如下的命令来产生:

# ftpshut 0000

#

shutdown /etc/shutmsg

#

# 设置用户在FTP服务器上可以使用的命令,我们可以看到下面所有的

# 命令后面都是“no”,也就是说guest用户不能使用delete、overwrite、

# rename命令,而anonymous则都不能使用。只有real用户可以使用这些命令。

# all the following default to "yes" for everybody

#

delete no guest,anonymous # delete permission?

overwrite no guest,anonymous # overwrite permission?

rename no guest,anonymous # rename permission?

chmod no anonymous # chmod permission?

umask no anonymous # umask permission?

#

# 设置用户上传文件的目录。下面例子中/var/ftp目录下的/incoming目录可以

# 用来上传文件,上传文件的属主是root,组别是daemon,读取权限是0600,

# dirs表示在/incoming目录中可以创建子目录。

# specify the upload directory information

#

upload /var/ftp * no nobody nogroup 0000 nodirs

upload /var/ftp /bin no

upload /var/ftp /etc no

upload /var/ftp /incoming yes root daemon 0600 dirs

#

# 为/incoming目录设置路径别名为inc:,用户在任何时候只要使用命令

# “cd inc:”就可以到达/incoming目录。

# directory aliases... [note, the ":" is not required]

#

alias inc: /incoming

# cdpath主要定义在改变目录时使用的搜索路径。如果我们定义:

# cdpath /incoming/test、cdpath /pub、cdpath /,那么用户在任意路径

# 随便cd到一个目录,比如cd test,那么将依次搜寻:

# /incoming/test

# /pub/test

# /test

# 以寻找一个符合test目录的路径。

#

cdpath /incoming

cdpath /pub

cdpath /

#

# path-filter的功能是检查用户上传文件的文件名是否合法,如下面

# 第一条命令就是指定所有的匿名用户上传文件的文件名只能是以

# A-Z、a-z、0-9以及“._-”组成,而不能以一个“.”或是一个“-”开始。

# 如果文件名不合法,将显示/etc/pathmsg给该用户。

#

path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9_ .]*$ ^ . ^-

path-filter guest /etc/pathmsg ^[-A-Za-z0-9_ .]*$ ^ . ^-

#

# 设置guest用户

# specify which group of users will be treated as "guests".

#

guestgroup ftponly

#

# FTP服务器管理员的邮件地址

#

email user@hostname

以上是一些ftpaccess常用的设置,您也可以参考ftpaccess的man pagse来获得更详细的配置信息。

配置/etc/ftpusers和/etc/ftphosts文件通过ftpusers文 件,我们可以限制系统中有哪些用户不能使用ftp服务,ftphosts文件与之类似,所不同的是该文件中记录的是不能访问FTP服务器的主机。通常这样 做的目的都是出于系统安全的考虑。Wu-ftpd为我们准备有这两个文件的示例,我们可以在examples

目录中找到它们。下面是ftpusers文件设置的例子:

# 禁止使用FTP服务的用户

root

bin

boot

daemon

digital

field

gateway

guest

nobody

operator

ris

sccs

sys

uucp

限制这些用户使用FTP服务器主要是基于系统安全的考虑,避免权利过大的用户(如root、 ftpadm)登录FTP服务器和避免使用系统命令作为帐号(如shutdown、sync),以避免系统管理上的困惑。我们可以根据自己使用的需要,向 该文件中增加或删除用户并将它复制到/etc目录中。

如果我们要架设的是匿名FTP服务器,那么通常不需要设置ftphosts文件,对于其它类 型的FTP服务器可以参考examples/ftphosts文件的格式结合自己的情况加以修改,然后复制到/etc目录中即可。下面是 examples/ftphosts文件,该文件允许网络somehost.domain中的用户ftp访问FTP服务器 (somehost.domain可以是IP地址或域名)而禁止网络otherhost.domain和网络131.211.32.*中的用户fred使 用FTP服务。

#

# ftphosts文件配置示例,allow和deny的格式分别为:

# allow <username> <hostname or domain>

# deny <username> <hostname or domain>

#

# 以“#”开头的均为注释,空行将被忽略

#

allow ftp somehost.domain

deny fred otherhost.domain 131.211.32.*

配置/etc/ftpconversions文件

ftpconversions文件主要定义用户从FTP服务器中下载文件时对文件进行格式转 换的规则。例如压缩、解压缩、打包和开包等操作,这样用户就不必为.tar.gz、.tgz、.Z、.z之类的文件伤脑筋了。 Ftpconversions文件的格式初看上去很复杂,不过不用担心,/examples目录中也有该文件的例子,我们只要原封不动的将它复制到 /etc目录中就能满足我们的使用需要了。下面让我们来看看ftpconversions文件中各个记录项,有关各项的说明我们罗列在表14-1中:

#

# 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

表1 ftpconversions文件各项说明对照表

真实文件名目标文件名命令操作 <filename>.Z <filename> 传递前使用comprss –d命令压缩 <filename>.gz

<filename> 传递前使用gzip –d命令压缩 <filename> <filename>.Z 传递前使用compress 命令压缩

<filename> <filename>.gz 传递前使用gzip –9命令压缩 <filename> <filename>.tar 传递前使用tar

–cf命令打包 <filename> <filename>.tar.Z 传递前使用tar –cZf命令打包并压缩 <filename>

<filename>tar.gz 传递前使用tar –czf命令打包并压缩 <directory> <directory>.tar.Z 传递前使用tar

–cZf命令对目录打包并压缩 <directory> <directory>.tar.gz 传递前使用tar –czf命令对目录打包并压缩

Ftpconversions文件基本上把常用的压缩,打包命令都包括在内了,我们只要将它 复制到/etc目录中,以后只要有人访问我们的FTP服务器,FTP服务程序就会根据用户的需要执行压缩或打包的命令。例如,用户想下载目录Howto中 所有的文件,那么他不必使用mget命令,而只要使用get

Howto.tar.gz,这时wu-ftpd就会将该目录打包压缩并发送到用户的机器上 了。所以使用该文件可以完成压缩传递的数据量,减少传输时间等作用。此外ftpconversions文件中定义的可执行文件的位置/bin指的都是 /home/ftp/bin而不是Lnux

/目录下的bin,所以请检查/home/ftp/bin目录中有无上述命令,如果没有还需要将这些程序复制到该目录中。

截止到这里,匿名FTP服务器的架设工作基本上就完成了,我们可以用ftp命令连接自己的服务器,检查合法用户和匿名用户的连接情况以及各个目录的权限是否正确。之后就可以准备FTP服务的开张了。

FTP镜像站点的维护架设FTP服务器的目的是要在服务器上存放一些共享或自由软件让用户下载,然而各式各样的软件总是处在不断升级换代的过程中,为了能让用户经常光临我们的服务器,我们应该经常维护FTP服务器,使我们拥有最新版本的软件。

获得软件的方法之一是自己动手在各大FTP站点上搜寻下载,这种方法在我们所关注的软件数目 不多、软件更新速度不太快的情况下还可以应付。但是当要维护一个具有软件种类繁多,数量庞大的大型FTP服务器时,这样做就不但费时费力,而且容易出错, 因而也就不适合了。另一种投机的办法是使用一些镜像软件,如mirror、ftpmirror等等。有了它们,我们可以在对存放某些常用软件的FTP站点 的相应目录在本地建立镜像目录,这些软件可以运行在后台并定期对远程FTP站点进行定期检查,如果发现远程目录下的文件有所更新,则立即对本地目录中相应 的文件进行更新,而对远程目录中未作更新的文件在本地则不做任何处理,这样就避免了不必要的重复传输。

Mirror最早是由Lee

McLoughlin用Perl语言编写的一种perl脚本。最初,mirror只能运行在Unix系统上,但是从2.9版本以后,该软件也可以运行于Windows95和Windows

NT系统上。mirror的功能主要是在本地端主机与远程主机之间使用FTP通信协议,并复 制远程主机上的整个目录结构以及其中的内容。所以mirror在传输文件之前,会比较文件建立的时间和文件的大小,以避免拷贝不必要的文件。如果本地和远 程主机的目录中有相同文件名的文件则不读取,或指定读取文件名含有特殊字符串的文件等功能。除此之外,mirror还可以选择性的压缩以及分割文件,所以 mirror非常适合任何想通过FTP站传输大量文件的人使用。下面我们将介绍mirror的安装和使用。

mirror的安装因为mirror是用perl脚本编写的脚本文件,所以在安装 mirror之前,我们必须确保系统中已经安装有perl(perl命令通常位于/usr/bin目录下)。目前各种发行版本的Linux都随盘附有 perl程序的软件包,如果系统中没有安装的话,可以从光盘中安装,或直接去www.perl.com下载最新的perl软件。

安装好perl之后,就可以开始安装mirror了。目前最新的mirror的版本是mirror-2.9(需要4或更高版本的perl程序),我们可以去下列站点下载:

ftp://sunsite.org.uk/packages/mirror/mirror.tar.gz ;(http方式)

ftp://sunsite.org.uk/packages/mirror/mirror.zip(http方式,for Windows的mirror)

我们可以到下面的站点查看是否有更新的版本出现:

http://sunsite.org.uk/packages/mirror/

下面是我们列出的一些mirror的镜像站点,您可以根据您的情况选择离您内较近,下载速度较快的站点来下载:

USA ftp://ftp.cs.columbia.edu/archives/perl/mirror/

Poland ftp://giswitch.sggw.waw.pl/pub/unix/mirror/

Japan ftp://SunSITE.sut.ac.jp/pub/archives/packages/mirror/(http方式)

将下载的mirror-2.9.tar.gz复制到一个合适的目录,如/usr/local/lib然后解压缩:

# cp mirror-2.9.tar.gz /usr/local/lib

# cd /usr/local/lib

# tar zxvf mirror-2.9.tar.gz

开包以后,就会生成mirror/这个目录。因为mirror是一个脚本,所以不需要编译, 我们直接就可以拿来使用。Mirror其实是一个链接文件,它link到文件mirror.pl,在使用mirror之前,我们建议您最好将 mirror.pl文件中的“$extra_path”和“$big_temp”这两个变量所指定的路径该成符合您的系统需要,如:

$extra_path=/usr/local/bin:/usr/bin:/bin;/usr/ucb:/etc:/usr/etc/:/usr/local/etc’;

$big_temp=’/var/tmp’;

之后使用“ln”命令将mirror.pl这个perl脚本链接到/usr/local/bin目录中:

# ln –s /usr/local/lib/mirror/mirror.pl /usr/local/bin/mirror

这样mirror就安装完毕了。

mirror的使用调用mirror有两种方式:

# mirror [参数] -gsiteathname

# mirror [参数] [package-files]

第一种方法是复制远程主机上的一个目录到本地主机用户当前所在目录。第二中方式是由 mirror读取我们编辑的配置文件(package-files),根据我们在该文件中的设置复制远程主机的目录文件到我们设定的目录中。在我们下达 mirror命令的目录中如果有mirror的配置文件mirror.defailt存在的话,则执行mirror时会首先载入该文件中的内容为所有其它 的配置文件提供初始化设置,所以我们需要修改mirror.defaults文件的内容,一般需要修改以下几个地方:

hostname 本地主机名

local_dir 本地下载文件存放目录

remote_password 设置登录用的密码,通常使用完整的E-mail地址

虽然mirror有很多的命令行参数,但是它们中的大多数可能只会用到一两次。如果我们打算维护一个镜像站点,那么最好的做法是将所有的细节问题都记录在配置文件package

file中,然后再运行mirror读取该文件中的内容。我们最常用的参数可能是-n和-d。下面就来看看mirror的各种参数:

-d 允许以调试方式运行mirror。如果使用该参数超过一次,那么调试的等级就会递增(例如:-d –d )。目前支持的最大调试等级是四级。

-n 只是比较本地目录与远程目录的不同,不会进行任何文件传输。请将调试等级设为2级,这样我们就可以看到mirror工作的过程。

-g siteath

节点:路径。取得给定节点上path中的所有文件。在path的后面需要加上“/”,否则我们得到的只是该mirror目录的一份目录列表,而不是整个目录中的所有文件。

-p package

当使用多个package文件时。只选用给定的package。我们可以多次使用该选项,以使我们选定的packages都可以被mirrored,如果不使用该参数,那么将mirror载入所有的packages文件。

-R package

与-p参数类似,但将跳过所有的packages文件,直到它找到给定的package为止。如果我们启动mirror后,中途失败时,该选项就会非常有用,它将使mirror

从断点处继续开始mirror。

-F 使用临时dbm(数据库)文件以存放有关信息。如果我们要mirror一个很大的文件时,就需要使用这个参数。

-r 相当于-k recursive=false

-v 显示mirror的版本信息并退出。

-T 强制将本地镜像目录中所有文件的时间复位成与远程主机相同。一般只用于初始化以其它方式(如CD-ROM)获得文件的目录。

-Ufilename 将所有传输的文件记录到我们给定的文件名中。

-k key=value 覆盖任何默认的参数。

-m 相当于-k mode_copy=true。

-t 相当于-k text_mode=true。

-f 相当于-k force=true。

-s site 相当于-k site=site。

-u user 相当于-k remote_user=user,我们这时就可以提供一个进入远主机的密码。

-L 仅仅是打印一个精致的输入译本然后退出。

如果我们使用命令行的方式来mirror的话,则所有mirror回来的文件都将存放在我们当前所在的目录中。所以在执行mirror命令之前,我们一定要选择好合适的目录,再进行传输。举例来说,如果想将ftp://ftp.openunix.org/这个站点的

/pub/bluepoint/starpreview/这个目录中的文件全部mirror回来,那么我们可以先在/home/ftp/pub目录下建造一个bluepoint/starpreview/目录,然后进入该目录并执行:

# mirror –d –d –g ftp.openunix.org:/pub/bluepoint/starpreview/&

这样就可以将 ftp.openunix.org/pub/bluepoint/starpreview/目录中所有的文件都mirror回来了。要注意的是,在上面这 条命令中的starpreview后一定要有“/”,否则我们将得到ftp.openunix.org上的一个完整目录列表。

在多数情况下,我们都是使用package文件来执行mirror的。这样我们可以为我们要mirror的每一个FTP站点编辑一个package文件,然后根据需要使用不同的文件来mirror各个FTP站点,编辑package的方法如下:

1.在合适的位置,如/usr/local/lib/mirror建立一个专门用来存放package文件的目录:

# mkdir /usr/local/lib/mirror/pack(目录名可任选)

2.如果要mirror

ftp.openunix.org这个FTP站点下的/pub/linux/,那么我们可以在pack目录下创建一个open_linux的文件,而具体的内容可以参考下面的例子:

#

# 使用package指定mirror使用的配置文件为open_linux

package = open_linux

# 指定我们要mirror的FTP站点,用主机名或IP地址均可

site = ftp.openunix.org

# 指定登录身份,通常都是匿名登录,所以我们可以使用ftp或

# anonymous

remote_account = ftp

# 指定登录需要的密码,因为是匿名登录所以我们需要使用电子

# 邮件地址作为登录FTP服务器的密码

remote_password = user@somewhere.com

# 指定我们要mirroe的目录

remote_dir = /pub/linux

# 指定存放文件的目录

local_dir = /home/ftp/pub/linux/

# 指定文件传输的方式,以递归方式mirror该目录中的所有子目录

recursive = true

# 在文件传回本地之前,将文件压缩

compress_patt = true

以上就是一般的package文件的设置,如果想了解更多的内容的话,可以参考mirror的doc/

下的各种文档资料。设置好package文件之后,我们可以在/usr/local/lib/mirror目录中执行:

# mirror –d –d pack/open_linux &

这样mirror就可以在后台执行它的工作了。在我们首次执行mirror的时候,可能会花 很长的时间才能将FTP站点的各种文件都mirror到我们自己的服务器上来,但是完成之后之后,mirror以后只是读取两个站点之间不同的文件而已, 这样会节省我们很多的时间。在mirror可以正常运作之后,我们可以将它放到crontab中,然后由时钟守护进程自动定时为我们执行mirror操 作:

# crontab –e

15 3 * * 2,6 mirror –d –d /usr/local/lib/pack/open_linux

这表示“每星期二和星期六的03:15 执行mirror –d –d open_linux。这样就能保证我们的FTP服务器上始终都能有最新的软件了。

在MDK 9中FTP服务如何让root用户登录?  

我用一般用户可以登录,但是用root用户不能登录。我已经将/etc/ftpusers文件中的root给删除了!

wu-ftp禁止系统帐号登录有两处,除了/etc/ftpusers里面要去掉之外,还要在/etc/ftpaccess文件里修改。具体如下:

# Don't allow system accounts to log in over ftp

deny-uid %-99 %65534-

deny-gid %-99 %65534-

allow-uid ftp

allow-gid ftp

在后面加上这样两句:

allow-uid root

allow-gid root

重起xinetd服务,我相信你一点可以成功的。

内部局域网没有关系,但如果在外网,强烈建议不要这样做。

怎么用那么麻烦啊!!!!

/etc/vsftpd.ftpusers和/etc/vsftpd.user_list

里的root都给加上#就可以了!!!

这个问题我也想到过,不过我自己解决了,我用的是RH9

直接修改/etc/vsftpd.user_list

下面是我系统上被禁止登录的用户

# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers

# for users that are denied.

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

RedHat8.0 服务器配置指南-- vsftp  

RedHat带了wu-ftpd和vsftp两套ftp系统.我也使第一次接触vsftp, 根据man说vsftp的含义就是Very Security Ftp的意思,至于是否真的是非常安全,我不敢说.毕竟以前没有用过.因为应一个朋友的要求,所以简单的看了看vsftp的说明,发现还是很简单的,下面 就简要的说一下它的配置方法.

1.相关配置文件

/etc目录下的vsftpd.conf,vsftpd.ftpuser,vsftpd.user_list,/etc/xinetd.d/vsftpd

2.配置vsftp

主要是修改/etc/vsftpd.conf就可以了,相关参数如下:

anonymous_enable=YES 是否允许匿名ftp,如否则选择NO

local_enable=YES 是否允许本地用户登录

local_umask=022 默认的umask码

anon_upload_enable=YES 是否允许匿名ftp用户访问

anon_upload_enable=YES 是否允许匿名上传文件

anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利

dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件

xferlog_enable=YES 是否记录ftp传输过程

connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)

chown_upload=YES

chown_username=username 是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主

xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log

xferlog_std_format=YES 是否使用标准的ftp xferlog模式

idle_session_timeout=600 设置默认的断开不活跃session的时间

data_connection_timeout=120 设置数据传输超时时间

nopriv_user=ftpsecure 运行vsftpd需要的非特权系统用户默认是nobody

async_abor_enable=YES 是否允许运行特殊的ftp命令async ABOR.这里我翻译的不爽,原文如下:

When enabled, a special FTP command known as "async ABOR" will be enabled. Only ill advised FTP clients will use this feature.Addtionally, this feature is awkward to handle, so it is dis-abled by default. Unfortunately, some FTP clients will hang when cancelling a transfer unless this feature is available, so you may wish to enable it.

ascii_upload_enable=YES

ascii_download_enable=YES 是否使用ascii码方式上传和下载文件

ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息

deny_email_enable=YES

banned_email_file=/etc/vsftpd.banned_emails 是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list 是否将系统用户限止在自己的home目录下,如果选择了yes那么chroot_list_file=/etc/vsftpd.chroot_list中 列出的是不chroot的用户的列表

max_clients=Number 如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限止

message_file 设置访问一个目录时获得的目录信息文件的文件名,默认是.message

没发现有限止带宽的地方,如果谁知道请告诉我,详细的帮助说明请参考man vsftpd.conf

3 配置实例

以下是我的配置文件.允许匿名FTP,允许上传,chroot用户目录,上传文件属主改为root

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=YES

chown_username=root

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=YES

pam_service_name=vsftpd

chroot_local_user=YES

4 起动服务

vsftpd和wu-ftpd不能同时起动,所以修改/etc/xinetd.d/wu-ftpd将disable设置为yes,然后修改/etc/vsftpd将disable设置为NO

执行/etc/initd.d/xinetd restart

就可以了.好了,现在我们就建了一个所谓的非常安全的ftp服务器了,大家试试吧

 

個人心得:

Chroot_local_use=yes;表示用戶只在自己的目錄(home下面的,要用useradd建立)

[编辑]安全选项
  Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
  Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
  Accept_timeout=60(秒) (将客户端空闲1分钟后断)
  Connect_timeout=60(秒) (中断1分钟后又重新连接)
  Local_max_rate=50000(bite) (本地用户传输率50K)
  Anon_max_rate=30000(bite) (匿名用户传输率30K)
  Pasv_min_port=50000 (将客户端的数据连接端口改在
  Pasv_max_port=60000 50000—60000之间)
  Max_clients=200 (FTP的最大连接数)
  Max_per_ip=4 (每IP的最大连接数)
  Listen_port=5555 (从5555端口进行数据连接)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值