一,FTP文本传输协议
FTP 文件传输协议 rhel的是vsftpd =Very Secure File TransferProtocol Damon lftp访问
http 超文本传输协议 浏览器访问
1,首先要修改一个文件,然后reboot
[root@vm ~]# vim /etc/sysconfig/selinux
SELINUX=disabled#######修改为disabled
如果执行getenforce是disabled那么就成功了
[root@vm ~]# getenforce
Disabled
2,服务端设置
安装ftp服务软件,并且设置开机启动
加入防火墙名单
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload ###注意要重新加载
3,用户端测试
lftp ip ##能登陆并且显示,表示安装成功
二,登录FTP常见id报错解析
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
三,FTP默认发布目录及其更改
1,ftp的默认发布目录是/var/ftp ###建立文件进行测试
服务端建立文件
客户端查看
2,更改默认发布目录为/ftpdir
##建立一个文件夹/ftpdri##这个建立在哪都是可以的,但是要和下面的路径保持一致
##为了方便观察,在默认发布目录下面建立一个redhat目录和file文件
##这个其实就是匿名用户的家目录修改,因为本地用户默认发布路径就是用户家目录
[root@vm ~]# cd /ftpdir/
[root@vm ftpdir]# ls
file redhat
##编辑配置文件/etc/vsftpd/vsftpd.conf ,写入anon_root=/ftpdir/发布路径
##修改配置文件之后要重启服务systemctl restart vsftpd.service
##用户端再次登录,其默认发布目录已经更改,并且可以看见在行的发布目录建立的文件
四,FTP修改配置文件管理用户登录
(1),匿名用户设定(man 5 vsftpd.conf)
anonymous_enable=YES|NO ##是否允许匿名用户登陆
anonymous_enable=NO时,会读秒
#<匿名用户上传> ##匿名用户上传的前提是本地用户可写,注意这里是只能上传,不能删除文件
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub ###上传到哪个目录就要改哪个目录的组
chmod 775 /var/ftp/pub ###上传到哪个目录就要改哪个目录的权限
注意:
1,这里是只能上传,不能删除文件,而且如果上传的文件已经存在,也会报553的错误,因为不能覆盖,但是本地用户可以覆盖
2,匿名用户上传的文件在默认发布目录下面的pub目录里面
#<匿名用户家目录修改>
anon_root=/direcotry
注意:这个就是更改默认发布,因为本地用户默认发布路径就是用户家目录,无法更改
#<匿名用户上传文件默认权限修改>
anon_umask=xxx ###默认为077 (系统内核对普通文件预留111的权限)
注意:默认权限是指上传到ftp上面之后的文件权限是多少 ,在修改配置文件之后上传的文件才会被更改
#<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO
1,建立目录必须要要求在775的目录下面执行,否则会报550的错误。
2,新建立的目录默认权限是700,所以不能删除。
3,只能建立目录,不能建立文件
#<匿名用户下载>
anon_world_readable_only=YES|NO ##设定参数值为NO表示匿名用户可以下载(get)
注意:
1,默认状态下是不允许匿名用户下载东西的
2,参数是YES时,表示你只能下载你能读的文件,为了方便,关闭它,就是能你读不了的文件也可以下载
3,这个参数默认配置文件是没有的,需要自己写入(man 5 vsftpd.conf)
#<匿名用户删除文件>
anon_other_write_enable=YES|NO
注意:
1,这个参数默认配置文件是没有的,需要自己写入(man 5 vsftpd.conf)
2,这里设置为YES时,可以删除文件和重命名,这个操作必须要要求在775的目录下面执行,否则会报550的错误,例如匿名用户自己建立的文件就不能删除,因为默认建立的文件权限是700
3,这里是不能对文件内容进行更改的,它会在你进入lftp时的目录下建立新的文件
#<匿名用户使用的用户身份登陆>
建立新文件 /etc/vsftpd/vmloginusers ####文件名任意,需要在文件里面添加虚拟用户及密码
由于是密码明文的,不安全,对其进行哈希加密,生成.db文件
db_load -T -t hash -f /etc/vsftpd/vmloginusers vmloginusers.db
建立新文件/etc/pam.d/vusers并编辑 ###文件名任意,编辑内容可参考/etc/pam.d/vsftpd()
account required pam_userdb.so db=/etc/vsftpd/vmloginusers ###<<这里是虚拟用户文件名
auth required pam_userdb.so db=/etc/vsftpd/vmloginusers ###<<这里是虚拟用户文件名
修改配置文件
pam_service_name=vusers ###name就是在pam.d目录下面新建立的文件名
guest_enable=YES ##需要自己添加
虚拟帐号身份指定
guest_username=redhat ####系统真实存在的用户,登入在用户家目录,redhat用户就不能以本地用户身份登陆
###也可以是ftp,那么登陆进去就是在默认发布目录下
###建立的虚拟用户user1以本地用户身份登陆
chmod u-w /home/ftpuser ###如果没有这条命令,系统会报500(文件系统权限过大)的错误
#<虚拟用户家目录独立设定>
local_root=/mnt/vftpdir/ ###新建并修改本地用户家目录,因为虚拟用户是以本地用户的身份登陆的
###此时user1以student身份登陆的发布目录就不是student家目录
###但此时不是独立的,也就是说user1,user2,user3登陆后家目录相同
做如下修改,使user拥有各自的家目录
local_root=/mnt/vftpdir/$USER
use_sub_token=$USER ###此时user拥有各自的家目录,但是对本地用户的配置文件现在不适用虚拟用户
#<为虚拟用户建立子配置文件>
注意:user_config_dir设定的配置参数比vsftpd.conf的优先级高
mkdir /etc/vsftpd/conf_dir -p ###建立虚拟用户配置目录
user_config_dir=/etc/vsftpd/conf_dir ###在主配置文件里面添加
vim /etc/vsftpd/conf_dir/user1 ###编辑user1子配置文件,文件内容格式和匿名用户相同,需要什么写什么
chgrp student /mnt/vftpdir/user{1..3}/pub ####改变拥有组,否则会报错
chmod 775 /mnt/vftpdir/user{1..3}/pub ####给发布目录权限,否则会报553(本地文件系统权限过小)
#<匿名用户最大上传速率>
anon_max_rate=1024000
注意:
1,这个参数默认配置文件是没有的,需要自己写入(man 5 vsftpd.conf)
2,默认单位是每秒字节(Byte)数,默认是没有速率限制(1024Byte=1KB)
3,可以用dd做实验,测上传速率
4,匿名用户上传的文件在默认发布目录下面的pub目录里面
(2),本地用户设定
###本地用户是指服务端建立的用户,id username 可以查到的用户
###本地用户登录 lftp ip -u username (这个username一定是服务端建立的,需要密码登录)
###本地用户登录时的默认发布目录是本地用户的用户家目录
###本地用户登录时上传的文件在服务端用户的家目录下
local_enable=YES|NO ##是否允许本地用户登陆
local_enable=NO时,不允许本地用户登录,仅允许匿名用户登录,会报530错误
####530此FTP服务器仅为匿名用户。
#<本地用户上传文件>
write_enable=YES|NO ##本地用户写权限限制,是否可以上传(put)文件
write_enable=YES时 ##上传的文件在本地用户家目录下面
###上传之前
###上传之后
write_enable=NO时 ##上传文件会报550的错误(550 ##服务本身功能未开放)
#<本地用户家目录修改>
local_root=/directory
注意:这个和匿名用户修改方式相同,默认本地用户家目录就是/home/username,主要用在虚拟用户以本地用户登陆时,修改家目录
#<本地用户上传文件权限>
local_umask=xxx ###默认是077
#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
###默认情况下,匿名用户只能查看默认发布目录,而本地用户还可以查看根目录
chroot_local_user=YES
chmod u-w /home/* ###如果不执行这个,登录时会报500(文件系统权限过大)的错误,这个在配置文件中有说明,一定要确保用户对顶级目录(其实就是用户家目录)没有写的权限
五,FTP用户黑白名单
#<限制访问用户黑白名单>
用户黑名单建立
chroot_local_user=NO ###所有用户都能访问,列表里面的例外
chroot_list_enable=YES ###列表里面的用户访问受到限制
chroot_list_file=/etc/vsftpd/chroot_list ###chroot_list要自己建立,然后添加黑用户
白名单建立
chroot_local_user=YES ####所有用户都被限制在家目录,列表里面的例外
chroot_list_enable=YES ###列表里面的用户随意访问
chroot_list_file=/etc/vsftpd/chroot_list ###chroot_list要自己建立,然后添加白用户
#<本地用户登录黑白名单>
永久黑名单 /etc/vsftpd/ftpusers ###此黑名单的优先级最高
临时黑名单
userlist_enable=YES
vim /etc/vsftpd/user_list ###这个名单里面的用户禁止登陆,ftpusers永久黑名单优先级最高
黑名单变白名单
userlist_enable=YES
userlist_deny=NO ###添加此行,关闭名单的deny属性
vim /etc/vsftpd/user_list ###仅允许这个名单里面的用户登陆,ftpusers永久黑名单优先级最高
###############################################################################################
mkdir -p 是建立目录时,如果没有父目录,自动建立