1.ftp的定义
ftp://文件传输协议
2.ftp协议提供的软件
准备工作:将selinux的状态更改为disabled:
vim /etc/sysconfig/selinux
查看selinux状态:
在rhel7中:vsftpd
yum install vsftpd -y #####安装ftp服务器
安装成功之后查看vsftpd的配置文件:
vim /etc/vsftpd/vsftpd.conf
配置文件如下:
<注>此文件里的格式必须正确,不然在启动ftp服务会报错
在虚拟机上将防火墙服务修改:
firewall-config 打开firewall的图形设置:
reload重新加载服务
查看firewall-cmd --list-all 查看firewall的设置。设置成功:
测试:在另一台主机上运行:
lftp 172.25.80.106
lftp服务正常运行。
<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf ###编辑ftp服务的配置文件
write_enable=YES ###将写入权限打开
anon_upload_enable=YES ###将上传权限打开
chgrp ftp /var/ftp/pub ###将/var/ftp/pub目录的组改为ftp组(用户通过ftp服务写入的东西属于ftp组)
chmod 775 /var/ftp/pub ###将/var/ftp/pub改为775(组可写)
12 anonymous_enable=YES ###允许匿名用户登录
13 #
14 # Uncomment this to allow local users to log in.
15 # When SELinux is enforcing check for SE bool ftp_home_dir
16 local_enable=YES ###允许本地用户登录
17 #
18 # Uncomment this to enable any form of FTP write command.
19 write_enable=YES ###写入权限
将12行的语句更改为anonymous_enable=NO,之后匿名用户不能登录:
将16行的语句更改为local_enable=NO:
#<匿名用户家目录修改>
anon_root=/direcotry
#<匿名用户上传文件默认权限修改>
anon_umask=xxx
用户创建文件的初始权限是:
此时的umask值是:077
将用户上传的umask值更改为022此时创建文件的权限是:
#<匿名用户建立目录>
anon_mkdir_write_enable=YES
anon_mkdir_mkdir_enable=NO
#<匿名用户下载>
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
#<匿名用户删除>
anon_other_write_enable=YES|NO此时,其他用户有删除的权限。
#<匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student
chown_upload_mode=0644此时用其他用户上传的passwd所属的用户是student,文件权限是644。
本地用户家目录修改>
local_root=/directory
#<本地用户上传文件权限>
local_umask=xxx
#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
用户黑名单建立
chroot_local_user=NO 注:后面写的是YES表示白名单,后面写的是NO表示的是黑名单
chroot_list_enable=YES 开启名单功能
chroot_list_file=/etc/vsftpd/chroot_list 注:指定名单的地址
将student用户设置成黑名单,此时student用户被固定在student的目录中。
用户白名单设定
chroot_local_user=YES
cgroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
将student用户设置成白名单,此时student用户可以去到/var/ftp/pub,而westos只能在westos的家目录中:
#限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单
如图:将student写入用户黑名单中,在黑名单中的用户不可以登录ftp
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
用户的白名单的设定是在/etc/vsftpd/vsftpd.conf文件下加上userlist_deny=NO,再加上这句语句之后黑名单(默认)变成白名单
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
<ftp虚拟用户的设定>
创建虚拟账号身份
vim /etc/vsftpd/westosfile ####文件里面记录着用户的账号和密码
文件中写入: ####注:必须按照格式写不能加入别的字符
ftpuser1 ####账号
123 ####密码
ftpuser2
123
ftpuser3
qwe
将用户信息文件加密
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
注:将westosfile 文件加密加密文件格式为.db文件
查看加密文件:
vim /etc/pam.d/westos ##文件名称任意,加密服务的名字,文件下面写:
account require pam_userdb.so db=/etc/vsftpd/westosfile
auth require pam_userdb.so db=/etc/vsftpd/westosfile
##注:上面这个文件默认会加上.db文件后缀,实际上用户认证用的是westosfile.db这个加密文件
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos ###pam服务的名字
guest_enable=YES ###允许虚拟用户登录ftp(虚拟身份的指定)
guest_username=ftpuser ###虚拟用户登录的身份
chmod u-w /home/ftpuser ###更改ftpuser目录的权限local_root=/var/ftpuserdir/$USER ####将虚拟用户定位到自己家目录中
user_sub_token=$USER ####shell识别$USER
注:运行echo $USER
[root@localhost ~]# echo $USER
root 此命令会得到当前用户的名字