FTP:File Transfer Protocol :文件传输协议。

监听在 :21/tcp   但是也不全是监听在21/tcp端口。
 
ftp:文件共享服务 ,能够将一个主机的文件共享给其他主机;工作在
 
应用层 。 
  NFS:Network File System  RPC:Remote Procedure Call,远程过
 
程调用;能够让位于不同主机上的两个进程能够基于二进制格式实现数
 
据通信的。
Samba:CIFS/SMB
 
FTP:tcp,两个连接
    命令连接或控制连接         
    数据连接
         主动模式:20/tcp    ftp的服务器端主动连接客户端
         被动模式:端口随机
    数据传输模式(自动模式):
           二进制
           文本
          ftp server -->ftp client
数据在互联网上的类型:
结构化数据
半结构化数据
非结构化数据 
 
 
服务器端程序:
        wu-ftpd
        vsftpd:Very Secure ftp Daemon
        proftpd
        pureftpd
        Filezilla
Windows的ftp程序:
                Serv-u
 
客户端程序:
      CLI:命令行格式
          ftp 
          lftp
      GUI:图形格式
          gftpd
          FlashFXP
          Cuteftp
          Filezilla
 
vsftpd:
      /etc/vsftpd:配置文件目录
      /etc/init.d/vsftpd:服务脚本
      /usr/sbin/vsftpd:主程序
 
基于PAM实现用户认证:
       /etc/pam.d/*
       /lib/security/*
       /lib64/security/*
       支持虚拟用户
vsftpd:
  /var/ftp
 
 
下载启动ftp:
先下载yum配置文件
# wget ftp://172.16.0.1/pub/gls/server.repo -O 
 
/etc/yum.repos.d/server.repo
# yum install vsftpd
接下来启动服务:
# service vsftpd start
# chkconfig vsftpd on
在windows客户端匿名登陆ftp:
 
 

ftp_ftp

 

添加用户hadoop登陆ftp:

# useradd hadoop

# echo "hadoop" | passwd --stdin hadoop

 

ftp_ftp_02

 

上传文件fstab:

 

ftp_ftp_03

 

ftp:系统用户

    匿名用户-->系统用户:anonymous_enable

    系统用户:local_enable

    虚拟用户 -->系统用户

anonymous:匿名

 

/var/ftp:ftp用户的家目录

     匿名用户访问目录

ftp的配置文件:启用指令时,其前面不能有空白字符
/etc/vsftpd/vsftpd.conf:
anonymous_enable=YES|NO :是否允许匿名用户访问
local_enable= YES|NO : 是否开放系统用户
anon_upload_enable=YES|NO:是否允许匿名用户上传文件     匿名用
 
户的相关功能最好不要开放,有危险。
xferlog_enable=YES :是否打开传输日志,表示下载或上传的文件是
 
否上传到日志里面去了
xferlog_file=/var/log/vsftpd.log  :打开这个才能记录日志;和上
 
面的一起打开才生效
 
例子:
1.上传文件fstab
 

ftp_ftp_04

 

 

查看日志:

# tail /var/log/vsftpd.log

 

ftp_ftp_05

 

 

hown_uploads=YES :用户上传文件完成后是否把他的属主,属组改为其

 

他用户

chown_username=whoever:改为谁

chroot_list_enable=YES :表示开始禁锢用户于其家目录下

chroot_list_file=/etc/vsftpd/chroot_list:把禁锢的用户放

 

在/etc/vsftpd/chroot_list文件中   启动此功能时,这两项要同时启

 

禁锢所有用户于其家目录下时:在/etc/vsftpd/vsftp.conf中添加

 

chroot_local_user=YES

 

write_enable  =  YES|NO :系统用户(本地用户) 是否能上传文件

 

chroot:禁锢用户于其家目录下

 

文件服务权限:文件系统权限*文件共享权限

 

 

 

守护进程:

    独立守护

    瞬时守护

         由xinetd代为管理

守护进程:
    独立守护
    瞬时守护
         由xinetd代为管理
 
vsftpd:
     max_clients=#:最多允许多少客户端同时连接进来
     max_per_ip=#:每一个IP地址最多允许发起几个连接请求
 
安全通信方式:
        ftps:ftp+ssl/tls
        sftp:OpenSSH,SubSystem,sftp(SSH)
 
 
配置vsftpd支持ftps的功能:
首先创建CA:
 

ftp_ftp_06

 

 

创建私钥:

 

ftp_ftp_07

 生成证书,颁发申请:

 

ftp_ftp_08

签署:

 

ftp_ftp_09

要想vsftpd使用这个证书:

打开/etc/vsftpd/vsftpd.conf在里面添加以下内容:

 

ssl_enable=YES

ssl_sslv3=YES

ssl_tlsv1=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt

rca_private_key_file=/etc/vsftpd/ssl/vsftpd.key

然后重启服务即可

vsftpd:PAM(手动定义配置文件)

    匿名

    本地

    虚拟用户

 

 

基于MYsql数据库和对应的表中的字段来完成对用户认证的

 

1、事先安装好开发环境和mysql数据库;

 

# yum -y install mysql-server mysql-devel

# yum -y groupinstall "Development Tools" "Development Libraries"

 

2.安装pam_mysql-0.7RC1

lftp 172.16.0.1/pub/Sources/vsftpd

get pam_mysql-0.7RC1.tar.gz 

# tar xf  pam_mysql-0.7RC1.tar.gz

# cd  pam_mysql-0.7RC1

# ./configure --with-mysql=/usr --with-openssl

# make

# make install

二、创建虚拟用户账号 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) -> ); mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'vsftpd'; mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'vsftpd'; mysql> flush privileges;

 

ftp_ftp_10

 

ftp_ftp_11

 

ftp_ftp_12

2、添加测试的虚拟用户

 

根据需要添加所需要的用户,需要说明的是,这里将其密码采用明文格式存储,原因是pam_mysql的password()函数与MySQL的password()函数可能会有所不同。

insert into users(name,password) values('tom',password('redhat')),('jerry',password('redhat'));

 

mysql> insert into users(name,password) values('tony','redhat'),('peter','redhat');

三、配置vsftpd

 

1.建立pam认证所需文件

 

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

添加如下两行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

 

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

 

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

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

#chmod go+rx /var/ftproot

 

请确保/etc/vsftpd/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客户端工具登录验正