当前位置: 代码迷 >> Web前端 >> Vsftpd配备Web
  详细解决方案

Vsftpd配备Web

热度:345   发布时间:2012-09-22 21:54:54.0
Vsftpd配置Web
1下载
[root@localhost ~]# wget http://xftele1.skycn.com/down/vsftpd-2.3.1.tar.gz
[root@localhost ~]# yum -y install db4-utils #本机缺失的包
[root@localhost ~]# yum -y install gcc #本机缺失的包
[root@localhost ~]# yum -y install gcc-c++ #本机缺失的包
[root@localhost ~]# yum -y install pam-devel #本机缺失的包
[root@localhost ~]# make clean
[root@localhost ~]# make
[root@localhost ~]# make install

2安装
[root@localhost ~]# mkdir -d /data0/apppackage

[root@localhost ~]# tar zxvf vsftpd-2.3.1.tar.gz
[root@localhost ~]# cd vsftpd-2.3.1
[root@localhost ~]# make
[root@localhost ~]# make install

3配置
[root@localhost ~]# cat /***/***/vsftpd-2.3.1/INSTALL #查看
[root@localhost ~]# useradd nobody
[root@localhost ~]# export LC_ALL=zh_CN.GB2312;export LANG=zh_CN.GB2312
[root@localhost ~]# mkdir /usr/share/empty
[root@localhost ~]# mkdir /var/ftp/
[root@localhost ~]# useradd -d /var/ftp ftp
[root@localhost ~]# chown root.root /var/ftp
[root@localhost ~]# chmod og-w /var/ftp
[root@localhost ~]# cp vsftpd.conf /etc/
[root@localhost ~]# vi /etc/vsftpd.conf
/** #下面是需要增加的 前面的一些配置没有写
listen=YES
guest_enable=YES
guest_username=userxuni
pam_service_name=vsftp.vu
user_config_dir=/etc/vsftpd_userconfig
**/
[root@localhost ~]# /usr/local/sbin/vsftpd &
[root@localhost ~]# ps -aux |grep vsftpd
[root@localhost ~]# killall -9 pid
[root@localhost ~]# vi /data0/apppackage/vsftpd-2.3.1/account.txt
/**
14001
123456
**/
[root@localhost ~]# db_load -T -t hash -f account.txt  /etc/account.db
[root@localhost ~]# chmod 600 /etc/account.db
[root@localhost ~]# useradd -d fuao/data userxuni
[root@localhost ~]# useradd -d /fuao/data userxuni
[root@localhost ~]# chmod 777 /fuao/data
[root@localhost ~]# mkdir /etc/vsftpd_userconfig
[root@localhost ~]# vi /etc/vsftpd_userconfig/14001
/**
anonymous_enable=NO
local_enable=YES
local_root=/fuao/14001
write_enable=YES
guest_enable=YES
guest_username=userxuni
anon_upload_enable=NO
anon_other_write_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
listen=YES
anon_world_readable_only=NO
**/
[root@localhost ~]# mkdir /fuao/14001
[root@localhost ~]# chown userxuni.userxuni /fuao/14001
[root@localhost ~]# vi /etc/pam.d/vsftp.vu
/**
auth required /lib/security/pam_userdb.so db=/etc/account
account required /lib/security/pam_userdb.so db=/etc/account
**/
[root@localhost ~]# ps -aux |grep vsftpd
[root@localhost ~]# kill -9 12595
[root@localhost ~]# /usr/local/sbin/vsftpd &

4测试
[root@localhost ~]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.3.0)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): 14001
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

参考 http://wenku.baidu.com/view/bd90f37e5acfa1c7aa00cce5.html
遇到的问题
1.编译报错或者缺少支持 导致无法运行主要是缺少几个几个包 1中的yum下载的内容
2. 虚拟用户无法登陆 http://www.chinaunix.net/jh/15/586793.html

vim /etc/vsftpd/vuserconfig/testvuser

vim /etc/vsftpd/vuserconfig/testvuser
guest_enable=yes:开启虚拟帐号登录
guest_username=test:设置testvuser对应的系统帐号为test
anon_world_readable_only=no:允许匿名用户浏览器整个服务器的文件系统
write_enable=yes:允许在文件系统写入权限
anon_mkdir_write_enable=yes:允许创建文件夹
anon_other_write_enable=yes:允许其他权限比如重命令、删除文件及文件夹
anon_upload_enable=yes:开启匿名帐号的上传功能

guest_enable=yes
guest_username=test
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes


//以上步骤均运行过 第一次配置 匿名是可以访问 注册用户是可以登录访问 问题:虚拟用户配置无法上传 增加目录
后面重复了很多遍,也参考了许多网上文档 基本步骤都一样 后面出现了情况是 匿名可以 但是注册用户就都登录不了
实在不得决定重新用rpm包装 1.自己觉得可能源码有问题 2 虚拟用户的情况不太适合公司增加员工时增加账号的情况 3觉得先保持和前人的技术文档一致配置 这样好找出问题所在
//参考文献 http://bbs.51cto.com/thread-557014-1.html
//以下自己操作  基本和参考一致(运行时正确的)
//环境Linux version 2.6.18-194.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr 2 14:58:35 EDT 2010
//selinux(selinux支持上传)这个没有运行 所以这个跳过
linux 版本
Linux version 2.6.18-194.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr 2 14:58:35 EDT 2010
安装的vsftpd版本(直接yum安装的)
vsftpd-2.0.5-21.el5.i386.rpm

[root@localhost apppackage]# yum -y install vsftpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i386 0:2.0.5-21.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package          Arch           Version                   Repository      Size
================================================================================
Installing:
vsftpd           i386           2.0.5-21.el5              base           142 k

Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 142 k
Downloading Packages:
vsftpd-2.0.5-21.el5.i386.rpm                             | 142 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : vsftpd                                                   1/1
warning: /etc/vsftpd/vsftpd.conf created as /etc/vsftpd/vsftpd.conf.rpmnew

Installed:
  vsftpd.i386 0:2.0.5-21.el5                                                   

Complete!
[root@localhost apppackage]# ps -aux |grep vsftpd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
root      3455  0.0  0.0   5108   680 pts/0    S+   14:11   0:00 grep vsftpd

#启动进程
service vsftpd start

//修改客户端显示中文乱码
修改/etc/sysconfig/i18n文件
LANG="zh_CN.UTF-8"
改为
#LANG="zh_CN.UTF-8"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

//
[root@localhost apppackage]# ll -d /var/ftp
drwxr-xr-x 4 root root 4096 12-28 14:11 /var/ftp
[root@localhost apppackage]# ls /var/ftp/
companydata  pub
[root@localhost apppackage]# ll -d /var/ftp/companydata/
drwxr-xr-x 3 ftp root 4096 12-28 10:31 /var/ftp/companydata/
[root@localhost apppackage]# getsebool -a|grep ftp
getsebool:  SELinux is disabled
[root@localhost apppackage]# chkconfig --list |grep vsftpd
vsftpd          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
[root@localhost apppackage]# chkconfig --level 3 vsftpd on
[root@localhost apppackage]# chkconfig --list |grep vsftpd
vsftpd          0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:关闭  6:关闭
[root@localhost apppackage]#
[root@localhost apppackage]# service vsftpd stop
关闭 vsftpd:                                              [确定]
[root@localhost apppackage]# service vsftpd start
为 vsftpd 启动 vsftpd:                                    [确定]
[root@localhost apppackage]#
//匿名登录FTP 可新建 上传 不可删除 修改


[root@localhost apppackage]# useradd -s /sbin/nologin 14001
[root@localhost apppackage]# useradd -s /sbin/nologin admin
[root@localhost apppackage]# passwd 14001
Changing password for user 14001.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost apppackage]# passwd admin
Changing password for user admin.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost apppackage]#


[root@localhost ~]# ll -d /var/ftp
drwxr-xr-x 4 root root 4096 12-28 15:25 /var/ftp
[root@localhost ~]# ll -d /fuao
drwxrwxrwx 32 root root 4096 12-27 15:36 /fuao
[root@localhost ~]# ll -d /fuao/14001
drwxr-xrwx 2 admin admin 4096 12-27 11:18 /fuao/14001
[root@localhost ~]# chmod 755 /fuao/14001
[root@localhost ~]# ll -d /fuao/14001
drwxr-xr-x 2 admin admin 4096 12-27 11:18 /fuao/14001
[root@localhost ~]# service vsftpd restart

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO:禁止匿名用户登录
local_enable=YES:允许本地用户登录
local_root=/var/www/html:设置本地用户的根目录为/var/www/html
chroot_list_enable=YES:激chroot功能
chroot_list_file=/etc/vsftpd/chroot_list:设置锁定用户在根目录中的列表文件

[root@localhost ~]# touch /etc/vsftpd/chroot_list
[root@localhost ~]# ll /etc/vsftpd
总计 20
-rw-r--r-- 1 root root    0 12-28 15:34 chroot_list
-rw------- 1 root root  125 2011-05-31 ftpusers
-rw------- 1 root root  361 2011-05-31 user_list
-rw------- 1 root root 4591 12-28 15:33 vsftpd.conf
-rwxr--r-- 1 root root  338 2011-05-31 vsftpd_conf_migrate.sh
[root@localhost ~]# vi /etc/vsftpd/chroot_list
14001
admin

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
# 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().
local_root=/fuao
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
anon_world_readable_only=NO   --表示用户可以浏览FTP目录和下载文件(包括匿名用户)


/*********************************************************************
上面按演示是2个用户共用一个目录 现在情况是给每个员工自己定位他的ftp目录
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
#最后面加入
user_config_dir=/etc/vsftpd/userconfig
[root@localhost ~]# mkdir /etc/vsftpd/userconfig
[root@localhost ~]# ls /etc/vsftpd/user
userconfig/ user_list  
[root@localhost ~]# ll /etc/vsftpd
总计 28
-rw-r--r-- 1 root root   12 12-28 15:34 chroot_list
-rw------- 1 root root  125 2011-05-31 ftpusers
drwxr-xr-x 2 root root 4096 12-28 16:16 userconfig
-rw------- 1 root root  361 2011-05-31 user_list
-rw------- 1 root root 4630 12-28 16:16 vsftpd.conf
-rwxr--r-- 1 root root  338 2011-05-31 vsftpd_conf_migrate.sh
[root@localhost ~]# vi /etc/vsftpd/userconfig/14001
local_root=/fuao/14001
local_max_rate=60000
[root@localhost ~]# service vsftpd restart

测试登录 14001  根目录已经由/fuao变为/fuao/14001 上传大文件测试ok
创建组
[root@localhost ~]# groupadd ftpgroup
[root@localhost ~]# vi /etc/group
#修改组
[root@localhost ~]# usermod -g ftpgroup 14001
#修改无权限登录
[root@localhost ~]# usermod -s /sbin/nologin 14001
#修改根目录
[root@localhost ~]# usermod -d /fuao/14001 14001
[root@localhost ~]# vi /etc/passwd
#完整的创建目录
[root@localhost ~]# useradd -g ftpgroup -d /fuao/12002 -s /sbin/nologin  12002

[root@localhost ~]# useradd -g ftpgroup -d /fuao/12009 -s /sbin/nologin  12009
根目录不要建立到ftp目录下 测试了建立后根目录下有系统文件暴露不好

/******************************
#以后创建新的ftp用户步骤
[root@localhost ~]# useradd -g ftpgroup -s /sbin/nologin  12009
[root@localhost ~]# passwd 12009
[root@localhost ~]# vi /etc/vsftpd/userconfig/12009
local_root=/fuao/12009
local_max_rate=600000
或者
[root@localhost ~]# cp /etc/vsftpd/userconfig/14001 /etc/vsftpd/userconfig/12009
[root@localhost ~]# vi /etc/vsftpd/userconfig/12009
local_root=/fuao/12009
local_max_rate=600000
#添加授权ftp登录账户
[root@localhost ~]# vi /etc/vsftpd/chroot_list
14001
admin
12009
12002
测试不用重启vsftpd可以登录
********************************/

anonymous_enable=YES
local_root=/fuao/admin
local_max_rate=600000  600k
#max_clients=100
#max_per_ip=5
local_enable=YES
write_enable=YES
anon_upload_enable=YES                                                                              
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
listen=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES

//根目录匿名账户无法上传文件 不过发现也用不着 在里面建几个常用目录供上传下载就可以了