vsftpd文件传输服务器

                    (提供文件上传或者下载的服务器)
1.先挂载光盘
mount /dev/cdrom /media/
mount -t vfat /dev/sda1(先可以用fdisk -l 命令查看U盘的块号)  /mnt
可以编写fstab文件让开机之后自动挂载进去
 vim /etc/fstab
/dev/cdrom(要挂载的东西<源>) /media(挂载到那里去<目的>)iso9660(什么格式<光盘的格式> defaults()  0() 0()
 
2.编辑本地yum文件
vim /etc/yum.repos.d/rhel-debuginfo.repo
 
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///media/Server/(本地的路径)  
enabled=1(为1则是打开仓库,为0则是关闭仓库)
gpgcheck=1(公钥值)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
编辑完成保存退出
 
3.用yum安装vsftpd服务器
yum -y install vsftpd*
用rpm包安装
 cd /media/Server
 rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm 
 
&&&&&&&&&&&&&&&&&&&&&&&ONE:匿名访问&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
4.修改vsftpd的配置文件
vim /etc/vsftpd/vsftpd.conf
########################匿名访问且ftp的根目录是默认的目录的基本配置参数########################
12 anonymous_enable=YES  //允许匿名用户访问(yes,为允许,no为不允许)
15 local_enable=NO //是否禁用本地用户(设置为no是表示禁用,yes表示不禁用)
18 write_enable=YES //允许开放写的权限
22 anon_umask=022 //设置匿名用户上传建立文件时的权限掩码
27 anon_upload_enable=YES //允许匿名上传文件
31 anon_mkdir_write_enable=YES //允许匿名用户创建目录
35 dirmessage_enable=YES //用户切换进入目录时显示.message(如果存在)文件的内容
39 xferlog_enable=YES //(开启xferlog日志,默认记录到/var/log/xferlog)
42 connect_from_port_20=YES //连接控制端口为20
56 xferlog_std_format=YES //启用标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式
109 listen=YES  //是否以独立运行的方式监听服务
116 pam_service_name=vsftpd  //设root置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)
117 userlist_enable=NO//未启用本地用户时,可以将用户列表功能禁用
118 tcp_wrappers=YES //是否开启tcp_wrappers主机访问控制
 
&&***可新添加的你们用户的设置值***&&
anon_world_readable_only=YES(仅允许匿名用户具有下载可读文件的权限)
anon_other_write_enable=YES //是否允许匿名用户有其它写入权限,如对文件改名,覆盖以及删除(此选项慎用)
####################################################################################
5、开启vsftpd的服务器
[root@localhost ~]# service vsftpd start
 vsftpd 启动 vsftpd:                                    [确定]
 客户端直接在浏览器输入ftp://(Linux服务器的IP)192.168.1.1
 ** 如果想让匿名用户新建文件和上传文件则必须把默认根目录的宿主改为ftp
 **chown ftp /var/ftp/pub(把宿主目录改为对应的系统用户ftp)
   chmod 755 /var/ftp/pub 
 
6、修改vsftpd配置文件
vim /etc/vsftpd/vsftpd.conf
#################建立匿名访问ftp的根目录是自己创建目录的配置参数########################
(基本参数包括在内)
anon_root=/gx      //anon_root 针对匿名用户
local_root=/gx    //local_root 针对系统用户
chroot_local_user=YES //是否将FTP本地 用户禁锢在宿主目录中
no_anon_password=YES  //允许匿名访问不需要密码(加也可以,不加也可以)
###########################################################################
7、重启vsftpd服务
[root@localhost pu]# service vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
mkdir /gx
[root@localhost /]# cd /gx
[root@localhost gx]# mkdir pu
在/gx目录下面新建pu目录
在/gx/pu目录下面新建目录和文件
touch 1 2 3 
mkdir q1 q2
然后给目录赋予权限
chmod 755 /gx         $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
chown root /gx      $$$$   特别注意:                                   $$$$
chmod 777 /gx/pu    $$$$        匿名用户是不允许根目录可以被write的      $$$$
                      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
客户端直接在浏览器输入ftp://(Linux服务器的IP)192.168.1.1 
进入pu文件夹里面才能实现上传下载改名
&&&&&&&&&&&&&&&&&&&&&&&ONE:匿名访问&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
&&&&&&&&&&&&&&&&&&&&&&&TWO:本地用户访问&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
本地用户访问可结合 ftpusers文件和user_list文件
ftpusers文件:该文件中包含的用户帐户将被禁止登入vsftpd服务器,不管用户是不是在user_list文件
出现
vi /etc/vsftpd/ftpusers (进去看看那些用户是被禁止的)
 
user_list文件:该文件中包含的用户帐户可能被禁止登入vsftpd服务器,也可能被允许登入,具体要看
userlist_enable(是否启用user_list用户列表文件)的配置(配置成YES,则启用,NO则不启用),当
userlist_enable=YES,之后看userlist_deny的配置(为YES则仅禁止用户列表文件的用户账号登入,为
NO则仅用户列表文件的用户账号登入)
vi /etc/vsftpd/user_list(可以在里面添加用户)
 
8、修改vsftpd的配置文件
vim /etc/vsftpd/vsftpd.conf
##################################本地用户访问且ftp的根目录是默认的目录的基本配置参数###############
12 anonymous_enable=NO  //允许匿名用户访问(yes,为允许,no为不允许)
15 local_enable=YES//是否禁用本地用户 (设置为no是表示禁用,yes表示不禁用)
18 write_enable=YES //允许开放写的权限
22 local_umask=022 //设置用户上传建立文件时的权限掩码
35 dirmessage_enable=YES //用户切换进入目录时显示.message(如果存在)文件的内容
39 xferlog_enable=YES //(开启xferlog日志,默认记录到/var/log/xferlog)
42 connect_from_port_20=YES //连接控制端口为20
56 xferlog_std_format=YES //启用标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式
81 ascii_upload_enable=YES //允许用户使用Ascii码格式上传文件
82 ascii_download_enable=YES //允许用户使用Ascii码格式下载文件
109 listen=YES  //是否以独立运行的方式监听服务
116 pam_service_name=vsftpd  //设root置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)
117 userlist_enable=NO//是否启用user_list用户列表文件
118 tcp_wrappers=YES //是否开启tcp_wrappers主机访问控制
chroot_local_user=YES //是否将FTP本地 用户禁锢在宿主目录中
max_clients=20 //限制并发客户连接数最多为20个
max_per_ip=2  //限制来自同一个IP的客户连接数为最多2个
local_max_rate=102400 //本地下载、上传限速为100KB/s
pasv_enable=YES //允许被动模式连接
pasv_min_port=24500 //设置用于被动连接的服务器最小端口号
pasv_max_port=24600 //设置用于被动连接的服务器最大端口号
connect_from_port_20=YES //允许服务器主动模式(从20端口建立数据连接)
download_enable=YES //是否允许下载文件(建立仅限于浏览和上传的设置为NO)
#############################################################################
         
第一种: userlist_enable=NO
那必须在服务器上面新建用户
useradd li
passwd li
客户端登入的时候需要输入用户名和密码访问
 
第二种:userlist_enable=YES
结合userlist_deny用
这种情况需在基本配置文件里面再添加以下配置
userlist_enable=YES
userlist_deny=YES(禁止用户列表文件的用户账号登入)
这种情况
user_list文件里面的用户是不能登入的,必须创建用户登入
例如:user_list文件里面的用户adm
给adm添加密码 passwd adm, 此用户是不允许登入的
新建的li用户是可以登入的
另外的情况
userlist_enable=YES
userlist_deny=NO(只能用户列表文件的用户账号登入)
user_list文件里面的用户adm能登入,新建的li用户则不能登入
客户端用IE登入    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
               $$$$    ftp://用户@ip                                $$$$$$$
               $$$$   不加用户,默认是以匿名用户访问的,这是ie的问题 $$$$$$$
                  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
在输入用户名和密码 
 
可以在vi /etc/vsftpd/user_list添加
anonymous这个用户 然后保存退出之后
客户端用IE就直接输入  ftp://ip  然后输入用户名和密码  
 
##################################建立本地用户访问ftp的根目录是自己创建目录的配置参数###############
(基本参数包括在内)
local_root=/gx    //local_root 针对系统用户
#############################################################################
9、重启vsftpd服务
[root@localhost pu]# service vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
mkdir /gx
[root@localhost /]# cd /gx
[root@localhost gx]# mkdir pu
在/gx目录下面新建pu目录
在/gx/pu目录下面新建目录和文件
touch 1 2 3 
mkdir q1 q2
然后给目录赋予权限
chmod 755 /gx         
chown root /gx      
chmod 777 /gx/pu
客户端直接在浏览器输入ftp://(Linux服务器的IP)192.168.1.1 
进入pu文件夹里面才能实现上传下载改名
&&&&&&&&&&&&&&&&&&&&&&&TWO:本地用户访问&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
 
&&&&&&&&&&&&&&&&&&&&&&&THREE:虚拟用户访问&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1、需要安装vsftpd和db4
yum -y install vsftpd*
yum -y install db4* (db4-utils-4.3.29-10.el5.i386.rpm )
vsftpd服务的虚拟用户数据库是使用Berkeley DB格式的数据库文件。建立该数据库文件需要用到db_load
命令工具,所以需要安装db4-utils-4.3.29-10.el5.i386.rpm软件包
 
2、首先建立文本格式的用户名和密码列表文件 (奇数行为用户名,偶数行为上一行的用户的密码)
cd /etc/vsftpd/
 vi vusers.list(这个名字随便取,文件在/etc/vsftpd/目录下即可)
1 li
2 123
3 liu
4 456
写完后保存退出
 
3、然后用db_load工具将列表文件转化为DB数据库文件
[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[root@localhost vsftpd]# file vusers.db (检查是否转换成功)
vusers.db: Berkeley DB (Hash, version 8, native byte-order)   
db_load -T(转换) -t hash(指定读取数据文件的基本方法) -f vusers.list(刚才的列表文件)vusers.db(转化为数据库文件)
 
4、建立ftp访问的根目录及虚拟用户对应的系统账号
[root@localhost vsftpd]# mkdir /var/ftproot
[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
  提示这样的没有错额,如果你只敲第二条命令就不会提示上面的信息
[root@localhost vsftpd]# chown virtual:virtual /var/ftproot/(更改宿主)
[root@localhost vsftpd]# chmod 755 /var/ftproot/(更改权限)
mkdir /var/ftproot(这个新建的目录就是ftp访问的目录路径)
useradd -d(指定用户的宿主目录) /var/ftproot -s(指定用户的登入shell) /sbin/nologin(此账号不能登入系统) virtual(账号名,可以随便取)
 
5、建立pam认证文件
 vi /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth      required   pam_userdb.so    db=/etc/vsftpd/vusers(指定刚才新建的列表文件的数据库文件。后缀名。db可以不用写)
account   required   pam_userdb.so    db=/etc/vsftpd/vusers
 
6、修改配置文件
vi /etc/vsftpd/vsftpd.conf
#############################虚拟用户访问的配置文件############################
12 anonymous_enable=NO  //允许匿名用户访问(yes,为允许,no为不允许)
15 local_enable=YES //是否禁用本地用户(设置为no是表示禁用,yes表示不禁用)
18 write_enable=YES //允许开放写的权限
22 anon_umask=022 //设置匿名用户上传建立文件时的权限掩码
35 dirmessage_enable=YES //用户切换进入目录时显示.message(如果存在)文件的内容
39 xferlog_enable=YES //(开启xferlog日志,默认记录到/var/log/xferlog)
42 connect_from_port_20=YES //连接控制端口为20
56 xferlog_std_format=YES //启用标准xferlog的日志格式,若禁用此项,将使用vsftpd自己的日志格式
109 listen=YES  //是否以独立运行的方式监听服务
117 userlist_enable=YES//未启用本地用户时,可以将用户列表功能禁用
118 tcp_wrappers=YES //是否开启tcp_wrappers主机访问控制
guest_enable=YES //启用用户映射功能
guest_username=virtual //将映射用户指定为virtual(我们之前创建的虚拟用户)
pam_service_name=vsftpd.vu  //设root置用于用户认证的PAM文件位置(/etc/pam.d/vsftpd.vu 目录中对应的文件名)
local_root=/var/ftproot //指定ftp的路径(可以自己写目录路径,要注意权限和宿主)
######################################################################################
重启服务
这样配置之后 客户端通过IE访问ftp的时候输入用户名和密码即可
可以登入ftp可以下载,不能上传(如想上传需对配置文件修改可以上传的权限额,这里就不介绍了,因为
                               我们重点介绍针对不同的用户给不同的权限)
 
7、为不同的虚拟用户建立独立的配置文件(分配不同的权限)
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# mkdir chroot_list (这个文件名字随便取,文件的作用就是分配权限,目录的路径要清楚)
[root@localhost vsftpd]# cd chroot_list/
然后再/etc/vsftpd/chroot_list目录下面为每个用户建立文件,并在新建立的文件里面写相应的权限
[root@localhost chroot_list]# vi li(为li用户新建文件,li用户是存在的虚拟用户)
anon_upload_enable=YES(为之前建立的li用户设置下载的权限)
[root@localhost chroot_list]# vi liu                
anon_upload_enable=YES
anon_mkdir_wirte_enable=YES(为之前建立的的liu用户设置上传和下载的权限)
 
8、然后再修改配置文件,在里面添加一句
vi /etc/vsftpd/vsftpd.conf
                                        
user_config_dir=/etc/vsftpd/chroot_list //指定给用户配置权限目录的位置
 
9、重启服务
[root@localhost vsftpd]# service vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
 
客户端直接在浏览器输入ftp://(Linux服务器的IP)192.168.1.1 
然后输入不同的用户,则享受不同的权限
 
 
 
建议公司用虚拟用户做vsftpd,因为虚拟用户是在Linux系统中不存在的,这样增强系统的安全性
vsftpd配置文件的更多参数,大家感兴趣可以自己去配置,我写的都是一些基本的配置参数
 
#########################################################################
主配置文件:/etc/vsftpd/vsftpd.conf
匿名权限
anon_root 指定匿名用户访问目录
anonymous_enable 是否启用匿名访问
anon_mkdir_write_enable   是否允许匿名用户创建目录的权限
anon_other_write_enalbe 是否允许匿名用户其他的写入权限
anon_max_rate    允许匿名用户最大的传输速率
anon_upload_enable  是否允许匿名用户上传
anon_umask=022  匿名用户上传文件的默认权限
 
本地用户权限
local_root 指定本地用户登陆后的宿主目录
chroot_local_user 是否将用户禁锢在宿主目录中
local_max_rate  允许本地用户的传输速率
local_mkdir_write_enable 是否允许本地用户创建目录的权限
local_other_write_enable 是否允许本地用户其他的写入权限
local_enable 是否启用本地用户访问
local_umask 本地用户上传文件的默认权限
 
全局配置
listen=yes 是否以独立的方式监听服务
listen_port=21 设置FTP的侦听端口
write_enable 是否允许写入
download_enable 是否允许下载
dirmessage_enable 用户切换目录时显示.message文件
xferlog_enable  启用xferlog日志
xferlog_std_format 启用标准的xferlog日志
connect_from_port_20 允许服务器从20号端口建立主动连接
pasv_enable 允许服务器被动连接
pasv_max_port   设置用于被动连接的最大端口号
pasv_min_port   设置用于被动连接的最小端口号
pam_service_name 设置用于用户认证的pam文件的位置
userlist_enable  是否启用user_list列表文件
userlist_deny   是否禁user_list列表中用户帐号
max_clients  最多允许多少个客户端同时连接
max_per_ip   对来自同一IP的客户端,最多允许多少个并发连接
tcp_wrappers 是否启用TCP_wrappers主机访问控制
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
 
虚拟用户配置
guest_enable 是否启用用户映射功能
guest_username 将映射用户指定为某个系统用户
user_config_dir 指定虚拟用户配置目录位置
##############################################