VSFTP服务(Linux)

ftp:文件传输协议,应用层协议

windows系统:server版的IIS中集成;servU实现;第三方ftp软件,fellzilla-server

linux系统:vsftpd;proftp

ftp服务监听TCP的21号端口,主要是建立会话链接;数据传输时使用20号端口,用于与客户端的数据传输

1.ftp的工作模式:

1)主动模式:ftp主动打开20号端口,向客户端进行数据传送

2)被动模式:ftp等待客户端链接,打开随即端口

2.ftp服务器安装:

  1) 关闭防火墙及SElinux:

                        systemctl stop firewalld;systemctl disable firewalld

                        setenforce 0;vim /etc/selinux/config-->SELINUX=disabled[该操作需要重启系统]

        2) 配置静态IP地址:

                        修改/etc/sysconfig/network-scripts/ifcfg-ens33文件

  3)安装vsftpd软件包:

      a)配置yum源

                                cd /etc/yum.repos.d/

                                mkdir bak

                                mv CentOS-* bak/

                                vim local.repo

                                

                                [local]

                                name=local

                                baseurl=file:///mnt

                                enabled=1

                                gpgcheck=0

                               

                                mount /dev/sr0 /mnt

                        b)安装软件包:

        yum install -y vsftpd  ftp【客户端软件包】

3.ftp安装目录[/etc/vsftpd]中文件:

  1)ftpusers:该文件中的所有用户不能访问FTP服务器,相当于ftp的黑名单

  2)user_list:该文件中的用户是否可以登录取决于/etc/vsftpd/vsftpd.conf文件中的配置项:userlist_deny=YES/NO;如果是YES,则文件中用户不可登录;如果为NO,则可登录。

  3)vsftpd.conf

作用范围 配置项 说明

匿名用户 anonymous_enable=YES 是否允许匿名用户访问

虚拟用户 anon_upload_enable=YES 是否允许匿名用户上传

anon_mkdir_write_enable=YES 是否允许匿名用户创建目录

anon_umask=022 设置匿名用户上传文件的权限掩码

anon_root=/var/ftp 设置你名用户根目录

anon_other_write_enable=YES 设置匿名用户的其他写入权限

本地用户 local_enable=yes 是否允许本地用户访问

local_umask=022 设置本地用户上传文件的权限掩码

local_root=$HOME 设置本地用户根目录,默认用户家目录

chroot_local_user=yes 是否禁锢宿主目录

local_max_rate=0 设置传输速度,0表示不限制

全局配置 listen=YES 设置IPv4监听,与IPv6监听不能同时开启

                         listen_ipv6=NO 设置IPv6监听

listen_address=0.0.0.0 设置监听地址

listen_port=21 设置监听端口号

write_enable=yes 设置是否开启所有写入权限

download_enable=yes 设置是否可以下载

userlist_enable=yes 设置是否启用user_list列表

userlist_deny=yes 设置user_list列表中用户是否能登录

allow_writeable_chroot=yes 允许对目录具有写入权限的用户锁定宿主目录

user_config_dir=/etc/vsftpd/vusers_dir 设置虚拟用用户权限目录

4. ftp配置:

  1)匿名访问:

    配置过程:ftp根目录:/var/ftp/

    默认安装完毕启动服务即可!

    systemctl start vsftpd

  匿名用户:ftp、anonymous,没有密码

anonymous_enable=YES

local_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

listen_ipv6=NO

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

若要匿名用户具有写入权限,需要设置本地/var/ftp/目录的权限为777

  chmod -R 777 /var/ftp/pub

访问验证:

  linux系统:

    ftp 192.168.100.1;ftp;enter

  windows系统:

    win+E-->ftp://192.168.100.1-->对话框

2)本地用户访问:

  配置过程:本地用户的家目录

useradd lisi

passwd lisi

 

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

allow_writeable_chroot=yes

验证访问:

  linux系统:

                                ftp 192.168.100.1;lisi;123

        windows系统:

                                win+E-->ftp://192.168.100.1-->对话框

3)虚拟用户访问: //非重点配置

配置过程:

  a)建立用户名与密码列表

  vim /etc/vsftpd/vusers.list

  user1

  123

  user2

  234

b)创建Berkeley数据库文件

cd /etc/vsftpd

db_load -T -t hash -f vusers.list vusers.db

chmod 600 vusers.*

c)创建虚拟用户的映射帐号并且创建访问根目录

useradd -d /var/vftproot -s /sbin/nologin vuser

chmod 755 /var/vftproot

d)为虚拟用户建立PAM认证文件

cd /etc/pam.d/

vim vsftpd.vu

#%PAM-1.0

auth       required pam_userdb.so db=/etc/vsftpd/vusers

account    required pam_userdb.so db=/etc/vsftpd/vusers

e)修改vsftpd.conf,添加虚拟用户的支持

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

chroot_local_user=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd.vu

tcp_wrappers=YES

allow_writeable_chroot=yes

guest_enable=yes

guest_username=vuser

f)可以为不同的虚拟用户设置不同的权限:

cd  /etc/vsftpd/

vim vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir

systemctl restart vsftpd

mkdir /etc/vsftpd/vusers_dir

vim user1

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

touch user2

说明:以上设置可以实现,user1可下载可上传;user2只能下载;加入要设置不同虚拟用户登录后在不同的根目录中,需在权限目录中对应的文件下写入:local_root=目录

5.ftp服务器登录说名:

2xx或者3xx开头,说明操作成功,或者登录成功

4xx或者5xx开头,说明操作失败,或者登录失败

 

命令补充:

w:查看正在连接系统的用户;

last:查看登录成功但是已经断开连接的用户。

lastb:查看尝试登录系统但是没有成功的用户!

 

上一篇:FTP 共享资源库系统资源


下一篇:浅谈std::enable_shared_from_this