Arch Linux下vsftpd的搭建

其实我也是闹着玩的,有些时候想跟室友传个视频传个游戏,他们都习惯于用qq,在Win下是没问题,但是在Linux下就麻烦了,虽然EVA也可以传文件,可是需要对方也是在用EVA,不知道现在的版本怎样了,不过觉得还是不符实际,那么我就想到了ftp这个方法,其实就是这里啦!

本文是vsftpd
2.0.3官方faq的非官方翻译版本。官方faq地址:ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.3/FAQ

目录
1 vsFTP服务器的安装

现如今越来越多的人选择了开源的Linux操作系统,其不逊于Windows的性能和平易近人的价格是人们选择它的最好理由,而Red
Hat Linux 9是Linux操作系统中使用最广的一种。Red Hat Linux
9利用其简单的配置和用户熟悉的图形界面为人们提供了丰富的Internet服务,FTP便是其提供的服务之一。在众多的网络应用中,FTP有着非常重要的地位,互联网中各种各样的软件资源大多数都放在FTP服务器中。与大多数互联网服务一样,FTP也是一个客户机/服务器系统。下面我就给大家简单介绍一下如何在Red
Hat Linux 9 下架设FTP服务器,希望藉此抛砖引玉。

开始,我选择的是用xinetd的方法:

现在最新的版本是vsftpd
2.3.2,对应的faq地址:ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.3.2/FAQ

1.1 匿名服务器的连接(独立的服务器)
1.2 开启匿名FTP服务器上传权限
1.3 开启匿名服务器下传的权限
1.4 普通用户FTP服务器的连接(独立服务器)
1.5 用户登陆限制进其它的目录,只能进它的主目录
1.6 限制本地用户访问FTP
1.7 安全选项
1.8 查看谁登陆了FTP,并杀死它的进程

  1.安装vsftpd服务器

pacman -S xinetd vsftpd

Q1) 我能把用户限制在他的家(home)目录里吗?

2 vsFTP服务器的配置

  vsftpd是目前Linux最好的FTP服务器工具之一,其中的vs就是“Very
Secure”(很安全)的缩写,可见它的最大优点就是安全,除此之外,它还具有体积小,可定制强,效率高的优点。

编辑/etc/xinetd.d/vsftpd:把下面的yes改成no!

A) 能,设置chroot_local_user=YES就行了。

2.1 配置本地组访问的FTP
2.2 配置独立FTP的服务器的非端口标准模式进行数据连接
2.3
配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限

  如果选择完全安装Red Hat Linux
9.0,则系统会默认安装vsftpd服务器。我们可以在终端命令窗口输入以下命令进行验证:

再编辑/etc/hosts.allow这个文件,一开始我没有改这个文件一直没有成功,加入:

BKJIA推荐专题:vsftpd入门——安装、配置、案例与常见问题

2.3.1 A:配置网卡
2.3.2 B:写入/etc/sysconfig中(为了重起后IP地址不会丢失)
2.3.3 C:进入vsftpd.conf所在的文件夹
2.3.4 D:建立logins.txt
2.3.5 E:建立访问者的口令库文件,然后修改其权限
2.3.6 F:进如/etc/pam.d/中创建ftp.vu
2.3.7 G:在/var/ftp/创建目录并改变其属性和它的属主
2.3.8 H:进入vsftpd2.conf修改其中的信息
2.3.9
I:在vsftpd.comf所在的目录中创建virtaul文件目录并在文件目录中创建以你用户名命名的配置文件
2.3.10 J:修改vsftpd2.conf

  [[email protected]
root] rpm -qagrep vsftpd

vsftpd:10.101.12. , 127.0.0.1

Q2)
为什么设置了chroot_local_user=YES后,符号链接(symlink)就不起作用了呢?

2.4 vsftpd.conf中的所有配置信息

  如果结果显示为“vsftpd-1.1.3-8”,则说明系统已经安装vsftpd服务器。如果安装Red
Hat Linux
9.0时没有选择vsftpd服务器,则可以在图形环境下单击“主菜单→系统设置→添加删除应用程序”菜单项,在出现的“软件包管理”对话框里确保选中
“FTP服务器”选项,然后单击“更新”按钮,按照屏幕提示插入第3张安装光盘即可开始安装。

当然10.101.12这里要改为自己的IP段,这样在这个段里的IP都可以访问了!

A) 这是chroot()这种安全机制如何工作的结果。可选地,看一下硬连接(hard
links),或者,你用的是“现代的”Linux,看一下强大的”mount –bind”命令。

3 vsFTP服务器的维护

  另外,你也可以直接插入第3张安装光盘,定位到/RedHat/RPMS下的vsftpd-1.1.3-8.i386.rpm安装包,然后在终端命令窗口运行以下命令即可开始安装进程:

接下来就要配置ftp了,配置文件在/etc/vsftpd.conf,网上有很多资料!

Q3) vsftpd支持限制用户连接数吗?

4 vsFTP使用的一些补充

  [[email protected]
RPMS] rpm -ivh vsftpd-1.1.3-8.i386.rpm

初步搭建就算完成了,共享东西是没有问题了,不过要完美点,还得仔细研究研究vsftpd的配置了!

A1)
是的,间接地。vsftpd是一个基于inetd的服务。如果你使用流行的xinetd,它会支持per-service
per-IP的连接限制。”EXAMPLE”目录里有这样的一个例子。

4.1 补充一:如何有选择的把用户限制在家目录中呢?
4.2 补充二:打开vsFTP服务器的日志功能
4.3 补充三:如何让绑定IP到vsFTP?
4.4 补充四:如何让vsFTP服务器限制链接数,以及每个IP最大的链接数??
4.5 补充五:如何限制下载的速度?
4.6 补充六:我的硬盘空间有限,怎么办?
4.7 补充七:如何定制欢迎信息
4.8 补充八:如何实现虚拟路径?
4.9 补充九:如何上匿名访问、上传,并支持下载和执行?
4.10 补充十:通过pam认证方式,添加虚拟用户
4.11 补充十一:如何把系统默认用standalone启动改为用xinetd启动?

  2.启动/重新启动/停止vsftpd服务

图片 1

A2)
如果你以”standalone”方式运行vsftpd(方法是设置listen=YES),你可以研究一下max_clients=10这样的设置。

vsFTP服务器的安装
安装一个软件实在是不许要在这里介绍,因此,这里的安装主要针对vsFTPd服务器的初级配置。
VSFTPD的菜鸟篇
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
[原文出处

]
这是我这个菜鸟学习LINUX所写的第一篇文章,是比较基础的FTP架设的应用,如果我写有
什么问题请大家多指教,我后续会陆续出进阶篇把FTP中各种详细的配置跟大家一起进行探讨。我所用的是Redhat
Linux AS +
VSFTPD-1.2.0-4的系统架构,在这里说明的是如果对配置文件不是很熟悉,最好做个备份,以免误操作:
匿名服务器的连接(独立的服务器)
在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:

  从Red Hat Linux
9.0开始,vsftpd默认只采用standalone方式启动vsftpd服务,方法是在终端命令窗口运行以下命令:

Q4) 求助!我得到了”refusing to run with writable anonymous
root”错误信息。

  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服务器)*

  [[email protected]
root] /etc/rc.d/init.d/vsftpd start

A)
vsftpd是不允许“危险(不安全)”的配置的。出现这个错误信息的原因通常是ftp的家(home)目录的属主权限不正确。
家(home)目录的属主不应该是ftp用户自己,而且ftp用户也不能有写的权限。解决的方法是:

功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
开启匿名FTP服务器上传权限
在配置文件中添加以下的信息即可:

  重新启动vsftpd服务:

chown root ~ftp; chmod -w ~ftp

  Anon_upload_enable=yes (开放上传权限)
  Anon_mkdir_write_enable=yes
(可创建目录的同时可以在此目录中上传文件)
  Write_enable=yes (开放本地用户写的权限)
  Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

  [[email protected]
root] /etc/rc.d/init.d/ vsftpd restart

Q5) 求助!我得到了”str_getpwnam”错误信息。

开启匿名服务器下传的权限
在配置文件中添加如下信息即可:

  关闭vsftpd服务:

A)
最有可能的原因是在你的系统中不存在那个被配置成’nopriv_user’的用户(一般是
‘nobody’) 。vsftpd需要通过它以最低的权限运行。

  Anon_world_readable_only=no

  [[email protected]
root] /etc/rc.d/init.d/ vsftpd stop

Q6) 求助!本地用户无法登录。

注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读—–下传 (W)写—-上传
(X)执行—-如果不开FTP的目录都进不去
普通用户FTP服务器的连接(独立服务器)
在配置文件中添加如下信息即可:

  确认vsftpd服务已经启动后,我们可以在任意一台Windows主机的DOS命令窗口里输入“ftp
FTPAddres”(用实际的FTP服务器IP地址或者域名代替FTPAddres),注意用户名、密码都是ftp(ftp是匿名用户的映射用户账号),如下所述:

A) 有几种可能的问题导致无法登录。

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

  Microsoft Windows XP [版本 5.1.2600]

A1)
默认情况下,vsftpd只允许匿名用户(anonymous)登录。在你的/etc/vsftpd.conf配置文件中加入local_enable=YES就可以让本地用户登录了。

功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
用户登陆限制进其它的目录,只能进它的主目录
设置所有的本地用户都执行chroot

  (C) 版权所有 1985-2001 Microsoft Corp.

A2) vsftpd需要与PAM联系 (运行”ldd
vsftpd”检查结果中有没有libpam可以确定这个). 如果vsftpd需要PAM支持,
你必须为vsftpd服务准备一个PAM文件.
在”RedHat”目录下有一个为RedHat系统准备的PAM文件的例子,把它放在/etc/pam.d目录下。

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

  F:Peter>ftp FTPAddress

A3) 如果vsftpd不需要PAM, 那么会有多种原因导致这种情况. 用户的shell在
/etc/shells文件中吗? 如果你使用shadow
passwd,那么include路径中有没有shadow.h文件?

设置指定用户执行chroot

  Connected to FTPAddress

A4) 如果你没有用PAM, vsftpd会用自己的方法检查用户的shell是否合法.
如果想用一个非法的shell这样用户就只能用FTP登录),你可以在配置文件中加入check_shell=NO.

  Chroot_list_enable=yes (文件中的名单可以调用)
  Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

  220 (vsFTPd 1.1.3)//vsftpd的响应请求

Q7) 求助!上传或其他”写“命令都报”500 Unknown command.”.

注意:vsftpd.chroot_list
是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
限制本地用户访问FTP
  Userlist_enable=yes (用userlistlai 来限制用户访问)
  Userlist_deny=no (名单中的人不允许访问)
  Userlist_file=/指定文件存放的路径/ (文件放置的路径)

  User (FTPAddress:(none)): ftp//输入用户账号ftp

A) 默认情况下”写“命令上传和建新目录等)都是被禁止的. 这是一种安全的方法.
要允许写命令需要在配置文件/etc/vsftpd.conf中加入write_enable=YES.

注:开启userlist_enable=yes匿名帐号不能登陆
安全选项
  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端口进行数据连接)

  331 Please specify the password.

Q8) 求助!chroot_local_user这个选项里有什么安全隐患?

查看谁登陆了FTP,并杀死它的进程
  ps –xf |grep ftp
  kill 进程号

  Password://输入密码ftp

A)
首先注意其他ftp服务器也有同样的隐患。这是个一般性的问题。这个问题不是很严重,但它是这样的:有些人使不被信任的ftp帐户具有了全部的shell
访问权限。如果这些帐户可以上传文件,那就会有一点风险。一个坏用户就可以控制作为其家目录的文件系统的根目录。FTP进程也许会使一些配置文件被访问到,例如/etc/some_file。使用chroot(),这个文件就处于此用户的控制之下。vsftpd非常在意这些安全问题。但是,系统的
libc也许想打开语言配置文件或其他的什么配置……

vsFTP服务器的配置
VSFTPD的高手篇
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
[原文出处

]
我可不是高手!!!^_^我只不过是个菜鸟,尽我的能力写出了我这个菜鸟觉得的高手篇,所以有什么错误请大家指正哦!!!
环境:linux as 3.0 + vsftpd
-1.2.0-4的系统架构,是在独立服务器下的哦!讨厌XINETD^_^
配置本地组访问的FTP
首先创建用户组 test和FTP的主目录
  groupadd test
  mkdir /tmp/test

  230 Login successful. Have fun.

Q9) 求助!上传后的文件权限是-rw——-。

然后创建用户
  useradd -G test –d /tmp/test –M usr1

  ftp>

A1)
根据上传用户是本地用户还是匿名用户,修改local_umask或anon_umask选项。例如,设置anon_umask=022指定匿名上传的文件权限为-rw-r–r–。注意,22前面的0不能少。

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

3.vsftpd的配置

A2) 也可以看看vsftpd.conf的man帮助中的新选项file_open_mode。

接着改变文件夹的属主和权限
  chown usr1.test /tmp/test —-这表示把/tmp/test的属主定为usr1
  chmod 750 /tmp/test —-7表示wrx 5表示rx 0表示什么权限都没有

  在Red Hat Linux 9.0里的vsftpd共有3个配置文件,它们分别是:

Q10) 求助!我如何集成LDAP用户登录?

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

  vsftpd.ftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。

A) 使vsftpd结合PAM,配置PAM使用LDAP认证。

配置独立FTP的服务器的非端口标准模式进行数据连接
这个非常容易:在VSFTPD。CONF中添加
  Listen_port=33333

vsftpd.user_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd
.conf配置文件里启用userlist_enable=NO选项时才允许访问。

Q11) 求助!vsftpd可以配置成虚拟主机virtual hosting)吗?

就可以了啦!

  vsftpd.conf:位于/etc/vsftpd目录下。它是一个文本文件,我们可以用Kate、Vi等文本编辑工具对它进行修改,以此来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。

A1)
可以。如果你使用xinetd方式运行vsftpd,可以将xinetd绑定到几个不同的IP地址。针对每一个IP地址,xinetd使用不同的配置文件启动vsftpd。这样,你就能在每个IP上配置不同的vsftpd服务。

配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限
(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)
A:配置网卡
第一块网卡地址是10.2.3.4 掩码是255.255.0.0
  ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up

  (1)用户登录控制

A2)
也可以用standalone方式运行多个vsftpd实例。使用选项listen_address=x.x.x.x设置虚拟IP。

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退出

  anonymous_enable=YES,允许匿名用户登录。

Q12) 求助!vsftpd支持虚拟用户virtual users)吗?

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

  no_anon_password=YES,匿名用户登录时不需要输入密码。

A)
支持,通过PAM集成。在/etc/vsftpd.conf中设置guest_enable=YES,这样的效果是所有非匿名用户的成功登录都映射成guest_username指定的本地用户。然后,使用PAM和例如:)它的pam_userdb模块,就可以提高基于外部用户库即不使用/etc/passwd)的认证。注意:当guest_enable生效后会有一个限制,就是本地用户也被映射到guest_username译者:也就是说虚拟用户与本地用户不能同时使用)。EXAMPLE目录里有配置虚拟用户的例子。

修改vsftpd.conf添加以下信息
  Listen_address=10.2.3.4

  local_enable=YES,允许本地用户登录。

Q13) 求助!vsftpd支持不同的用户使用不同的配置吗?

修改vsftpd2.conf添加以下信息
  Listen_address=211.131.4.253
  Ftpd_banner=this is a virtual ftp test

  deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。

A) 支持,而且功能强大。看man帮助里的user_config_dir选项。

到此虚拟的FTP服务器建立好了
D:建立logins.txt
  vi /tmp/logins.txt

  banned_email_file=/etc/vsftpd.banned_emails,当启用deny_email_enable功能时,所需的电子邮件黑名单保存路径(默认为/etc/vsftpd.banned_emails)。

Q14) 求助!我可以把vsftpd的数据连接data
connections)限制到指定范围的端口吗?

添加入下信息:
  longlei————用户名
  longlei————密码
  zhangweibo
  zhangweibo
  jinhui
  jinhui
  lxp
  lxp

  (2)用户权限控制

A) 可以。看配置选项pasv_min_port和pasv_max_port。

格式要按照我的来哦,一个用户名,一个密码啦
E:建立访问者的口令库文件,然后修改其权限
  db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db

  write_enable=YES,开启全局上传权限。

Q15) 求助!我看到了”OOPS: chdir”这样的信息。

F:进如/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

  local_umask=022,本地用户的上传文件的umask设为022(系统默认是077,一般都可以改为022)。

A)
如果这是匿名用户在登录,就检查系统用户ftp的家目录是否正确。如果你使用了anon_root这个选项,也要检查该选项是否正确。

G:在/var/ftp/创建目录并改变其属性和它的属主
  useradd -d /var/ftp/test qiang
  chmod 700 /var/ftp/test

  anon_upload_enable=YES,允许匿名用户具有上传权限,很明显,必须启用write_enable=YES,才可以使用此项。同时我们还必须建立一个允许ftp用户可以读写的目录(前面说过,ftp是匿名用户的映射用户账号)。
配置telnet服务:

Q16) 求助!vsftpd显示的是GMT时间,而不是本地时间!

在目录中添加test_file测试文件
H:进入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

(1) 用vi命令编辑/etc/hosts.deny文件,放开telnet登录权限控制

A) 这个可以通过设置use_localtime=YES来解决。

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件
重起服务。到此虚拟USER就建好了
I:在vsftpd.comf所在的目录中创建virtaul文件目录并在文件目录中创建以你用户名命名的配置文件
  Longlei zhangweibo jinhui lxp

# vi /etc/hosts.deny

Q17) 求助!我能禁用某些FTP命令吗?

在longlei中添加:
  Anon_world_readable_only=no

在ALL: ALL 行前加“#”号注释,注销该行。

A)
可以。有一些单独的选项比如dirlist_enable),或者可以通过cmds_allowed选项指定允许的命令集。

在lxp中添加
  Anon_world_readable_only=no

(2) 用vi命令编辑/etc/hosts.allow文件,放开root用户登录权限控制

Q18) 求助!我可以改变vsftpd的工作端口吗?

这样此两个用户就有了浏览目录的权限了
在jinhui中添加
  Anon_world_readable_only=no
  Write_enable=yes
  Anon_upload_enable=yes

添加一行ALL: ALL

A1)
可以。如果以standalone方式运行vsftpd,可以用vsftpd.conf中的listen_port选项指定端口)。

此用户就有了上传、下载和浏览的权限
在zhangweibo中添加
  Anon_world_readable_only=no
  Write_enable=yes
  Anon_upload_enable=yes
  Anon_other_write_enable=yes

(3) 用vi命令编辑/etc/xinetd.d/telnet文件,放开telnet

A2)
可以。如果以inetd或xinetd方式运行vsftpd,那么这个问题由inetd或xinetd负责。你就必须修改inetd或xinetd的配置文件可能是/etc/inetd.conf或/etc/xinetd.d/vsftpd)。

此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限
J:修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目录/virtual
重起服务器就搞定了

用”#”注销disable=yes,或者修改为 disble=no

Q19) 求助!vsftpd可以使用LDAP服务器进行验证吗?或者使用Mysql数据库?

vsftpd.conf中的所有配置信息

(4) 命令编辑/etc/pam.d/login文件,放开root用户登录权限控制

A)
是的。vsftpd可以使用PAM进行验证,所以你需要配置PAM使用pam_ldap或pam_mysql模块。这包括安装PAM模块,然后编辑vsftpd的PAM配置文件可能是/etc/pam.d/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服务器 *
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=/任意指定的路径//任意文件目录
指定虚拟用户存放配置文件的路径

# vi /etc/pam.d/login

Q20) 求助!vsftpd支持每IP限制per-IP limits)吗?

vsFTP服务器的维护
现在这里还没有关于维护vsftp服务器的资料。欢迎大家编辑2
vsFTP使用的一些补充
补充一:如何有选择的把用户限制在家目录中呢?
我们要自己建一个文件,在/etc目录中
  #touch /etc/vsftpd.chroot_list

在auth required
/lib/security/pam_securetty.so行前加“#”号注释,注销该行。

A1) 是的。如果以standalone方式运行vsftpd,可以使用max_per_ip选项。

以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。
在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。
  beinan
  nanbei

(5) 启动xinetd服务

A2)
是的。如果以xinetd方式运行vsftpd,可以用xinetd的配置参数per_source。

然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行
  #chroot_list_enable=YES
  #chroot_list_file=/etc/vsftpd.chroot_list

# /etc/init.d/xinetd restart

Q21) 求助!vsftpd支持带宽限制吗?

把前面的#号去掉,也就是这样的
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd.chroot_list

配置ftp服务:

A) 支持。看man帮助vsftpd.conf.5)中的”anon_max_rate”和
“local_max_rate”选项。

如果没有这样的两行,就可以自己添加上去也是一样的。
设置好后,重新vsFTPD服务器。
补充一之补充:如何把系统内所有的FTP用户都限制在家目录中呢??经juliaugong兄的提示,我查找了vsFTPd的洋文说明,证明这个选项是一刀切的解决所有的用户都能限制在家目录中
我们可以通过更改vsftpd.conf文件,加入如下的一行
  chroot_local_user=YES

(1) 用vi命令编辑/etc/xinetd.d/tftp文件,放开telnet

Q22) 求助!vsftpd支持基于IPIP-based)的访问控制吗?

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

用”#”注销disable=yes,或者修改为 disble=no

A1)
可以结合tcp_wrappers实现前提是编译是加了tcp_wrappers支持)。通过设置tcp_wrappers=YES启用它。

  [root@linuxsir001 root]# /etc/init.d/vsftpd restart
  关闭 vsftpd: [ 确定 ]
  为 vsftpd 启动 vsftpd: [ 确定 ]
  [root@linuxsir001 root]#

(2) 启动ftp服务

A2) 以xinetd方式运行vsftpd,xinetd可以结合tcp_wrappers。

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

# service xinetd restart

Q23) 求助!vsftpd支持IPv6吗?

补充三:如何让绑定IP到vsFTP?
也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP
在/etc/vsftpd/vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP
  listen_address=192.168.0.2

# service iptables stop

A) 从版本1.2.0开始就支持了。看vsftpd.conf的man帮助。

加完后,要重启vsFTP服务器
  [root@linuxsir001 root]# /etc/init.d/vsftpd restart
  关闭 vsftpd: [ 确定 ]
  为 vsftpd 启动 vsftpd: [ 确定 ]
  [root@linuxsir001 root]#

# service vsftp start

Q24) 求助!vsftpd编译失败,错误是不能找到-lcapunable to find
-lcap)。

补充四:如何让vsFTP服务器限制链接数,以及每个IP最大的链接数??
答:应该改vsFTP服务器的配制文件vsftpd.conf,加入下面的两行:
  max_clients=数字
  max_per_ip=数字

Hat Linux 9是Linux操…

A) 安装libcap package再试。好像Debian用户遇到这个问题多一些。

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

Q25) 求助!我的配置文件是/etc/vsftpd.conf,可是好像不起作用!

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

A) RedHat用户会遇到这个问题 –
一些RedHat版本中vsftpd的配置文件是/etc/vsftpd/vsftpd.conf.

补充五:如何限制下载的速度?
anon_max_rate=数字 注:这是匿名的下载速度 local_max_rate=数字
注:这是vsFTP服务器上普通用户的下载速度
注:这个数字的单位是字节,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024×80=81920
所以我们要在vsftpd.conf中加入下面的两行
  anon_max_rate=81920
  local_max_rate=81920

Q26) 求助!vsftpd编译失败,报sysutil.c中有不完整的类型types)。

不要忘记重启vsftpd服务
补充六:我的硬盘空间有限,怎么办?
我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区?
可以,应该如下操作!
首先要把ftp这个用户删除
  #userdel -r ftp

A)
你的系统可能不支持IPv6。要么在一个现代一些支持IPv6)的系统中使用老版本的vsftpd例如
v1.1.3),要么等没有这个问题的版本出来。

会有错误信息,不过不用理,这是正常的。
然后我们再把这个用户添加上,比如我想为帐号ftp的家目录设置在/mnt/LinG/ftp,我们就可以如下操作
  [root@linuxsir001 root]# mkdir /mnt/LinG
  [root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s
/sbin/nologin ftp

Q27) 求助!下载尤其是大量小文件)时看到很多这样的信息:“500 OOPS:
vsf_sysutil_bind”。

仅仅是这样做还不行,因为这样还是不能让匿名用户找到它的家目录,所以我们必须改变/mnt/LinG/ftp这个目录的权限。
  [root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
  [root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/

A) vsftpd-1.2.1已经解决了这个问题。

补充七:如何定制欢迎信息
如何在我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir
FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。
实现这个并不难,我们可以查看vsftpd.cof文件中,是否有这行。
  dirmessage_enable=YES

Q28) 求助!vsftpd可以隐藏或拒绝访问某些文件吗?

如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。
然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:
  欢迎您来到LinuxSir FTP!
  在这里,您会得到最真诚的帮助;
  如果有什么问题和建议,请来信,多谢。

A) 可以。看看vsftpd.conf的man帮助中的hide_file和deny_file选项。

我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。
然后我们把.message这个文件复制到各个用户的家目录中。比如我的FTP的一个用户是beinan,这个用户所在的家目录是/home/beinan
我们就要把.message放在/home/beinan这个目录下。如果系统用户ftp,他的目录
就是/var/ftp这个目录,这个是默认的,当匿名用户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把.
message放在/var/ftp目录中。其它的用户,也无非就是类似的操作。

Q29) 求助!vsftpd支持FXP吗?

补充八:如何实现虚拟路径?
比如: /home/a 映射为

/home/b/c 则为

A)
支持。FTP服务器不需要特别配置就可以支持FXP。但由于vsftpd在IP地址上的安全限制,你可能不会成功。想放宽这种限制,可以看看vsftpd.conf的man帮助(vsftpd.conf.5)中关于pasv_promiscuous和不太推荐使用的port_promiscuous)选项。

其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。
  #mount –bind [原有的目录] [新目录]

Q30) ……

比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作
我们要先在/var/ftp目录中建一个目录
  #mkdir /var/ftp/WinSoft

A) 想进一步了解vsftpd,请阅读vsftpd.conf的man帮助和配置示例。

然后执行mount命令
  #mount –bind /mnt/LinG/WinSoft /var/ftp/WinSoft

2.0.3官方faq的非官方翻译版本。官方faq地址:ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.3/FAQ
现在最新的版本是vsftpd 2.3.2,对应的…

这样就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>

补充十一:如何把系统默认用standalone启动改为用xinetd启动?
如何把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

发表评论

电子邮件地址不会被公开。 必填项已用*标注