Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1510402
  • 博文数量: 416
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 3287
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-05 11:12
个人简介

技术在于专研

文章分类

全部博文(416)

文章存档

2021年(3)

2015年(34)

2013年(2)

2012年(1)

2011年(2)

2010年(5)

2007年(344)

2006年(25)

分类: LINUX

2007-08-16 14:29:56

环境 vmware+solaris9+vsftpd 2.0.3

1.从哪里下载vsftp的安装包
2.如何编译vsftp安装包
前两步就不赘述了,坛子里有好多帖里都有,search一下就能找到。

3.编译完成的文件需要如何安装到系统中去?
需要将编译完成的哪些文件拷贝到系统的哪些目录下
      编译完后将产生vsftp文件,其他的配置文件,帮助文件(man)应该是编译前已经存在的了
     。应此需要拷贝的文件有:
      vsftpd
      vsftpd.conf.5
      vsftpd.8
      vsftpd.conf
     拷贝路径为:
      vsftpd          /usr/local/sbin/
      vsftpd.conf.5   /usr/local/man/man5/
      vsftpd.8        /usr/local/man/man8/
      vsftpd.conf     /etc/
      (ps 安装文档中说可以用make install,但是我运行时,总是不成功)

4.运行vsftpd的最小设置:
  4.1 需要系统中有一个nobody用户,如果没有自己创建。
  4.2 需要系统中有一个ftp用户(作为vsftpd的匿名用户),要修改宿主目录为其他用户所有,
       并去掉改目录og的可写属性,例如,ftp的宿主目录是/var/ftp/,修改宿主目录属性:
       chown root:root /var/ftp
       chmod og-w /var/ftp
  4.3 需要创建/usr/share/empty/目录,这是vsftpd要求的默认配置,我也不知道做什么用的,:)

5.运行方式的选择:
5.1 standalone 方式:
     独立运行模式,不需要inetd作为"中间人"的方式:
     在/etc/vsftpd.conf 最后添加一行:
     listen=YES (注意,vsftpd.conf中的所有"="两边不能有空格。)
5.2 inetd 方式:
      把/etc/inetd.conf 中的ftp stream....  中in.ftpd 改成vsftpd,最后是启动参数vsftpd /etc/vsftpd.conf(替换掉 in.ftpd -a)就可以了
      设置/etc/vsftpd.conf中的listen=NO(如果不改的话,第一次ftp会失败,ctrl+c中止后,再ftp时,就可以用了,我试了两次,是这个结果)


在5.1后,vsftpd最小配置已经完成,就可以使用/usr/local/sbin/vsftp & 直接运行vsftpd,尝试用
ftp用户来登录,感受一把,呵呵。

6.增加自启动功能:

   将/etc/inetd.conf中的 ftp stream ..... in.ftpd 用#注释掉
   /etc/services 中的ftp  21/tcp 不要注释,否则无法连接到服务器上。

   vi /etc/rc3.d/S83vsftpd

     #!/sbin/sh
     case "$1" in
     start)
            /usr/local/bin/vsftpd &
     ;;
     stop)
            pkill vsftpd
     ;;
     *)
            echo "Usage: $0 { start | stop }"
            exit 1
     ;;
     esac
     exit 0  
    这个应该是standalone的自启动脚本,inted方式则不用。
    写好脚本后,将脚本增加执行权限:u+x,如果愿意可以把用户和组都改为和系统默认一致:root:sys


7.vsftp功能详细配置:

  先假设一下需求:
  7.1 需要能匿名登录vsftp server,只允许下载公开的内容,不允许匿名用户上传和和其他操作。

    根据需求,在vsftpd.conf中加入
     anonymous_enable=YES
     anon_world_readable_only=YES
     non_upload_enable=NO
     anon_mkdir_write_enable=NO
     anon_other_write_enable=NO
    其实这些采用默认值就可以了,也就是说,对于匿名用户,采用默认的设置已经可以实现7.1的需求了。
    只要在/var/ftp/放入给匿名用户下载的文件就可以了。

   
                 


以下时匿名用户和本地用户配置文件的主要参数值。

加入你想配置匿名ftp,把如下的参数存成vsftpd.conf,放到/etc下,不用安装包提供的那个示例配置文件(vsftpd.conf)

匿名ftp的以上控制分别为:
用户控制

anonymous_enable=YES         启用匿名用户
no_anon_password=YES         需要密码
anon_root=/var/ftp           匿名用户的主目录(默认为/var/ftp)
local_enable=NO              禁用本地用户
guest_enable=NO              禁用gust用户
ftp_username=ftp             匿名用户的用户名(默认还有anonymous可使用)

权限控制

write_enable=NO                 匿名用户不可写
local_umask=022                 上传文件的umask
file_open_mode=0666             上传文件的总权限,与umask共同决定了上传文件的实际权限
anon_upload_enable=NO           匿名用户不可以上传
anon_mkdir_write_enable=NO      匿名用户不可以建目录等写操作
anon_other_write_enable=NO      匿名用户不可以做其他的写操作
anon_world_readable_only=YES    匿名用户可以读文件
#chown_uploads=YES               修改上传的文件的属主
#chown_username=ftpadmin         修改上传的文件的属主为XXX
ascii_upload_enable=NO          不使用ascii上传文件
ascii_download_enable=NO        不使用ascii下载文件

secure_chroot_dir=/usr/share/empty  默认值

超时控制

idle_session_timeout=600          空闲超时600秒
data_connection_timeout=120       传输超时120秒
accept_timeout=60                 pasv模式等待时间60秒
connect_timeout=60                port模式等待时间60秒

服务控制

xferlog_enable=YES                 启动日志功能
xferlog_std_format=YES             使用标准日志格式
xferlog_file=/var/log/vsftpd.log   日志默认的位置
pasv_enable=YES                    启用被动模式
#port_enable=YES                    启用主动模式
tcp_wrappers=YES                   启用tcp_wrappers功能
nopriv_user=nobody                 最低权限用户

listen=YES                         使用standalone 模式(推荐的)

显示信息

ftpd_banner=welcome to ftp.        登录时的欢迎信息
dirmessage_enable=YES              启动切换目录时提示目录信息的功能
message_file=.message              目录提示信息的内容文件



连接选项
max_clients=100                       最大连接数
max_per_ip=5                          每个ip最大连接数
connect_from_port_20=YES              启用20端口传输数据
#listen_address=192.168.0.2            限制只有此ip地址可以访问
listen_port=21                        监听的端口号
ftp_data_port=20                      数据传输端口号

pasv_max_port=0                       被动模式的端口号的上限(0为不限)
pasv_min_port=0                       被动模式的端口号的下限(0为不限)

数据传输速度

anon_max_rate=51200                   匿名用户最大传输率
local_max_rate=5120000                本地用户最大传输率

************************************************************************


加入你想配置本地用户ftp,把如下的参数存成vsftpd.conf,放到/etc下,不用安装包提供的那个示例配置文件(vsftpd.conf)

本地用户的各部分功能设置为:(注意,本地用户模式编译不要选择pam模块)
用户控制

anonymous_enable=NO                           禁用匿名用户
no_anon_password=YES                          需要密码
anon_root=/var/ftp                            匿名用户的默认主目录
local_enable=NO                               禁用本地用户
local_root=webdisk                            本地用户的主目录(相对路径是相对于用户的家目录,绝对路径是所有用户都只能登录到这个目录下比如:/localftp)
guest_enable=NO                               禁用gust用户
ftp_username=ftp                              匿名用户的用户名(默认还有anonymous可使用)

权限控制

write_enable=YES                                 本地用户可写
local_umask=022                                  上传文件的umask
file_open_mode=0666                              使用文件的方式
anon_upload_enable=NO                            匿名用户不可以上传
anon_mkdir_write_enable=NO                       匿名用户不可以建目录等写操作
anon_other_write_enable=NO                       匿名用户不可以做其他的写操作
anon_world_readable_only=YES                     匿名用户可以读文件
#chown_uploads=YES                               修改上传的文件的属主
#chown_username=ftpadmin                         修改上传的文件的属主为XXX
ascii_upload_enable=NO                           不使用ascii上传文件
ascii_download_enable=NO                         不使用ascii下载文件

secure_chroot_dir=/usr/share/empty                   默认值

超时控制
                 
idle_session_timeout=600                           空闲超时600秒
data_connection_timeout=120                        传输超时120秒
accept_timeout=60                                  pasv模式等待时间60秒
connect_timeout=60                                 port模式等待时间60秒

服务控制

xferlog_enable=YES                                  启动日志功能
xferlog_std_format=YES                              使用标准日志格式
xferlog_file=/var/log/vsftpd.log                    日志默认的位置
pasv_enable=YES                                     启用被动模式
#port_enable=YES                                     启用主动模式
#注意此处pasv和port只能写一个,不能一个YES,另一个NO,要想让另一个不起作用,只能用#注释掉,否则会出错。
tcp_wrappers=YES                                    启用tcp_wrappers功能
nopriv_user=nobody                                  最低权限用户


listen=YES                                          使用standalone 模式(推荐的)

显示信息

ftpd_banner=welcome to ftp.                         登录时的欢迎信息
dirmessage_enable=YES                               启动切换目录时提示目录信息的功能
message_file=.message                               目录提示信息的内容文件


文件权限设置
chroot_list_enable=YES                            启动用户目录限制功能
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list   此文件中的用户不能改变到其他外层目录中。

userlist_enable=YES                                启动用户限制功能
userlist_deny=YES                                  userlist文件中的用户禁止登录,NO的话则只有userlist中用户可以登录
userlist_file=/etc/vsftpd/vsftpd.user_list         禁止登录用户列表文件名和位置(可自定义)

user_config_dir=/etc/vsftpd/userconf/             对个别用户特殊设置的配置文件的目录(在此目录下建立对应“用户名”的文件,文件里写
                                                   write_enable=YES
                                                   anon_world_readable_only=NO
                                                   anon_upload_enable=YES
                                                   anon_mkdir_write_enable=YES
                                                   anon_other_write_enable=YES 等权限信息,此用户将有这里所写的权限)



连接选项
max_clients=100                                          最大连接数
max_per_ip=5                                              每个ip最大连接数
connect_from_port_20=YES                               启用20端口传输数据
#listen_address=192.168.0.2                             指定监听的ip地址,如果你有多个ip的话
listen_port=21                                         监听的端口号
ftp_data_port=20                                       数据传输端口号

pasv_max_port=40000                                    被动模式的端口号的上限(0为不限)
pasv_min_port=30000                                    被动模式的端口号的下限(0为不限)

数据传输速度

anon_max_rate=51200                                    匿名用户最大传输率
local_max_rate=5120000                                 本地用户最大传输率

(具体ip限制可以在/etc/hosts.allow,/etc/hosts.deny中设置
  还可以对每个用户进行磁盘限额,这里就不做了)




********************实   例******************************************

采用本地用户实现ftp功能,虚拟用户的设置太复杂了,又涉及到pam和db,这两个东东都没搞过,影响vsftp的学习,再说localuser基本能满足需要了
假设要实现如下功能:

系统中存在如下用户:
拒绝登录的用户:  denyuser1
不能chroot的用户:unchrootuser
不允许上传的用户:deny_upload
普通用户:        normaluser
(用户名设的过长了,不过还能用)



普通用户可以ftp登录到各自的HOME目录中,可以转到其他目录,允许上传下载,
不允许上传的用户,需要单独的配置文件来限制其不能上传;(/etc/vsftpd/deny_upload)
不能chroot的用户,只能登录限定的目录中。(/etc/vsftpd/unchroot)
拒绝登录的用户在拒绝登录列表中(/etc/vsftpd/denyuser)

权限设置部分:

write_enable=YES
anon_mkdir_write_enable=YES                       匿名用户不可以建目录等写操作
anon_other_write_enable=YES                       匿名用户不可以做其他的写操作
anon_world_readable_only=YES                      匿名用户可以读文件

userlist_enable=YES                                启动用户限制功能
userlist_deny=YES                                  userlist文件中的用户禁止登录,NO的话则只有userlist中用户可以登录
userlist_file=/etc/vsftpd/denyuser                 禁止登录用户列表文件名和位置(在denyuser文件中加入一行denyuser1)

chroot_list_enable=YES                            启动用户目录限制功能
chroot_list_file=/etc/vsftpd/unchroot             此文件中的用户不能改变到其他外层目录中。(加入一行unchrootuser)


user_config_dir=/etc/vsftpd/userconf/             对个别用户特殊设置的配置文件的目录(在此目录下建立deny_upload的文件,文件里写
                                                   write_enable=NO
                                                   anon_world_readable_only=NO
                                                   anon_upload_enable=NO
                                                   anon_mkdir_write_enable=NO
                                                   anon_other_write_enable=NO 我觉得只要把write_enable设成NO,下边的不用管就行了,不过考虑到安全还是都改成NO了)

然后就是建立相应的用户,修改配置文件,启动vsftpd,测试一把了。

阅读(834) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~