vsftpd服务的部署

前言

ftp介绍

ftp:file transfer proto
互联网中最老牌的文件传输协议,在90年代传输文件的时代非常流行,但是传输图片比较吃力,所以逐渐被apache取代。

实验步骤(vsftpd安装)

1.yum install vsftpd -y(安装软件)
2.关闭 selinux
3.关闭 firewalld
(同上篇博客的共享软件仓库实验)
4.systemctl start vsftpd(开启vsftpd服务)
5.systemctl enable vsftpd(设置开机启动)
测试安装发布:
firefox ftp://ip
lftp ip (此访问方式必须能列出资源才算访问成功)

[root@rhel7_node2 ~]# lftp 192.168.0.10
lftp 192.168.0.10:~> ls
dr-xr-xr-x    9 0        0            4096 Oct 10  2018 RHEL7.6
drwxr-xr-x    2 0        0               6 Jun 21  2018 pub
drwxr-xr-x    3 0        0              65 Mar 19 09:59 software

vsftpd基本信息

rpm -qc vsftpd(查看目录)

[root@rhel7_node1 ftp]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

服务名称: vsftpd.service
配置目录:/etc/vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp
报错信息:
550 ##程序本身拒绝(没这个功能)
553 ##文件系统权限限制
500 ##权限过大(ftp以安全著称,权限过大如超过755也不行)
530 ##认证失败(如密码输错)

匿名用户访问控制

匿名访问:lftp 192.168.0.10(当访问ftp服务时没有加入用户认证时)

[root@rhel7_node2 ~]# lftp 192.168.0.10
lftp 192.168.0.10:~> ls
dr-xr-xr-x    9 0        0            4096 Oct 10  2018 RHEL7.6
drwxr-xr-x    2 0        0               6 Jun 21  2018 pub
drwxr-xr-x    3 0        0              65 Mar 19 09:59 software

本地用户访问:lftp 192.168.0.10 -u westos

[root@rhel7_node2 ~]# lftp 192.168.0.10 -u westos
Password: 
lftp westos@192.168.0.10:~> ls       
drwxr-xr-x    2 1000     1000           43 Mar 19 09:12 Desktop
drwxr-xr-x    2 1000     1000            6 Mar 08 09:37 Documents
drwxr-xr-x    2 1000     1000            6 Mar 08 09:37 Downloads
drwxr-xr-x    2 1000     1000            6 Mar 08 09:37 Music
drwxr-xr-x    2 1000     1000            6 Mar 08 09:37 Pictures
drwxr-xr-x    2 1000     1000            6 Mar 08 09:37 Public
drwxr-xr-x    2 1000     1000          162 Mar 19 09:12 Templates
drwxr-xr-x    2 1000     1000            6 Mar 08 09:37 Videos

在配置文件/etc/vsftpd/vsftpd.conf中

登陆控制(控制匿名用户登陆)
anonymous_enable=YES|NO

家目录控制
anon_root=/software(默认/var/ftp)

上传控制

匿名用户上传文件
1.lftp 192.168.0.10:~> put /etc/passwd
put: Access failed: 550 Permission denied. (passwd)   //程序本身拒绝(没这个功能)

修改配置文件vim /etc/vsftpd/vsftpd.conf
30 anon_upload_enable=YES|NO //是否允许匿名用户上传

重启服务
2.lftp 192.168.0.10:/> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd)  //文件系统权限限制

查看权限:
[root@rhel7_node1 ftp]# ls -ld /var/ftp
drwxr-xr-x. 5 root root 48 Mar 19 18:18 /var/ftp //只对超级用户开放
修改权限
chmod 777 /var/ftp/pub

3.lftp 192.168.0.10:/> put /etc/passwd
put: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot() //权限过大(ftp以安全著称,权限过大如超过755也不行)
修改回755,可以给子目录上上传,修改子目录权限:

chmod 777 /var/ftp/pub/

4.lftp 192.168.0.10:/> cd pub
cd ok, cwd=/pub                 
lftp 192.168.0.10:/pub> put /etc/passwd
2309 bytes transferred

下载控制
anon_world_readable_only=NO(匿名用户可以下载不能读的文件)

目录建立控制
anon_mkdir_write_enable=YES|NO

下载控制
anon_world_readable_only=NO(匿名用户可以下载不能读的文件)

目录建立控制
anon_mkdir_write_enable=YES|NO(是否能建立目录)

删除重命名控制
anon_other_write_enable=YES|NO(能否删除目录)

登陆数量控制
max_clients=2(客户端最多能登陆多少个,默认2000)

上传速率控制
anon_max_rate=102400(100k,限制匿名用户)

本地用户的访问

登陆控制
设置实验环境:

	useradd westos
	useradd hai
	echo westos | passwd --stdin westos(设置密码)
	echo hai | passwd --stdin hai

lftp 192.168.0.10 -u westos
本地用户登陆,填错密码:

	[root@rhel7_node2 ~]# lftp 192.168.0.10 -u hai
	Password: 
	lftp hai@192.168.0.10:~> ls          
	ls: Login failed: 530 Login incorrect.       //认证失败(如密码输错)

修改配置文件,使本地用户无法登录:

	[root@rhel7_node1 ftp]# vim /etc/vsftpd/vsftpd.conf
	local_enable=NO|YES
	[root@rhel7_node1 ftp]# systemctl restart vsftpd
	[root@rhel7_node2 ~]# lftp 192.168.0.10 -u hai
	Password: 
	lftp hai@192.168.0.10:~> ls          
	ls: Login failed: 530 This FTP server is anonymous only.

家目录控制

	[root@rhel7_node1 ftp]# vim /etc/vsftpd/vsftpd.conf
	local_root=/software
	查看
	lftp westos@192.168.0.10:~> ls       
	drwxr-xr-x    2 0        0            4096 Mar 19 08:54 repodata
	-rw-r--r--    1 0        0        291293348 Mar 19 08:53 wps-office-11.1.0.9126-1.x86_64.rpm

写权限控制
write_enable=NO|YES

上传文件权限控制
local_umask=077

用户登陆控制
/etc/vsftpd/ftpusers ##永久黑名单
/etc/vsftpd/user_list ##默认黑名单(可以变成白名单)

	[root@rhel7_node1 ftp]# cd /etc/vsftpd/
	[root@rhel7_node1 vsftpd]# ls
	ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

用户登陆白名单
配置文件中
userlist_deny=NO (设定/etc/vsftpd/user_list位白名单,不在名单中的用户不能登陆ftp)

锁定用户到自己的家目录中(限制用户的权限)
chmod u-w /home/*
chroot_local_user=YES

锁定用户到自己的家目录中的白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

锁定用户到自己的家目录中的黑名单
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

虚拟用户访问

只在ftp程序里面承认用户身份及其信息,系统中没有
pam模块插件,用来为ftp提供身份认证

[root@rhel8_node1 pam.d]# ls
atd               gdm-launch-environment  postlogin             sudo
chfn              gdm-password            remote                sudo-i
chsh              gdm-pin                 rhn_register          su-l
cockpit           gdm-smartcard           runuser               system-auth
config-util       liveinst                runuser-l             systemd-user
crond             login                   smartcard-auth        vlock
cups              other                   sshd                  vmtoolsd
fingerprint-auth  passwd                  sssd-shadowutils      vsftpd(vsftpd的认证文件)
gdm-autologin     password-auth           su                    xserver
gdm-fingerprint   polkit-1                subscription-manager

实验步骤(建立虚拟用户过程)

在企业8中:
1.建立认证文件模板

vim /etc/vsftpd/ftp_auth_file      
westos1
123
westos2
123
westos3
123

2.加密认证文件

[root@rhel8_node1 vsftpd]# db_load -T -t hash -f ftp_auth_file  ftp_auth_file.db     
-T 转换 -t type -f 指定转换文件

3.编写认证策略

[root@rhel8_node1 vsftpd]# vim /etc/pam.d/westos
account    required    pam_userdb.so   db=/etc/vsftpd/ftp_auth_file
auth        required      pam_userdb.so    db=/etc/vsftpd/ftp_auth_file

4.编辑vsftpd配置文件

[root@rhel8_node1 ~]# vim /etc/vsftpd/vsftpd.conf 
pam_service_name=westos       ##指定认证策略文件
guest_enable=YES       ##指定虚拟用户功能开启
guest_username=ftp         ##指定虚拟用户在ftp服务器上的用户身份

5.重启vsftpd服务

[root@rhel8_node1 ~]# systemctl restart vsftpd

企业7中验证

[root@rhel7_node1 yum.repos.d]# lftp 192.168.0.11 -u westos1
Password: 
lftp westos3@192.168.0.11:~> ls      
drwxr-xr-x    2 0        0               6 Aug 12  2018 pub

企业8中验证

[root@rhel8_node1 vsftpd]# id westos1
id: ‘westos1’: no such user

即实现可以ftp以用户身份访问但是真实用户并不存在

虚拟用户家目录的独立设定

方便管理虚拟用户,让他们有各自的家

1.创建用户家目录

mkdir  -p /ftpuserdir/westos{1..3}
touch   /ftpuserdir/westos1/westos1file
touch   /ftpuserdir/westos2/westos2file
touch   /ftpuserdir/westos3/westos3file

2.修改配置文件

vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserdir/$USER
user_sub_token=$USER //表示是$USER是系统中的用法

3.重启vsftp服务

systemctl restart vsftpd

4.测试

[root@rhel7_node1 yum.repos.d]# lftp 192.168.0.11 -u westos3
Password: 
lftp westos3@192.168.0.11:~> ls      
-rw-r--r--    1 0        0               0 Mar 26 21:30 westos3file

用户配置独立设定

通用配置:

1.建立文件

[root@rhel8_node1 ftpuserdir]# mkdir /ftpuserdir/westos{1..3}/pub

2.更改文件权限和组权限以便接下来的操作

[root@rhel8_node1 ftpuserdir]# chmod  775 /ftpuserdir/westos{1..3}/pub
[root@rhel8_node1 ftpuserdir]# chgrp  ftp /ftpuserdir/westos{1..3}/pub

3.更改配置文件

[root@rhel8_node1 ftpuserdir]# vim /etc/vsftpd/vsftpd.conf 
anon_upload_enable=YES

此时只能实现通用的配置,不能个性化。

个性配置:
1.修改配置文件

[root@rhel8_node1 ftpuserdir]# vim /etc/vsftpd/vsftpd.conf 
user_config_dir=/etc/vsftpd/user_config #在此目录中与用户名称相同的文件为用户配置文件
关闭上传权限

2.创建目录

mkdir /etc/vsftpd/user_config

3.配置独立的用户配置文件

[root@rhel8_node1 user_config]#vim /etc/vsftpd/user_config/westos2
anon_upload_enable=YES

设定完成后westos2用户可以上传文件 ,而其他用户不可以

后记

服务与软件的区别
文件传输命令复习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值