前言
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用户可以上传文件 ,而其他用户不可以
后记
服务与软件的区别
文件传输命令复习