FTP服务学习笔记之vsftpd安装和配置(2)

在redhat5部署FTP服务

实验环境介绍:

操作系统:Redhat5.8_X64bit

实验平台:VMware Workstation

一、基于匿名用户的FTP服务部署

1、匿名FTP

访问匿名的FTP服务器时不需要密码,只需要用户名"ftp"和"anonymous"。

2、安装vsftpd软件

#yum install vsftpd
#rpm -ql vsftpd

3、启动vsftpd服务

#service vsftpd start
#chkconfig vsftpd on

4、测试ftp服务是否可以访问

[[email protected] ~]# ftp 192.168.3.3
Connected to 192.168.3.3.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.3.3:root): ftp   //使用匿名用户登录(ftp或者anonymous)
331 Please specify the password.
Password:    -->密码“空”
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

5、调整匿名上传目录权限,并准备下载测试文件。

# ls -ld /var/ftp/pub/    -->查看修改前的权限
drwxr-xr-x 2 root root 4096Dec  5 2011 /var/ftp/pub/
# chown ftp /var/ftp/pub  -->将pub目录属主设置为ftp
You have new mail in/var/spool/mail/root
# ls -ld /var/ftp/pub/   -->确认修改后的权限
drwxr-xr-x 2 ftp root 4096Dec  5 2011 /var/ftp/pub/
# cp /etc/inittab /var/ftp/   -->复制一个文件到“/var/ftp/”目录,已提供下载测试使用。

6、修改vsftpd.conf配置文件,开放匿名用户访问、上传许可

# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES    //允许匿名用户访问
local_enable=NO       //若不需要启用本地用户,可将此配置项设为NO
write_enable=YES      //允许开放写权限
anon_umask=022        //设置匿名用户上传建立文件时的权限掩码
anon_upload_enable        //允许匿名上传文件
anon_mkdir_write_enable=YES    //允许匿名用户创建目录
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=NO      //未启用本地用户时,可以将用户列表功能禁用
tcp_wrappers=YES

7、重新启动vsftpd服务

#service vsftpd restart

8、在客户端访问FTP服务器(192.168.3.3),测试下载上传功能

[[email protected] ~]# ftp192.168.3.3    //登录vsftpd服务器
Connected to 192.168.3.3.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.3.3:root): ftp    //以匿名用户进行认证,密码可为空或任意字符
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls     //查看FTP根目录下的文件、目录列表
227 Entering Passive Mode (192,168,3,3,20,191)
150 Here comes the directory listing.
-rw-r--r--    1 0        0      1666 Nov 25 07:57 inittab
drwxr-xr-x    2 14        0        4096 Nov 25 07:57 pub
226 Directory send OK.
ftp> get inittab     //下载服务器中的inittab文件到本地
local: inittab remote: inittab
227 Entering Passive Mode (192,168,3,3,145,227)
150 Opening BINARY mode data connection for inittab (1666bytes).
226 File send OK.
1666 bytes received in 0.016 seconds (99 Kbytes/s)
ftp> cd pub  //切换到服务器中用于上传文件的目录
250 Directory successfully changed.
ftp> put install.log  //上传本地文件到服务器上
local: install.log remote: install.log
227 Entering Passive Mode (192,168,3,3,239,137)
150 Ok to send data.
226 File receive OK.
56895 bytes sent in 0.034 seconds (1.6e+03 Kbytes/s)
ftp> ls   //查看上传目录中的文件属性
227 Entering Passive Mode (192,168,3,3,149,233)
150 Here comes the directory listing.
-rw-------    1 14     50   56895Nov 26 13:04 install.log
226 Directory send OK.
ftp> quit  //断开FTP连接并退出
221 Goodbye.
[[email protected] ~]# ls -lh inittab  //查看下载到本地的文件
-rw-r--r-- 1 root root 1.7K Nov 26 21:03 inittab
 
如果只是下载文件,也可以使用wget工具,指定服务器地址及文件路径即可进行下载
[[email protected] ~]# wget ftp://192.168.3.3/inittab
--2015-11-26 21:22:29--  ftp://192.168.3.3/inittab
           => `inittab‘
Connecting to 192.168.3.3:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> SIZE inittab ... 1666
==> PASV ... done.    ==> RETR inittab ... done.
Length: 1666 (1.6K)
 
100%[===================>] 1,666   --.-K/s   in0s      
2015-11-26 21:22:29 (4.24 MB/s) - `inittab‘ saved [1666]

注意:由于匿名FTP根目录”/var/ftp/”的默认权限为755,因此不要将目录的属主更改为ftp,否则匿名访问时可能会报错”500 OOPS:vsftpd:refusing to run with writable anonymous root”,导致访问失败。

二、基于本地用户的FTP服务部署

vsftpd可以直接使用Linux系统的本地用户作为FTP用户,提供基于用户名和密码的登录验证。使用本地用户登录FTP服务器后,默认将位于自己的宿主目录中,且在宿主目录中拥有读写权限,并允许切换到其他目录。使用chroot_local_user配置项可以将本地用户禁锢在宿主目录中(不允许切换到其他目录下),使用local_root配置项可以将本地用户的ftp根目录设置为同一个文件夹。

下面配置一个基于本地用户并进行带宽、用户数限制的FTP服务器为例,操作步骤如下:

1、添加FTP测试用户(即本地用户),并准备下载测试文件。

[[email protected] ~]# useradd test1
[[email protected] ~]# passwd test1
[[email protected] ~]# ls -lh /etc/*.conf > /home/test1/etcconf.list

2、修改vsftpd.conf配置文件,开放本地用户。

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO  //若不需要启用匿名访问,可将此配置项设为NO
local_enable=YES    //允许本地用户访问
write_enable=YES    //允许开放写权限
local_umask=022     //设置本地用户上传建立文件时的权限掩码
chroot_local_user=YES  //为安全起见,建议将用户禁锢于宿主目录中
max_client=20        //限制并发客户连接数为最多20个
max_per_ip=2         //限制来自同一IP的客户连接数最多为2个
local_max_rate=102400   //本地用户下载、上传限速为100KB/s
chroot_local_user=YES   //允许被动模式并设置端口范围
max_clients=20
max_per_ip=2
local_max_rate=102400
pasv_enable=YES
pasv_min_port=24500
pasv_max_port=24600
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
:wq 保存退出

如果希望vsftpd服务只对特定的本地用户开放,可以使用userlist_enable、userlist_deny配置项并结合用户列表文件‘/etc/vsftpd/user_list‘实现。

例如:结合user_list文件配置仅允许本地用户test1访问vsftpd服务器。

#vim /etc/vsftpd/user_list
test1          //添加此行,并清空其他内容
#vim /etc/vsftpd/vsftpd.conf  //修改或添加以下两行配置项
userlist_enable=YES
userlist_deny=NO

3、重新启动vsftpd服务

[[email protected] ~]# service vsftpd restart

4、在客户端访问FTP服务器(192.168.3.3),测试下载及上传功能

[[email protected] ~]# ftp 192.168.3.3   //登录vsftpd服务器
Connected to 192.168.3.3.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.3.3:root): test1  //test1用户登录
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd   //查看当前目录
257 "/"
ftp> ls  //查看FTP根目录下的文件、目录列表
227 Entering Passive Mode (192,168,3,3,95,218)
150 Here comes the directory listing.
-rw-r--r--    1 0        0            2831 Nov 27 12:19 etcconf.list
226 Directory send OK.
ftp> get etcconf.list  //下载服务器中的etcconf.list文件到本地
local: etcconf.list remote: etcconf.list
227 Entering Passive Mode (192,168,3,3,95,248)
150 Opening BINARY mode data connection for etcconf.list (2831 bytes).
226 File send OK.
2831 bytes received in 0.00064 seconds (4.3e+03 Kbytes/s)
ftp> put install.log   //上传本地文件到服务器上
local: install.log remote: install.log
227 Entering Passive Mode (192,168,3,3,95,203)
150 Ok to send data.
226 File receive OK.
56895 bytes sent in 0.038 seconds (1.5e+03 Kbytes/s)
ftp> ls   //查看上传目录中的文件属性
227 Entering Passive Mode (192,168,3,3,95,250)
150 Here comes the directory listing.
-rw-r--r--    1 0        0            2831 Nov 27 12:19 etcconf.list
-rw-r--r--    1 502      502         56895 Nov 27 13:23 install.log
226 Directory send OK.
ftp>

三、建立基于虚拟用户的vsftpd服务

1、建立虚拟用户的用户名/密码数据

vsftpd服务的虚拟用户数据库时使用Berkeley DB格式的数据库。建立该数据库文件需要用到db_load命令工具。

[[email protected] ~]# yum install db4-utils 
//安装此包获得db_load命令

2、建立文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中的用户所对应的密码。

[[email protected] ~]# vim /etc/vsftpd/vusers.list  (文件名可以随便取)
mike     
123
john
456

3、然后用db_load工具将列表文件转化为DB数据库文件

[[email protected] ~]# cd /etc/vsftpd/
[[email protected] vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[[email protected] vsftpd]# file vusers.db   //查看文件类型
vusers.db: Berkeley DB (Hash, version 8, native byte-order)
[[email protected] vsftpd]# chown 600 /etc/vsftpd/vusers.*  //降低文件权限以提高安全性
db_load选项说明:
     -f:用于指定用户名/密码列表文件
     -T:允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
     -t hash:指定读取数据文件的基本方法
关于db_load命令的详细说明可参阅"cat /usr/share/doc/db4-utils-4.3.29/utility/db_load.html
"文件。

4、建立FTP访问的根目录及虚拟用户对应的系统账号

vsftpd虚拟用户需要有一个对应的系统用户账号(该账号无需设置密码及登录shell),该用户账号的宿主目录作为所有虚拟用户登录后的共同FTP根目录。

[[email protected] ~]# useradd -d /var/ftproot -s /sbin/nologin virtual //建立映射账号virtual
[[email protected] ~]# chmod 755 /var/ftproot/     //更改FTP根目录权限
[[email protected] ~]# ls -lh /boot >/var/ftproot/vutest.file  //建立测试文件

5、建立PAM认证文件

PAM配置文件主要用于为程序提供用户认证控制,vsftpd服务使用默认的PAM配置文件为“/etc/pam.d/vsftpd”,可以参考该文件的格式建立新的PAM配置文件,用于虚拟用户认证控制。

[[email protected] ~]# vim /etc/pam.d/vsftpd.vu  //添加下面几行内容
#%PAM-1.0
auth       required      pam_userdb.so db=/etc/vsftpd/vusers
account    required      pam_userdb.so db=/etc/vsftpd/vusers

注意:db指向的数据库文件vusers(省略.db扩展名)

6、修改vsftpd.conf配置文件,添加虚拟用户支持

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES       //使用虚拟用户需要启用本地用户
write_enable=YES
anon_umask=022     //设置虚拟用户所上传文件的默认权限掩码
guest_enable=YES     //启用用户映射功能
guest_username=virtual   //将映射用户指定为virtual
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu   //修改使用PAM文件位置
userlist_enable=YES
tcp_wrappers=YES

7、为不同的虚拟用户建立独立的配置文件

    通过前面几个步骤,实际上已经可以重新启动vsftpd并提供服务,使用虚拟用户账号可以登陆FTP服务器下载文件。本步骤将介绍为个别虚拟用户设置不同的访问权限,

1)、修改vsftpd.conf主配置文件,添加用户配置目录支持。

[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir  //添加此行配置项,指定用户配置目录位置

2)、为mike、john建立的配置目录文件

[[email protected] ~]# mkdir /etc/vsftpd/vusers_dir/   //创建用户配置目录
[[email protected] ~]# cd /etc/vsftpd/vusers_dir/
[[email protected] vusers_dir]# vim john    //为john用户建立独立的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
[[email protected] vusers_dir]# touch mike      //为mike用户建立空配置文件(无额外权限设置)

8、重新启动vsftpd服务

[[email protected] ~]# service vsftpd restart

9、使用虚拟用户账号访问FTP服务

在客户端使用虚拟用户mike、john分别登录FTP服务器进行下载、上传文件测试,结果如下:

  • 使用mike用户可以登录测试vsftpd服务器,并可以浏览、下载文件,但是无法上传文件。
  • 使用john用户可以登录vsftpd服务器,且可以浏览、下载文件,也可以上传文件。
  • 使用匿名用户或者其他系统用户时,将不能登录该vsftpd服务器。
时间: 2024-10-14 11:55:15

FTP服务学习笔记之vsftpd安装和配置(2)的相关文章

[转] Linux学习之CentOS(三十六)--FTP服务原理及vsfptd的安装、配置

本篇随笔将讲解FTP服务的原理以及vsfptd这个最常用的FTP服务程序的安装与配置... 一.FTP服务原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一,我们现在也一直有在用着FTP协议来进行各种文件的传输,FTP为我们提供了一种可靠的方式在网络上进行文件的共享 FTP是C/S架构的服务,拥有一个服务器端和一个客户端,FTP底层通过TCP协议来作为传输协议,所以FTP协议是一种可靠的文件

FTP服务学习笔记之基于MySQL+PAM的vsftpd虚拟用户

基于mysql+PAM的vsftpd虚拟用户配置 一.实验说明 操作系统:Redhat5.8_X64bit 实验平台:VMware Workstation 所需要的软件包:pam_mysql-0.7RC1.tar.gz 二.安装所需要程序 1.事先安装好开发环境和mysql数据库 # yum -y groupinstall "Development Tools" "Development Libraries" #yum -y install mysql-server

Linux: FTP服务原理及vsfptd的安装、配置

1.FTP 服务的安装# yum install -y vsftpd [[email protected] pub]# ls -l /etc/vsftpd/ total 20 -rw-------. 1 root root 125 Aug 3 2015 ftpusers -rw-------. 1 root root 361 Aug 3 2015 user_list -rw-------. 1 root root 5030 Aug 3 2015 vsftpd.conf -rwxr--r--. 1

Maven学习笔记一:安装和配置

一 Maven简介 Maven是基于项目对象模型(Project Object Model,POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目.由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的 比例在持续增长.

FTP服务学习笔记之ssl/tls安全认证配置(3)

在Redhat5.8_X64bit上配置 一.实验说明 操作系统:Redhat5.8_x64bit 实验平台:VMware Workstation 实验目的:配置ftp基于ssl/tls安全认证 二.实验步骤如下: 1.安装vsftpd #yum install vsftpd #rpm -ql vsftpd #service vsftpd start #chkconfig vsftpd on 2.配置CA #cd /etc/pki/CA #mkdir certs newcerts crl #to

tomcat学习笔记一:安装和配置

安装 配置环境: win7 + centos7虚拟机 安装步骤: 到http://tomcat.apache.org/下载最新的tomcat安装包(8.0.24) 移到对应的目录并解压 安装问题: 安装后需要能从win7中访问虚拟机的tomcat端口(8080),需要先进行配置 参考: http://blog.chinaunix.net/uid-22259244-id-394661.html 一分钟尝鲜: 启动tomcat:执行bin/catalina.sh start 查看运行日志:logs/

mesos 学习笔记1 -- mesos安装和配置

参考资料: 官方文档:http://mesos.apache.org/documentation 中文翻译:http://mesos.mydoc.io/ GitHub:https://github.com/apache/mesos/tree/master 董的博客:http://dongxicheng.org/category/apache-mesos/ 安装 下载mesos 参考:http://mesos.apache.org/documentation/latest/getting-star

MongoDB 学习笔记之 入门安装和配置

下载MongoDB: 下载解压即可使用. 为了启动方便和统一管理, 在Mongo根目录下建立/data, /logs, /conf文件夹. 在conf文件夹下建立mongodb.conf 文件,基本配置如下: #数据库数据存放目录 dbpath=/usr/local/mongodb/data #数据库日志存放目录 logpath=/usr/local/mongodb/logs/mongodb.log #以追加的方式记录日志 logappend = true #端口号 默认为27017 port=

【改自lg2lh】EZ-USB 68013 学习笔记--设备信息安装文件CyUSB.inf详细说明

首先要明白一个INF文件的基本结构:INF由节组成,即一个个段组成.每个段的功能不一样.(大部分书上把这个段叫作"节") [Version]段:主要用说明版本信息的. [Strings]段:字符串信息,用于常量定义,用于显示.凡在其他段中出现的%XXXX%(就是两个百分号夹着一组字母),则对应的就会在Strings段里对应着它的一个字符串. [SourceDisksNames]段:定义安装源文件所在磁盘,一般为1,表示在第一个磁盘.此节可无. [SourceDiskFiles]段:驱动