FTP服务器文本传输协议 | FTP常见id报错解析 | FTP默认发布目录及更改 | FTP修改配置文件管理用户登录 | FTP用户黑白名单

一,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  是建立目录时,如果没有父目录,自动建立

猜你喜欢

转载自blog.csdn.net/ha_weii/article/details/80210861