linux学习之旅(十六)&& FTP/Vsftpd

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的权限,其他的还要自行添加

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段脚本的作用是修改/etc/vsftpd/vsftpd.conf文件FTP服务器配置。具体解释如下: ```shell if [ -f "/etc/vsftpd/vsftpd.conf" ];then if grep -q "ftpd_banner=Welcome to blah FTP service" /etc/vsftpd/vsftpd.conf then sed -i '/ftpd_banner=Welcome to blah FTP service/s/^#//' /etc/vsftpd/vsftpd.conf else echo 'ftpd_banner=Welcome to blah FTP service' >> /etc/vsftpd/vsftpd.conf fi if grep -q "chroot_local_user" /etc/vsftpd/vsftpd.conf then sed -i '/chroot_local_user=NO/s/^/#/' /etc/vsftpd/vsftpd.conf sed -i '/chroot_local_user=YES/s/^/#/' /etc/vsftpd/vsftpd.conf echo 'chroot_local_user=NO' >> /etc/vsftpd/vsftpd.conf else echo 'chroot_local_user=NO' >> /etc/vsftpd/vsftpd.conf fi if grep -q "chroot_list_enable" /etc/vsftpd/vsftpd.conf then sed -i '/chroot_list_enable=NO/s/^/#/' /etc/vsftpd/vsftpd.conf sed -i '/chroot_list_enable=YES/s/^/#/' /etc/vsftpd/vsftpd.conf echo 'chroot_list_enable=YES' >> /etc/vsftpd/vsftpd.conf else echo 'chroot_list_enable=YES' >> /etc/vsftpd/vsftpd.conf fi ``` - 首先检查/etc/vsftpd/vsftpd.conf文件是否存在。 - 如果存在,则执行以下操作: - 检查文件是否存在"ftpd_banner=Welcome to blah FTP service"这一行。 - 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。 - 如果不存在,则在文件末尾添加一行"ftpd_banner=Welcome to blah FTP service",即设置FTP服务的欢迎信息。 - 检查文件是否存在"chroot_local_user"这一行。 - 如果存在,则使用sed命令将"chroot_local_user=NO"和"chroot_local_user=YES"这两行的行首添加注释符号#,以禁用chroot_local_user功能。 - 然后在文件末尾添加一行"chroot_local_user=NO",即禁用本地用户的chroot特性。 - 如果不存在,则在文件末尾添加一行"chroot_local_user=NO",即禁用本地用户的chroot特性。 - 检查文件是否存在"chroot_list_enable"这一行。 - 如果存在,则使用sed命令将"chroot_list_enable=NO"和"chroot_list_enable=YES"这两行的行首添加注释符号#,以禁用chroot_list_enable功能。 - 然后在文件末尾添加一行"chroot_list_enable=YES",即启用chroot列表。 - 如果不存在,则在文件末尾添加一行"chroot_list_enable=YES",即启用chroot列表。 这段脚本的目的是修改/etc/vsftpd/vsftpd.conf文件FTP服务器配置,包括设置FTP服务的欢迎信息、禁用本地用户的chroot特性和启用chroot列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值