vsftpd文件共享服务器

linux文件共享服务器,有三种:

1.工作在应用层的ftp服务器;

2.工作在linux系统内核的nfs服务器,由sun开发。不能跨windows平台,只能用于linux和unix之间。类似于windows的ntfs文件共享服务器。

3.跨windows平台的samba服务器,因为它在linux实现了CIFS协议(windows的smb协议)。

文件存储有三种协议:DAS,NAS,SAN。

NAS,SAN用于共享存储。

linux的samba和windows的smb(ntfs)共享文件服务器用的就是NAS,基于CIFS或SMB协议,用于文件共享。

SAN,跨级别共享。

 

FTP:File Transfer Protocol,基于应用层协议:tcp,21端口;C/S架构。

FTP的数据:

  1.命令连接:文件管理类命令,持久性连接,始终在线。

  2.数据连接:数据传输,按需创建及关闭的连接。

    数据传输格式:文本传输和二进制传输。图片使用二进制传输格式。因此数据传输格式,是根据文件格式而定。

    主动连接:由服务器创建连接。

      命令连接:由clintt随机一个端口连接server的21端口

      数据连接:server的20/tcp连接client的命令连接端口+1的端口

    被动连接:由客户端创建连接。常用连接。    

      命令连接:由clintt随机一个端口连接server的21端口

      数据连接:client的命令连接端口+1的端口连接server的随机端口。server的随机端口,由命令连接时确定。

FTP的C/S架构: Server服务器的FTP软件有:wu-ftpd,proftpd,pureftp,vsftpd(very secure ftpd),ServU,filezilla-server

  Client端的FTP工具有:ftp,lftp(lftpget),wget,curl,filezilla,gftp(linux gui开源),商业软件(flashfxp,cuteftp)

FTP的响应码:1xx:信息,2xx:成功类的状态码,3xx:提示需进一步提供补充类信息的状态码,4xx:客户端错误,5xx:服务端错误

FTP的用户认证:

  虚拟用户:仅用于访问某特定服务(如mysql,ftp)中的资源。存放在文件或数据库中。

    nsswitch:network service switch,名称解析框架。模块位置:/lib64/libnss*,/usr/lib64/libnss*。配置文件位置:/etc/nsswitch.conf

    pam:pluggable authentication module插入式认证模块,用户认证框架。模块位置:/lib64/security/。配置文件位置:/etc/pam.conf,/etc/pam.d/*

  系统用户:早期,ftp用户认证所使用的用户是linux的系统用户。现在既可使用linux用户,也可使用虚拟用户。虚拟用户也要映射系统用户!

 

FTP服务器安装CENTOS6.8:yum -y install vsftpd

  查看vsftpd安装了哪些文件:rpm -ql vsftpd | less

  用户认证配置文件:/etc/pam.conf,/etc/pam.d/*

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

  配置文件目录:/etc/vsftpd

    主配置文件:/etc/vsftpd/vsftpd.conf

    控制哪些用户可登录ftp:/etc/vsftpd/ftpusers,/etc/vsftpd/user_list

  主应用程序:/usr/sbin/vsftpd

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

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

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

  启动vsftpd:service vsftpd start

  防火墙:iptables -L -n

 

编辑vsftpd配置文件:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vim  /etc/vsftpd/vsftpd.conf

匿名用户配置:

  是否启用匿名用户:anonymous_enable=YES,默认启用

  匿名用户是否可以上传文件:anon_upload_enable=YES,默认被注释

  匿名用户是否可以创建文件:anon_mkdir_write_enable=YES,默认被注释

    修改某用户对某文件夹的权限:setfacl -m u:ftp:rwx 某文件夹

  匿名用户是否有写权限(如删除文件):anon_other_write_enable=YES,默认被注释

系统用户配置:

  是否启动系统用户:local_enable=YES

  系统用户是否有写权限:enable_user=YES,默认开启

  系统用户默认的umask:local_umask=022

  锁定所有系统用户在其家目录,即禁止访问其它人的家目录:chroot_local_user=YES

  锁定文本中指定的系统用户在其家目录:chroot_local_user=YES,chroot_list_file=/etc/vsftpd/chroot_list

目录信息:dirmessage_enable=YES

  创建目录信息,在相应的目录下创建.message

日志:

  是否启用传输日志:xferlog_enable=YES

  是否启用标准的传输日志格式:xferlog_std_format=YES

  指定日志文件位置:xferlog_file=/var/log/xferlog

是否改变上传文件的属主:

  chown_uploads=YES,默认被注释

  chown_username=whoever

用户的空闲会话超时时间:edle_connection_timeout=120

数据连接超时时间:data_connection_timeout=YES

是否强制启动ascii文本上传下载:ascii_upload_enable=YES,ascii_download_enable=YES,建议不启用,将它注释掉

欢迎信息:ftp_banner=welcome message

vsftpd使用pam完成用户认证:pam_service_name=vsftpd

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

  user_list_enable=YES,此项启用以后,在/etc/vsftpd/ftpusers中的用户,将拒绝登录。即YES,启用黑名单。

  user_list_deny=YES|NO,YES表示启用黑名单,文件中的用户列表属于黑名单;NO启用白名单。默认文件/etc/vsftpd/user_list

连接限制:

  max_clients:最大并发连接数

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

传输速率:

  anon_max_rate:所有匿名用户总和的最大传输速率,单位“字节/秒”

  local_max_rate:所有系统用户总和的最大传输速率,单位“字节/秒”

 

虚拟用户:所有的虚拟用户会被统一映射 为一个指定的系统帐号,访问的共享位置即为此系统帐号的家目录。

  各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定。

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

    文件:奇数行为用户,偶数行为密码。此文件需要被编码为hash格式。不可直接读。具每增加一个用户会重新编码一次。

    关系型数据库中的表中:即使查询数据库完成用户认证。如mysql库,此时pam要依赖于第三方pam-mysql,要安装此依赖

      yum install pam_mysql

 

示例:


一、安装所需要程序

1、安装mysql和pam_mysql

# yum -y install mysql-server mysql-devel pam_mysql

注意:pam_mysql由epel源提供。

二、创建虚拟用户账号

1.准备数据库及相关表

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

mysql> create database vsftpd;

mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.magedu.com';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'www.magedu.com';
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('magedu1',password('magedu'));
mysql> insert into users(name,password) values('magedu2',password('magedu'));


三、配置vsftpd

1.建立pam认证所需文件

#vi /etc/pam.d/vsftpd.mysql
添加如下两行
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.magedu.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/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=NO
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客户端工具登录验正
# ftp localhost

 

五、配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

1、配置vsftpd为虚拟用户使用配置文件目录

# vim vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config

2、创建所需要目录,并为虚拟用户提供配置文件

# mkdir /etc/vsftpd/vusers_config/
# cd /etc/vsftpd/vusers_config/
# touch tom jerry

3、配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。
anon_upload_enable={YES|NO}
anon_mkdir_write_enable={YES|NO}
anon_other_write_enable={YES|NO}

 

 

客户端工具:ftp,lftp,wget,curl

# lftp -u 用户名 主机名

# lftp -u 用户名,密码  主机名

多线程并发下载客户端工具:axel

 

windows客户端工具:filezilla,flashFXP

ftp协议是明文

ftps基于ssl

sftp基于ssh

 

 

 

 

 

 

 

 

  

 

posted on 2018-04-01 10:43  myworldworld  阅读(376)  评论(0)    收藏  举报

导航