FTP服务
ftp的定义
"ftp://"是一种文件传输协议,通过这个协议,我们可以建立一个平台将我们想要分享出去的资源分享给特定的用户群体
ftp协议提供的软件
在rhel7这个系统中:
vsftpd
服务
部署ftp服务
我们想要使用ftp服务,首先就要有特定的软件来实现这个服务,这个软件就是vstpd,我们需要先安装这个软件
yum install vsftpd -y
systemctl start vsftpd(开启vstpd服务)
systemctl enable vsftpd(设置vstpd服务开机自启动)
firewall-cmd --permanent --add-service=ftp(允许ftp服务的信息通过防火墙)
firewall-cmd --reload(重新加载防火墙)
ftp服务的基本信息
软件安装包:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
报错id的解析:
500 #文件系统权限过大
530 #用户认证失败
550 #服务本身功能未开放
553 #本地文件系统权限过小
ftp配置文件
vim /etc/vsftpd/vsftpd.conf
可以看到刚刚安装完的ftp服务还没有配置,配置文件里有很多注释(我们暂时忽略注释,只看配置本身)
匿名用户
anonymous_enable=YES|NO #匿名用户是否可以登陆
本地用户
local_enable=YES|NO #本地用户是否可以登陆
write_enable=YES|NO #ftp是否对登陆用户可写
匿名用户上传
在/etc/vsftpd/vsftpd.conf文件中修改以下内容
write_enable=YES
anon_upload_enable=YES
随后为了使配置生效,我们还要对于配置文件的权限进行修改
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
这样修改完之后,匿名用户就可以把自己的文件放置在这个公共平台上进行共享了
匿名用户家目录修改
anon_root=/direcotry
匿名用户上传文件默认权限修改
anon_umask=xxx
匿名用户建立目录
anon_mkdir_write_enable=YES|NO
匿名用户下载
anon_world_reachable_only=YES|NO #设定参数值为no表示匿名用户可以下载
匿名用户删除
anon_other_write_enable=YES|NO
匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
最大上传速率
anon_max_rate=102400(100K)
最大链接数
max_clients=2
本地用户设定
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
本地用户家目录修改
local_root=/directory
本地用户上传文件权限
local_umask=xxx
限制本地用户浏览根目录
所有的用户只能在家目录里进行操作
chroot_local_user=YES #这里写YES,用户就不能浏览根目录;写NO,用户就可以浏览根目录(但是显而易见,将根目录随随便便暴露给陌生用户是非常不安全的)
chmod u-w /home/*
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES #打开用户的黑白名单功能,如果默认是NO,那么就是打开的黑名单
chroot_list_file=/etc/vsftpd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES #打开用户的黑白名单功能,如果默认是YES,那么就是打开的白名单
chroot_list_file=/etc/vsftpd/chroot_list
黑白名单是相互对应的
限制本地用户登陆
vim /etc/vsftpd/ftpusers #用户黑名单
vim /etc/vsftpd/user_list #用户临时黑名单
用户白名单
在用户临时黑名单里加上userlist_deny=NO这一行,作用是将临时黑名单的功能反转,变成白名单
/etc/vsftpd/user_list #设定之后此文件变成用户白名单,只有在名单中出现的用户可以登陆ftp
ftp虚拟用户设定
创建虚拟用户身份
我们在上文中所说的匿名用户与本地用户,匿名用户就是依托于本地一个真实用户下的虚拟用户,本地用户就是电脑本机所存在的用户
vim /etc/vsftpd/&& ##文件名称随意
在其中按下面格式写下(密码随意)(注意:系统中要有这个@@@用户)
@@@1
123
@@@2
123
使这个文件生效
db_load -T -t hash -f /etc/vsftpd/&& /etc/vsftpd/&&.db
这样我们就创建了一个认证文件来记录所有的虚拟用户及其密码
所有的虚拟用户实际上都是从属于@@@这个真实用户之下的
但是首先一定要注意的是在执行这个命令前电脑中一定要有@@@这个真实用户
使文件被ftp服务所识别
vim /etc/pam.d/%% ##文件名称任意
在这个文件中写下
account required pam_userdb.so db=/etc/vsftpd/&&
auth required pam_userdb.so db=/etc/vsftpd/&&
然后下面这个文件
vim /etc/vsftpd/vsftpd.conf
在这个文件中写下
pam_service_name=%%
guest_enable=YES
guest_username=@@@
chmod u-w /home/@@@ ##这一步的目的是限制用户权限
本地虚拟用户登录
在/etc/vsftpd/vsftpd.conf中写下
local_root=/var/ftpuserdir/$USER
user_sub_token=(上一行的美元符号)USER ##说明(美元符号)USER就是环境变量里的(美元符号)USER
虚拟帐号配置独立
有的时候我们需要将虚拟帐号分成三六九等,这时我们就需要对虚拟帐号的权限进行区别设定,方法如下
vim /etc/vsftpd/vsftpd.conf
在这个文件中写下
user_config_dir=/etc/vsftpd/userconf
别忘了创建这个目录
mkdir -p /etc/vsftpd/userconf
然后在这个目录中创建的配置文件可以被系统读取
vim /etc/vsftpd/userconf/ftpuser1
在此文件中设定配置文件中的所有参数均可以被系统识别,并且文件的优先级高,区别于一般设定