Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1316507
  • 博文数量: 161
  • 博客积分: 10192
  • 博客等级: 上将
  • 技术积分: 2165
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 17:09
文章分类

全部博文(161)

文章存档

2012年(2)

2011年(13)

2010年(137)

2009年(5)

2008年(4)

我的朋友

分类: LINUX

2010-07-21 14:38:39

官方faq地址: ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.0.3/FAQ
   
  Q1) 我能把用户限制在他的家(home)目录里吗?
  A) 能,设置chroot_local_user=YES就行了。
   
  Q2) 为什么设置了chroot_local_user=YES后,符号链接(symlink)就不起作用了呢?
  A) 这是chroot()这种安全机制如何工作的结果。可选地,看一下硬连接(hard links),或者,你用的是“现代的”Linux,看一下强大的"mount --bind"命令。
  
  Q3) vsftpd支持限制用户连接数吗?
  A1) 是的,间接地。vsftpd是一个基于inetd的服务。如果你使用流行的xinetd,它会支持per-service per-IP的连接限制。"EXAMPLE"目录里有这样的一个例子。
  A2) 如果你以"standalone"方式运行vsftpd(方法是设置listen=YES),你可以研究一下max_clients=10这样的设置。
   
  Q4) 求助!我得到了"refusing to run with writable anonymous
  root"错误信 息。
  A) vsftpd是不允许“危险(不安全)”的配置的。出现这个错误信息的原因通常是ftp的家(home)目录的属主权限不正确。 家(home)目录的属主不应该是ftp用户自己,而且ftp用户也不能有写的权限。解决的方法是:
  chown root ~ftp; chmod -w ~ftp
  
  Q5) 求助!我得到了"str_getpwnam"错误信息。
  A) 最有可能的原因是在你的系统中不存在那个被配置成'nopriv_user'的用户(一般是 'nobody') 。vsftpd需要通过它以最低的权限运行。
  
  Q6) 求助!本地用户无法登录。
  A) 有几种可能的问题导致无法登录。
  A1) 默认情况下,vsftpd只允许匿名用户(anonymous)登录。在你的/etc/vsftpd.conf配置文件中加入 local_enable=YES就可以让本地用户登录了。
  A2) vsftpd需要与PAM联系 (运行"ldd vsftpd"检查结果中有没有libpam可以确定这个). 如果vsftpd需要PAM支持, 你必须为vsftpd服务准备一个PAM文件. 在"RedHat"目录下有一个为RedHat系统准备的PAM文件的例子,把它放在/etc/pam.d目录下。
  A3) 如果vsftpd不需要PAM, 那么会有多种原因导致这种情况. 用户的shell在 /etc/shells文件中吗? 如果你使用shadow passwd,那么include路径中有没有shadow.h文件?
  A4) 如果你没有用PAM, vsftpd会用自己的方法检查用户的shell是否合法. 如果想用一个非法的shell(这样用户就只能用FTP登录),你可以在配置文件中加入check_shell=NO.
  
  Q7) 求助!上传或其他”写“命令都报"500 Unknown command.".
  A) 默认情况下”写“命令(上传和建新目录等)都是被禁止的. 这是一种安全的方法. 要允许写命令需要在配置文件/etc/vsftpd.conf中加入write_enable=YES.
  
  Q8) 求助!chroot_local_user这个选项里有什么安全隐患?
  A) 首先注意其他ftp服务器也有同样的隐患。这是个一般性的问题。这个问题不是很严重,但它是这样的:有些人使不被信任的ftp帐户具有了全部的shell 访问权限。如果这些帐户可以上传文件,那就会有一点风险。一个坏用户就可以控制作为其家目录的文件系统的根目录。FTP进程也许会使一些配置文件被访问 到,例如/etc/some_file。使用chroot(),这个文件就处于此用户的控制之下。vsftpd非常在意这些安全问题。但是,系统的 libc也许想打开语言配置文件或其他的什么配置......
  
  Q9) 求助!上传后的文件权限是-rw-------。
   A1) 根据上传用户是本地用户还是匿名用户,修改local_umask或anon_umask选项。例如,设置anon_umask=022指定匿名上传的文 件权限为-rw-r--r--。注意,22前面的0不能少。
  A2) 也可以看看vsftpd.conf的man帮助中的新选项file_open_mode。
  
  Q10) 求助!我如何集成LDAP用户登录?
  A) 使vsftpd结合PAM,配置PAM使用LDAP认证。
  
  Q11) 求助!vsftpd可以配置成虚拟主机(virtual hosting)吗?
  A1) 可以。如果你使用xinetd方式运行vsftpd,可以将xinetd绑定到几个不同的IP地址。针对每一个IP地址,xinetd使用不同的配置文件 启动vsftpd。这样,你就能在每个IP上配置不同的vsftpd服务。
  A2) 也可以用standalone方式运行多个vsftpd实例。使用选项listen_address=x.x.x.x设置虚拟IP。
  
   Q12) 求助!vsftpd支持虚拟用户(virtual users)吗?
  A) 支持,通过PAM集成。在/etc/vsftpd.conf中设置guest_enable=YES,这样的效果是所有非匿名用户的成功登录都映射成 guest_username指定的本地用户。然后,使用PAM和(例如:)它的pam_userdb模块,就可以提高基于外部用户库(即不使用/etc /passwd)的认证。注意:当guest_enable生效后会有一个限制,就是本地用户也被映射到guest_username(译者:也就是说虚 拟用户与本地用户不能同时使用)。EXAMPLE目录里有配置虚拟用户的例子。
  
  Q13) 求助!vsftpd支持不同的用户使用不同的配置吗?
  A) 支持,而且功能强大。看man帮助里的user_config_dir选项。
   
  Q14) 求助!我可以把vsftpd的数据连接(data connections)限制到指定范围的端口吗?
  A) 可以。看配置选项pasv_min_port和pasv_max_port。
  
  Q15) 求助!我看到了"OOPS: chdir"这样的信息。
  A) 如果这是匿名用户在登录,就检查系统用户ftp的家目录是否正确。如果你使用了anon_root这个选项,也要检查该选项是否正确。
  
   Q16) 求助!vsftpd显示的是GMT时间,而不是本地时间!
  A) 这个可以通过设置use_localtime=YES来解决。
   
  Q17) 求助!我能禁用某些FTP命令吗?
  A) 可以。有一些单独的选项(比如dirlist_enable),或者可以通过cmds_allowed选项指定允许的命令集。
  
   Q18) 求助!我可以改变vsftpd的工作端口吗?
  A1) 可以。如果以standalone方式运行vsftpd,可以用vsftpd.conf中的listen_port选项(指定端口)。
  A2) 可以。如果以inetd或xinetd方式运行vsftpd,那么这个问题由inetd或xinetd负责。你就必须修改inetd或xinetd的配置 文件(可能是/etc/inetd.conf或/etc/xinetd.d/vsftpd)。
  
  Q19) 求助!vsftpd可以使用LDAP服务器进行验证吗?或者使用Mysql数据库?
  A) 是的。vsftpd可以使用PAM进行验证,所以你需要配置PAM使用pam_ldap或pam_mysql模块。这包括安装PAM模块,然后编辑 vsftpd的PAM配置文件(可能是/etc/pam.d/vsftpd)。
  
  Q20) 求助!vsftpd支持每IP限制(per-IP limits)吗?
  A1) 是的。如果以standalone方式运行vsftpd,可以使用max_per_ip选项。
  A2) 是的。如果以xinetd方式运行vsftpd,可以用xinetd的配置参数per_source。
  
  Q21) 求助!vsftpd支持带宽限制吗?
  A) 支持。看man帮助(vsftpd.conf.5)中的"anon_max_rate"和 "local_max_rate"选项。
  
  Q22) 求助!vsftpd支持基于IP(IP-based)的访问控制吗?
   A1) 可以结合tcp_wrappers实现(前提是编译是加了tcp_wrappers支持)。通过设置tcp_wrappers=YES启用它。
   A2) 以xinetd方式运行vsftpd,xinetd可以结合tcp_wrappers。
  
  Q23) 求助!vsftpd支持IPv6吗?
  A) 从版本1.2.0开始就支持了。看vsftpd.conf的man帮助。
  
   Q24) 求助!vsftpd编译失败,错误是不能找到-lcap(unable to find -lcap)。
  A) 安装libcap package再试。好像Debian用户遇到这个问题多一些。
  
  Q25) 求助!我的配置文件是/etc/vsftpd.conf,可是好像不起作用!
  A) RedHat用户会遇到这个问题 - 一些RedHat版本中vsftpd的配置文件是/etc/vsftpd/vsftpd.conf.
  
  Q26) 求助!vsftpd编译失败,报sysutil.c中有不完整的类型(types)。
  A) 你的系统可能不支持IPv6。要么在一个现代一些(支持IPv6)的系统中使用老版本的vsftpd(例如 v1.1.3),要么等没有这个问题的版本出来。
  
  Q27) 求助!下载(尤其是大量小文件)时看到很多这样的信息:“500 OOPS: vsf_sysutil_bind”。
  A) vsftpd-1.2.1已经解决了这个问题。
  
  Q28) 求助!vsftpd可以隐藏或拒绝访问某些文件吗?
  A) 可以。看看vsftpd.conf的man帮助中的hide_file和deny_file选项。
  
  Q29) 求助!vsftpd支持FXP吗?
  A) 支持。FTP服务器不需要特别配置就可以支持FXP。但由于vsftpd在IP地址上的安全限制,你可能不会成功。想放宽这种限制,可以看看 vsftpd.conf的man帮助(vsftpd.conf.5)中关于pasv_promiscuous(和不太推荐使用的 port_promiscuous)选项。
  
  Q30) ......
  A) 想进一步了解vsftpd,请阅读vsftpd.conf的man帮助和配置示例。
-------------------------------------------

此文章细致的讲解了VSFTP的配置

环境: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=/任意指定的路径//任意文件目录 (指定虚拟用户存放配置文件的路径)


阅读(617) | 评论(0) | 转发(0) |
0

上一篇:mysql自动备份脚本

下一篇:dos command(1)

给主人留下些什么吧!~~