vsftpd服务
1.什么是ftp
部署 FTP 服务器 FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议 之一 。
FTP 服务器包的名称为 VSFTPD , 它代表 Very Secure File TransferProtocol Damon 服务器名称也叫做vsftpd 默认配置文件让 ANONYMOUS 用户只能下载位于 CHROOT 目 录中的内容。 /var/ftp/ 这意味着远程 FTP
客户端能以用户 anonymous 或 ftp 身份连接到服务器 ( 无需密码 ), 并从 ftp 服务器上的 /var/ftp/目录下载文件 ( 其本地 ftp 用户可以读取这 些文件 )
2.安装ftp,启动服务
yum install vsftpd lftp -y //安装vsftpd服务,lftp工具
systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd
sentenforce 0
//测试
lftp ip //能登陆并且能显示,表示安装成功
注:
服务对客户有意义,只对客户有意义
工具对自己有影响,对别人没有影响
vsftpd,服务器开,fltp只是工具,下载了就行。
//此时的显示就是登陆成功,默认在/var/ftp目录下
tips:
一般火墙都是要开开的,比如要保证虚拟机的上网功能,不能因为单独的某个服务关闭火墙。
那么在这个时候,我们只需要开启防火墙策略,添加ftp到防火墙策略即可。首先,以图形方式添加。
//点击reload重启防火墙即可生效然后以命令方式设定 firewall-cmd –permanent –add-service=ftp
用firewall-cmd –list-all 查看火墙策略信息
3.vsftpd 服务的配置参数
默认配置为匿名 FTP 服务器 , 仅允许匿名客户端 下载 , 并且禁用所有本地用户 , 禁止上传
vsftpd 配置文件 : /etc/vsftpd/vsftpd.conf
默认的发布位置是 /var/ftp/
配置修改后 , 需重新启动服务三个基本的vsftpd服务权限:
anonymous_enable=YES ##匿名其他人
local_enable=NO ##本地用户
write_enable=NO ##用户的w权限
//如图即为将所有权限都禁用了,即所有人都登陆不了
通过 man 5 vsftpd.conf 可以查看关于vsftpd服务配置参数的全部信息
在参数配置之前
首先 vim /etc/sysconf/selinux
//将原本的enforcing关闭
原因:
文件: selinux是 内核的插件,全称内核级加强型火墙
能配对的才能访问
功能: 不安全的程序会禁止掉 管理员自己需要打开
特定程序只能访问特定程序的标签 不同目录标签不同 还会影响功能
setenforce 0 警告模式,(permissive) 1 强制模式(enforcing) getenforce 查看模式
下面简单介绍几个匿名用户和本地用户的权限配置:
首先说明几个常见的问题:
1)登陆错误信息提示:
- 530:认证失败
550:禁止你的写,没有权限
500:进入权力过大,需要更改进入目录的权限
553:权限问题
2)每次改完重启vsftpd服务才能生效
3)lftp -u username ip 以谁登陆
4)文件中yes,no,一定是大写,这是文件规定的
*匿名用户设定:anon_
匿名用户上传
vim /etc/vsftpd/vsftpd.conf
write_enable=YES //打开w权限
anon_upload_enable=YES //打开上传权限
chgrp ftp /var/ftp/pub //将pub目录的所有组改变为ftp
chmod 775 /var/ftp/pub //将pub目录的权限设置成其他用户没有w权限
//后面两个权限即所属信息的改变是为了增加安全性,是对本地用户的限制
put filename //上传
注意,默认下可以上传的目录只能是pub目录下
- 匿名用户家目录的修改 anon_root=/directory
家目录更改后如果发现上传不了,显示报错信息是500那么可以试:添加配置信息:allow_writeable_chroot=YES
//匿名用户上传文件默认权限修改
anon_umask=xxx
//匿名用户建立目录
anon_mkdir_write_enable=YES / NO
//匿名用户下载
anon_world_readable_only=YES / NO //设定参数值为NO表示匿名用户可以下载
get filename // 下载
//匿名用户删除
anon_other_write_enable=YES / NO
将上述配置都添加上之后
测试:
//匿名用户使用的用户身份修改
chown_upload=YES //允许上传
chown_username=student //更改用户的身份为student用户
chown_upload_mode=0644 //下载文件的权限设定
//注意:
umask与用户不能同时改,要改,用"chown_upload_mask=0644"
//最大上传速率
anon_max_rate=102400 //单位是字节
- 最大链接数,即最大用户量 max_clients=2
在左边的一个匿名用户退出之后
//刚才被拒绝的用户就可以访问了
*本地用户设定:local_
##本地用户登陆限制
local_enable=YES / NO
##本地用户写权限限制
write_enable=YES / NO
##本地用户家目录修改
local_root=/directory
##本地用户上传文件权限
local_umask=xxx
#注意:
lftp localhost -u xxx
#其中,xxx是本地用户,那么进入后是可以进入根的,这样会非常不安全,所以需要限制本地用户浏览权限
##限制本地用户浏览/目录
##所有用户锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/* ##这里是针对本地用户的,还是安全性的保证
##用户黑名单建立
chroot_local_user=NO ##默认就是NO
#如果所有人出的去,那么指定的就是黑名单
#如果所有人出不去,那么指定的就是白名单
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
##用户白名单建立
chroot_local_user=YES
chroot_list_enable=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
此时
添加用户白名单
之后,文件中还是写有student,但此时,student成为唯一能进入的用户
man 5 vsftpd.conf中的详细说明 :
注意!!!以本地用户身份登陆时需要输入密码,但是,不管输入的密码对还是错,都进入,不过错误的密码进入后没有任何权力,命令也没有
*ftp虚拟用户配置
1)创建虚拟帐号身份
vim /etc/vsftp/redhat ##文件名任意,可以填写多行,但是每行不能有空格
db_load -T -t hash -f /etc/vsftpd/lredhat /etc/vsftpd/lredhat.db
- T :要转换 t : 转换的格式 hash : 哈希加密 f : 目的地
vim /etc/pam.d/redhat ##文件名称任意
//required 必须符合我的规定才能通过本次验证,account 用户验证,auth 密码认证
vim /etc/vsftpd/vsftpd.conf ##配置vsftpd服务参数
pam_service_name=redhat ##在/etc/pam.d/中设置的文件名(redhat),表示进入时读的是redhat这个用户目录
//虚拟帐号的建立一定在/etc/vsftpd/下创建,db文件也要
guest_enable=YES
guest_username=ftp ##指定进入的是ftp服务的目录,也可以写别的,添加u-w是保护用户安全
3)家目录的设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/ \$USER
user_sub_token=$USER
mkdir -p /ftpuserhome/ftpuser{1..3}/pub
chgrp ftp /ftpuserhome
2)虚拟帐号的服务配置
vim /etc/vsftpd/vstpd.conf
user_config_dir=/etc/vsftpd/vuserconf
//这个文件名字随意,但是要mkdir它,然后在里面写的文件文件名是用户名,然后这个文件里面写的就是权限
//总开关vsftpd.conf里面的可以都关闭,然后单独在之前创建的文件夹里面的文件中修改添加权限
mkdir -p /etc/vsftpd/vuserconf/user1
vim /etc/vsftpd/userconf/user1
//这里创建的是以你设置好的虚拟用户为名的文件,在其中填写vsftpd中对应的配置权限信息
//在此外文件中设定配置文件中的所有参数,此文件的优先级高
在主配置中
在user1单独的配置中
//因为添加了如图权限,所以之后就可以上传,并且添加文件了,但注意,这只是user1的权限,其他的还要自行添加