Linux系统下的FTP服务
一.FTP 文件传输协议
1.FTP为系统提供了通过网络与远程服务器进行传输的简单方法,分主动和被动两种;
2.vsftpd:安全型服务器包,被动传输的接口是随机的,安全级别更高;
3.默认配置文件让anonymous用户只能下载位于chroot目录中的内容;
4./var/ftp:远程FTP客户端能以用户anofile:///usr/share/doc/HTML/en-US/index.htmlnymous或ftp用户连接到服务器,无需密码;
服务端安装vstftp服务和lftp服务,客户端安装lftp服务
二、设置FTP服务
1.给服务端(虚拟机)配置yum源,安装vsftpd和lftp
#############查看网络是否通畅#############
- [[email protected] ~]# vim /etc/yum.repos.d/rhel_dvd.repo ####配置yum源
- [[email protected] ~]# yum clean all
- [[email protected] ~]# yum repolist
#############配置文件内容###############
2.在服务端修改防火墙配置文件,允许ftp连接,否则客户端连接会显示Interrupt
1)
- [[email protected] ~]# firewall-cmd --get-services ####查看火墙限制的服务
- [[email protected] ~]# firewall-cmd --permanent --add-service=ftp #####允许ftp服务通过火墙
- success
- [[email protected] ~]# firewall-cmd --reload ######火墙服务重新加载配置文件
- success
- [[email protected] ~]# firewall-cmd --list-all ######查看火墙允许的服务
2)或者直接关闭火墙:systemctl restart firewalld
##################################防火墙限制的服务################################
#####################################防火墙允许的服务#################################
- [[email protected] ~]# yum install vsftpd ##########安装vsftpd
- [[email protected] ~]# systemctl restart vsftpd ##########重新启动服务
- [[email protected] ~]# netstat -antlupe | grep ftp ##########查看ftp接口
- tcp6 0 0 :::21 :::* LISTEN 0 76061 3845/vsftpd
- [[email protected] ~]# systemctl enable vsftpd #########设置开机启动服务
#############################下载成功############################
4.修改配置后,客户端连接好 ##默认目录 /pub,在客户端安装好lftp服务
三、用户登陆设置 /etc/vsftpd/vsftpd.conf
常见报错:
530 认证失败,密码错误
550 当前用户没有权限
553 文件权限太小
500 文件权限过大
- [[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
- [[email protected] ~]# systemctl restart vsftpd.service
##################################配置文件部分内容#############################
########################设置为不允许匿名用户登录#######################
##############不能登陆#############
#################设置匿名用户可以登陆,登陆成功#############
2.本地用户登陆
#######################设置本地用户不允许登陆,登录失败####################
#############################设置本地用户可以登陆,登陆成功###########################
3.本地用户读写
vim /etc/sysconfig/selinux
####################配置文件内容,此处改为permissive或者disable#####################
2)允许读写
###################################上传成功#########################################
四、登陆用户的读写权限
anon_upload_enable=YES ##匿名用户上传权限
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
[[email protected] ~]# systemctl restart vsftpd.service
[[email protected] ~]# chgrp ftp /var/ftp/pub ####修改组
[[email protected] ~]# chmod 755 /var/ftp/pub ####修改权限
[[email protected] ~]# systemctl restart vsftpd.service
######vsftpd.con文件添加内容#####
##################文件上传失败后,将权限改为775,上传成功####################
anon_other_write_enable=YES ##匿名用户读写权限
##########################删除成功########################
#########################################删除失败##################################
##################################下载成功#####################################
anon_world_readable_only=YES ###不允许匿名用户下载
########################下载失败############################
#####################权限设置为NO不允许时不能建立########################
###################权限设立为YES后成功建立文件#######################
五、用户登陆的相关配置
1.修改默认用户,即以用户student的身份登陆,上传文件的组id为1000
chown_username=student ##使匿名用户以student身份执行
##############################上传文件的组ID为1000####################
2.匿名用户的最大上传速度 ##单位byte anon_max_rate=102400
##############################下载速度为100K左右#################################
3.匿名用户登陆的默认目录修改
######################默认进入到/mnt中############################
max_clients=1 ###同时在线数为1
#########IP为38的用户登陆中,IP为138的用户无法登录################
##############################权限默认为700###############################
################由于家目录文件权限过大500报错,此时要取消家目录文件w权限#########
- [[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
- [[email protected] ~]# systemctl restart vsftpd.service
- [[email protected] ~]# chmod u-w /home/*
##########################用户登陆,此时可以切换到/目录###################################
chroot_local_user=NO ##不锁定用户家目录
chroot_list_enable=YES ##开启黑/白名单列表
chroot_list_file=/etc/vsftpd/chroot_list ##列表文件为/etc/vsftpd/chroot_list
当锁定用户家目录(YES)时,/etc/vsftpd/chroot_list是白名单
当不锁定用户家目录(NO)时,/etc/vsftpd/chroot_list是黑名单
8.黑名单配置文件
ftpusers ##永久黑名单,一旦加入,任何操作都不能洗白
user_list ##临时黑名单,可修改配置文件,变为白名单
userlist_enable=YES ##开启userlist列表
userlist_deny=NO ##默认所有用户加入黑名单,白名单用户可登陆
[[email protected] ~]# vim /etc/vsftpd/users
####/etc/vsftpd/users/配置文件内容,名字和密码可自定义,注意不能有空格#####
- [[email protected] ~]# cd /var/ftpd/
- [[email protected] vsftpd]# db_load -T -t hash -f users users.db ##对虚拟用户和密码加密,会生成/etc/vsftpd/users.db文件
- #### -T 新建文件 -t 加密格式 -f 加密文件 ####
- [[email protected] vsftpd]# ls
- chroot_list user_list users.db vsftpd_conf_migrate.sh
- [[email protected] vsftpd]# vim /etc/pam.d/usercheck ####建立ftp验证文件
- [[email protected] vsftpd]# vim /etc/vsftpd/vsftpd.conf ####修改配置文件,使虚拟用户登陆
- ftpusers users vsftpd.conf
account required pam_userdb.so db=/etc/vsftpd/users ##用户认证
auth required pam_userdb.so db=/etc/vsftpd/users ##密码认证
########################/etc/pam.d/usercheck文件中的内容########################
pam_service_name=usercheck ##pam读取虚拟用户文件usercheck
##############配置文件vsftpd.conf中内容#########
- [[email protected] vsftpd]# mkdir -p /var/ftpdir/test1/test1dir #### 配置虚拟用户具备独立的家目录
- [[email protected] vsftpd]# mkdir -p /var/ftpdir/test2/test2dir ####-p 表示上层目录不存在,自动建立
- [[email protected] vsftpd]# cd /var/ftpdir/test1
- [[email protected] test1]# ls
- test1dir
- [[email protected] test1]# cd /etc/vsftpd/
- [[email protected] vsftpd]# vim /etc/vsftpd/vsftpd.conf ####修改配置文件使虚拟用户登陆到自己独立的家目录
- [[email protected] vsftpd]# systemctl restart vsftpd.service
local_root=/var/ftpdir/$USER ##$表示根据user自动登陆到相应家目录中
##################配置文件内容#####################