ftp服务
/var/ftp/ ftp的默认目录
1.ftp的定义
ftp://文件传输协议
FTP(文本传输协议)是INTERNET上仍常用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法。
2.ftp协议提供的软件
在hel7中:
vsftpd
服务端安装vsftpd服务和lftp服务,客户端安装lftp服务
vsftp用于服务端,lftp用于客户端
3.部署ftp服务
实验前的步骤:
nm-connection-editor 改称同一个网端的ip
cd /etc/yum.repos.d
vim rhel_dvd.repo
获取老师7.0版本的yum源(因为虚拟机是7.0版本的)
yum clean all
yum repolist
实验:
安装vsftpd
yum install vsftpd -y
systemctl start vsftpd 开机启动服务
systemctl enable vsftpd
getenforce --> Disabled 内核防火墙状态
注意:如果不是这个状态,vim /etc/sysconfig/selinux 更改状态–>reboot重启才可以生效
firewall-cmd --permanent --add-service=ftp 把ftp服务永久添加到防火墙
firewall-cmd --reload 更改防火墙加载
也可以图形模式设定,本次实验使用的是图形模式
[root@ftp~server ftp]# lftp 172.25.254.111 在客户端查看是否连接成功
lftp 172.25.254.111:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
lftp相当于一种浏览器(lftp登陆输入?获得命令详细帮助)
ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcpp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析:
500 文件系统权限过大
530 用户认证失败,如果密码正确,就是不允许该用户登陆
550 服务本身功能未开放,密码正确,ls也可以查看,不可以执行某些服务,例如是否可写
553 本地文件系统权限过小
vim /etc/vsftpd/vsftpd.conf
(1)匿名用户(直接lftp登陆是匿名,后面接-u 用户名可实名登陆)
anonymous_enable=YES | NO 匿名用户是否可以登陆
(2)本地用户(本地用户登陆是默认在用户的家目录)
local_enable=YES | NO 本地用户是否可以登陆
write_enable=YES | NO ftp是否对登陆用户可写
(3)匿名用户上传(用命令put,匿名用户上传是默认以ftp身份)
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub 匿名用户上传以ftp身份,并且权限为775
chmod 775 /var/ftp/pub
ll 是查看文件,ll-d 是查看目录
默认是以ftp组的身份
(4)匿名用户下载(文件用get,下载目录用mirror)
anon_world_readable_only=NO | YES
文件是否只读,NO就可以下载,YES不能下载
下载目录用mirror
下载多个文件 get group passwd
下载所有文件 mget *
(5)匿名用户创建目录
anon_mkdir_write_enable=YES | NO
(6)匿名用户的删除目录
anon_other_write_enable=YES
(7)匿名用户家目录修改(默认再/var/ftp/pub)
anon_root=/directory
不能下载文件,则更改/directory权限
(8)匿名用户上传文件默认权限修改
anon_umask=xxx 改为022 上传文件权限为644
(匿名用户 非默认目录,没有写权限,上传文件权限总是600)
(9)匿名用户登陆所使用身份的修改
chmown_uploads=YES | NO (是否能改变匿名用户登陆)
chown_username=student(本地已存在的用户) 更改了所有人
上传文件默认uid为student的uid
(ftp:14–>student:1000)
因为匿名用户上传本来是ftp的身份,现在修改匿名用户上传的身份
(10)最大上传效率(限速保证服务端正常工作)
anon_max_rate=102400 单位:字节 100k 设置限速100k
测试:
dd if=/dev/zero of=/mnt/bigfile bs=1M count=2000
从/dev/截取一个2G的文件放到/mnt/bigfile
分别在限速和不限速的时侯上传
(11)最大连接个数
max_clients=2
(12)本地用户家目录修改
local_root=/westos
更改为/westos/之后,下载文件权限太小,u+w之后还是权限太小
ll -d /westos/
drwxr-xr-x 2 root ftp 66 Jul 29 22:08 /westos/ 还会553
但是777权限太大,student用户登陆的时候,因为所有组和所有人分别是root和ftp,因此student登陆只能只用其他人的权限,改成777可写,这时候可以下载,但是对于所有的用户都可以随便上传下载,太不安全了,因此把所有组和所有人都改称student,权限改称775,这样就可以下载了
rm passwd–>exit
(13)本地用户上传文件权限
local_umask=xxx
(14)限制本地用户浏览根目录
chroot_local_user=YES 此参数要求去掉自己对家目录的写权限
chmod u-w /home/student
注意:要先把之前设定的本地用户家目录修改注释掉,再自己的家目录里面
(15)用户黑白名单(锁定用户家目录,是否可以切换根目录)
NO是黑名单,YES是白名单
chroot_local_user=NO | YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list 添加用户
(16)限制本地用户登录ftp服务
vim /etc/vsftpd/ftpusers 永久用户黑名单
vim /etc/vsftpd/user_list 用户临时黑名单
注意:默认userlist_enable=YES 让list生效
把student删除
用户临时黑名单:
vim user_list
(16)用户白名单设定
userlist_enable=YES 让list生效
userlist_deny=NO
vim /etc/vsftpd/user_list 参数设定,此文件变成用户白名单,只有在名单中出现的用户才可以登陆ftp
(1)ftp服务的虚拟用户设定(对登陆用户的分别管理)
vim /etc/vsftpd/westosfile 编辑登陆用户所用的临时帐号身份.文件名任意
ftpuser1 虚拟用户名称
123 虚拟用户密码
ftpuser2
123
ftpuser3
123
编辑三个用户名称以及登陆密码
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
对编辑了临时身份帐号及密码的文件进行加密 本来是明文
查看vsftpd.conf 认证时使用的是pam认证
pam_service_name=vsftpd
vim /etc/pam.d/westos 文件名任意
account required pam_userdb.so db=/etc/vsftpd/westosfile 从westosfile.db中认证帐号
auth required pam_userdb.so db=/etc/vsftpd/westosfile 从westosfile.db中认证密码
ftp配置文件的默认认证方式为pam方式,在此文件下查看该认证方式的规则
自己编写一个认证文件
认证规则
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos 把pam认证的文件改为westos,指定pam认证的文件
guest_enable=YES 允许游客登陆
userlist_deny=YES
(2)虚拟帐号身份指定
默认使用虚拟用户时,登陆后在pub目录
guest_username=westos 修改参数后,登陆在为westos家目录
如果是500–>chmod u-w /home/westos
(3)虚拟帐号家目录独立设定($USER当前用户)
env 查看当前系统的环境变量
vim /etc/vsftpd/vsftpd.conf
local_root=ftphome/$USER 建立家目录区分虚拟帐号
指定每个虚拟用户登录所在目录为单独的属于自己的目录
user_sub_token=$USER 让配置适用当前shell语法
mkdir /ftphome/user1/user1dir -p 建立虚拟用户家目录
mkdir /ftphome/user2/user2dir -p
(4)虚拟帐号配置独立
chgrp ftp /ftphome -R 将虚拟用户身份都更改为ftp
ll /ftphome/user*
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
vim /etx/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1
在此文件中设定配置文件中的所有参数,此文件的优先级高
例如:anon——upload_enable=YES 上传权限
测试:不编写user2
分别使用user1和user2登陆lftp上传文档,user1可以,user2不行
虚拟用户登录后再pub目录
考虑之前的匿名用户的那些操作没有注释掉