码迷,mamicode.com
首页 > 其他好文 > 详细

文件服务器vsftp的配置

时间:2015-11-10 01:55:40      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:vsftpd

FTP(File Transfer Protocol,文件传输协议)是一个用于从一台主机到另一台主机传送文件的协议。FTP服务可以工作在主动模式和被动模式两种模式下。

  • 主动模式:ftp客户端通过一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接。这是控制连接。当控制连接建立完成后,进行数据连接,FTP服务器会用自己的20端口和客户端随机的TCP端口进行数据传输。

  • 被动模式:ftp客户端通过一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接。然后FTP服务器随机选择一个TCP端口,并用控制连接告诉客户端,客户端用另一个TCP端口连接。

Vsftp(Very secure FTP,非常安全的FTP)是一个基于GPL发布的类unix系统上使用的FTP服务器软件。

  1. vsftp的安装

    [root@lys ~]# yum install vsftpd 

  2. vsftpd 服务的启动,暂停,自动加载。

    [root@lys ~]# service vsftpd start

    [root@lys ~]# chkconfig vsftpd on

  3. 在启动vsftpd前,需要关闭selinux,并清空iptables规则。



用户认证:

虚拟用户:仅用于访问某特定服务中的资源,vsftpd支持将用户及密码保存在本地数据文件,数据库或LDAP中。

  nsswitch: network server switch, 名称解析框架

  配置文件:/etc/nsswitch.conf

  模块:/lib64/libnss*, /usr/lib64/libnss*

  pam: pluggable authentication module, 用户认证框架

  模块:/lib64/security/

  配置文件:/etc/pam.conf, /etc/pam.d/*

系统用户:以vsftpd所在主机中的/etc/passwd中的用户及密码作为认证用户来源

匿名用户:vsftpd 允许匿名用户登录

CentOS 6.5: vsftpd


用户认证配置文件:/etc/pam.d/vsftpd

服务脚本:/etc/rc.d/init.d/vsftpd

配置文件目录:/etc/vsftpd

主配置文件:vsftpd.conf

匿名用户(映射为ftp用户)共享资源位置:/var/ftp

系统用户通过ftp访问的资源的位置:用户自己的家目录

虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录

匿名用户的配置:

anonymous_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_ohter_write_enable=YES


系统用户的配置:

local_enable=YES

write_enable=YES

local_umask=022

禁锢所有的ftp本地用户于其家目录中:

chroot_local_user=YES

禁锢文件中指定的ftp本地用户于其家目录中:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

xferlog_enable=YES

xferlog_std_format=YES

xferlog_file=/var/log/xferlog

改变上传文件的属主:

chown_uploads=YES

chown_username=whoever

vsftpd使用pam完成用户认证,其用到的pam配置文件:

pam_service_name=vsftpd

是否启用控制用户登录的列表文件

userlist_enable=YES

userlist_deny=YES|NO

默认文件为/etc/vsftpd/user_list


连接限制:

max_clients: 最大并发连接数;

max_per_ip: 每个IP可同时发起的并发请求数;

传输速率:

anon_max_rate: 匿名用户的最大传输速率, 单位是“字节/秒”;

local_max_rate: 本地用户


虚拟用户:所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录;各虚拟用户可被赋予不同的访问权限;通过匿名用户的权限控制参数进行指定;

虚拟用户账号的存储方式:

文件:编辑文件

奇数行为用户名

偶数行为密码

此文件需要被编码为hash格式;

系型数据库中的表中:

即时查询数据库完成用户认证;

mysql库,pam要依赖于pam_mysql

# yum -y install pam_mysql


安装好vsftpd后,可以查看生成那些文件,主配置文件/etc/vsftpd/vsftpd.conf

技术分享

启动vsftpd服务,并查看端口。

技术分享

清空ip规则,并关闭selinux

[root@lys ~]# iptables -F

[root@lys ~]# getenforce 

Enforcing

[root@lys ~]# setenforce 0  临时关闭selinux

[root@lys ~]# vi   /etc/selinux/config  永久关闭selinux

SELINUX=disabled

在Windows客户端,进入命令行模式,使用ftp这个命令,来测试是否能匿名正常登录ftp服务器

技术分享

默认情况下,是允许匿名登录的。也可以通过linux主机来测试。

技术分享

新建一个ftpuser,通过系统用户来登录。

技术分享

发现系统可以随意切换目录。

ftp> ls

227 Entering Passive Mode (192,168,2,114,176,227).

150 Here comes the directory listing.

drwxr-xr-x    5 0        0            4096 Nov 02 21:10 ConsoleKit

-rw-r--r--    1 0        0            4439 Jul 16  2014 DIR_COLORS

-rw-r--r--    1 0        0            5139 Jul 16  2014 DIR_COLORS.256color

-rw-r--r--    1 0        0            4113 Jul 16  2014 DIR_COLORS.lightbgcolor

drwxr-xr-x    3 0        0            4096 Jul 24 07:50 NetworkManager

-rw-r--r--    1 0        0              45 Feb 12  2014 Trolltech.conf

drwxr-xr-x    4 0        0            4096 Nov 02 21:13 X11

drwxr-xr-x    3 0        0            4096 Nov 02 21:11 abrt

drwxr-xr-x    4 0        0            4096 Nov 02 21:16 acpi

-rw-r--r--    1 0        0              44 Nov 02 22:12 adjtime

-rw-r--r--    1 0        0            1512 Jan 12  2010 aliases

-rw-r--r--    1 0        0           12288 Nov 02 21:21 aliases.db

drwxr-xr-x    2 0        0            4096 Nov 02 21:17 alsa

drwxr-xr-x    2 0        0            4096 Nov 02 21:17 alternatives

-rw-------    1 0        0             541 Mar 30  2015 anacrontab

-rw-r--r--    1 0        0             148 May 14  2009 asound.conf

-rw-r--r--    1 0        0               1 Feb 19  2015 at.deny

drwxr-x---    3 0        0            4096 Nov 02 21:17 audisp


vsftpd+pam+mysql的实现(mysql,vsftp基于同一台linux主机)

1.安装mysql和pam_mysql,其中pam_mysql是由epel提供。

2.创建虚拟用户

3.创建保存用户名和密码的数据库和表

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to vsftpd@localhost identified by ‘123‘;

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by ‘123‘;

mysql> flush privileges;

mysql> use vsftpd;

mysql> create table users (

    -> id int AUTO_INCREMENT NOT NULL,

    -> name char(20) binary NOT NULL,

    -> password char(48) binary NOT NULL,

    -> primary key(id)

    -> );

2、添加测试的虚拟用户

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

mysql> insert into users(name,password) values(‘tom‘,password(‘magedu‘));

mysql> insert into users(name,password) values(‘jerry‘,password(‘magedu‘));


三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

2.修改vsftpd的配置文件,使其适应mysql认证

建立虚拟用户映射的系统用户及对应的目录

# useradd -s /sbin/nologin -d /var/ftproot vuser

# chmod go+rx /var/ftproot

请确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES


而后添加以下选项

guest_enable=YES

guest_username=vuser


并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql    // 系统用户将无法登录


四、启动vsftpd服务

# service vsftpd start

# chkconfig vsftpd on

查看端口开启情况

# netstat -tnlp |grep :21

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd 

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正,重启vsftpd服务后,输入用户名和密码报错,报错日志如下

技术分享

技术分享想很久都不知道怎么办,后来去查var/lib/mysql/mysql.sock,路径确实不存在,看到和mysql有关,我就去看mysql的配置文件

技术分享

发现mysql.sock在/tmp/目录下,接着我就把/tmp/mysql.sock和/var/lib/mysql/mysql.sock做了一个连接,。

[root@lys ~]# ln -sv /tmp/mysql.sock /var/lib/mysql/mysql.sock

`/var/lib/mysql/mysql.sock‘ -> `/tmp/mysql.sock‘

重启服务,再登录就正常了。(为什么不直接读取/tmp/mysql.sock,而是读取/var/lib/mysql/mysql.sock???有没有大神知道是为什么?)

技术分享






文件服务器vsftp的配置

标签:vsftpd

原文地址:http://laoli110.blog.51cto.com/9136611/1711149

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!