首页 > 系统相关 >vsftpd部署(centos7.9)

vsftpd部署(centos7.9)

时间:2024-09-21 22:13:12浏览次数:13  
标签:ftp CentOS centos7.9 部署 vsftpd var 权限 root

说明:
– vsftpd的版本:vsftpd-3.0.2-29.el7_9.x86_64
– ftp根目录:/var/www
– ftp 配置文件目录:/etc/vsftpd
– ftp 虚拟用户权限配置文件目录:/etc/vsftpd/user_conf

实现目标:
– 匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录
– 虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作

搭建过程
1. 安装vsftpd,ftp和libdb-utils(需要安装db包,用来加密虚拟用户的账号信息,centos7已经安装好了)

#阿里云服务器默认安装,此处可忽略
[root@CentOS ~]# yum install -y vsftpd ftp
  1. 创建本地用户(用于映射虚拟用户)
# 建立ftp用户目录
[root@CentOS ~]# mkdir -p /var/www/test.com
# 创建用户
[root@CentOS ~]# useradd -d /var/www/ vsftp -s /sbin/nologin
# 更改权限和主组权限
[root@CentOS ~]# chmod 755 /var/www/
[root@CentOS ~]# chown vsftp.vsftp /var/www/  -R
  1. 修改配置文件
[root@CentOS ~]# cd /etc/vsftpd
[root@CentOS ~]# mv vsftpd.conf vsftpd.conf.bak
[root@CentOS ~]# vim /etc/vsftpd/vsftpd.conf
# 不允许匿名用户访问
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
#修改ftp默认端口(涉及等保和网络安全检查会扫描默认的21端口,所以修改端口号)
listen_port=1802
# 限制pasv的打开端口范围(不开这个ftp客户端连不上)
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10010
# 修改ftp默认目录
chroot_local_user=YES
local_root=/var/www/test.com
anon_root=/var/www/test.com
anon_umask=022
# pam认证文件,注意下列值要跟第5步文件名一致
pam_service_name=vsftpd
#虚拟用户权限配置目录
user_config_dir=/etc/vsftpd/user_conf
userlist_enable=YES
tcp_wrappers=YES
allow_writeable_chroot=YES
one_process_model=NO
#开启虚拟用户
guest_enable=YES
guest_username=vsftp
  1. 创建存储虚拟用户的文件
[root@CentOS ~]# mkdir /etc/vsftpd/user_conf/
[root@CentOS ~]# cd /etc/vsftpd/user_conf
[root@CentOS ~]# vim xxx
# 设置登录后禁锢的目录
local_root=/var/www/test.com
# 开放写权限
write_enable=yes
# 开放下载权限
anon_world_readable_only=no
# 开放上传权限
anon_upload_enable=yes
# 开放创建目录的权限
anon_mkdir_write_enable=yes
# 开放删除和重命名的权限
anon_other_write_enable=yes
  1. 生成数据库文件并创建PAM认证文件
[root@CentOS ~]# cd /etc/vsftpd/
[root@CentOS ~]# vim virtusers
xxx
gF9@@rH1%hxxyyyyyxxxxxxxxx22;8~
[root@CentOS ~]# db_load -T -t hash -f virtusers virtusers.db
[root@CentOS ~]# chmod 600 virtusers.db
[root@CentOS ~]# cd /etc/pam.d/
[root@CentOS ~]# mv vsftpd vsftpd.bak
[root@CentOS ~]# vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
  1. 启动vsftpd服务
[root@CentOS ~]# systemctl start vsftpd
[root@CentOS ~]# systemctl enable vsftpd
  1. 更改虚拟用户目录权限
[root@CentOS ~]# mkdir /var/ftp/admin && chmod 700 /var/ftp/admin
[root@CentOS ~]# mkdir /var/ftp/user && chmod 700 /var/ftp/user
[root@CentOS ~]# chown -R vsftp.root  /var/ftp
  1. 测试访问
[root@CentOS ~]# ftp 127.0.0.1
 Connected to 127.0.0.1 (127.0.0.1).
 220 (vsFTPd 3.0.2)
 Name (127.0.0.1:root): xxx
 331 Please specify the password.
 Password:
 230 Login successful.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> exit
 221 Goodbye.
  1. 添加新用户(不需要重启vsftpd服务)
[root@CentOS ~]# vim /etc/vsftpd/vuser_list
admin
123456
user
123456
test
123456
#创建test用户对应的目录并授权
[root@CentOS ~]# mkdir /var/ftp/test && chown vsftp:root /var/www/test
#重新生成加密的db文件
[root@CentOS ~]# cd /etc/vsftpd
[root@CentOS ~]# db_load -T -t hash -f vuser_list vuser_list.db
# 删除用户就是把添加用户的操作撤销,然后删除加密的db文件重新生成即可。
# 测试访问,此时添加的test用户的/var/ftp/test目录的权限是755,匿名用户可以登录。若要屏蔽,修改权限为700即可。
  1. 问题处理

– 报错1:226 Transfer done (but failed to open directory)
解决:关闭selinux和防火墙
– 报错2:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解决:配置文件中加入 allow_writeable_chroot=YES 针对标准vsftpd(standonly)模式,然后重启ftp。

  1. vsftp上传文件权限问题
    file_open_mode上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。
    默认情况下vsftp上传之后文件的权限是600,目录权限是700

* local_umask=xxx这是指定本地用户上传后的文件权限设置
* anon_umask=xxx这是指定虚拟用户上传后的文件权限设置
* umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限
* umask = 022时,新建的目录 权限是755,文件的权限是 644
* umask = 077时,新建的目录 权限是700,文件的权限时 600

  1. 部署云服务器上,安全组放开1802还是连接失败
    按照配置文件中设置被动端口范围,放开安全组

  2. 使用FileZilla连接报超时
    修改配置

标签:ftp,CentOS,centos7.9,部署,vsftpd,var,权限,root
From: https://www.cnblogs.com/ruiops/p/18424598

相关文章

  • Springboot基于SpringBoot构建的高校疫情防控平台523g7(程序+源码+数据库+调试部署+开
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着新冠疫情的全球蔓延,高校作为人员密集场所,成为疫情防控的重点和难点。传统的人工管理方式已难以满足高校疫情防控的需求,亟需......
  • Springboot基于springboot的网上点餐系统itpb8--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网技术的飞速发展,网络订餐已成为现代人生活中不可或缺的一部分。为了提高餐饮行业的服务效率与顾客体验,开发一款基于Sp......
  • Springboot基于springboot的疫苗接种信息管理系统co3h1程序+源码+数据库+调试部署+开
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着全球疫苗接种工作的加速推进,高效、准确的疫苗信息管理成为公共卫生体系的重要一环。传统的人工记录方式已难以满足大规模、......
  • k8s集群更新证书(kubeadm方式部署的集群)
    特别注意:证书到期前替换!!!先查看有哪些证书即将过期点击查看代码foritemin`find/etc/kubernetes/pki-maxdepth2-name"*.crt"`;doopensslx509-initem-text-noout|grepNot;echo======================item===============;doneforfin(ls/etc/kubernetes/......
  • k8s部署kubepi
    Kubepikubepi是飞致云旗下品牌,部署很方便,页面布局简单,授权方便且颗粒度较细,没有集群数量限制,但是用户名不支持邮箱,这点不知道啥时候改进。1.pvc.yaml点击查看代码apiVersion:v1kind:PersistentVolumeClaimmetadata:name:pvc-kubepinamespace:itcast-opsspec:......
  • 微服务jenkins解析部署使用全流程
    1、Jenkins1、什么是JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。2、Jenkins的作用持续的软件版本发布/测试项目。监控外部调用执行的工作。(Jenkins有很多的插......
  • kubeasz 部署k8s1.30.1集群
    实验环境系统:ubuntu24.04cat/etc/hosts192.168.0.71jichao71192.168.0.72jichao72192.168.0.73jichao73192.168.0.74jichao74192.168.0.75jichao75主节点安装ansible#主节点安装apt-get-yinstallansible下载kubeasz最新版本exportrelease=3.6.4wget......
  • SkyWalking 环境搭建部署
    架构简介skywalkingagent:和业务系统绑定在一起,负责收集各种监控数据skywalkingoapservice:是负责处理监控数据的,比如接受skywalkingagent的监控数据,并存储在数据库中;接受skywalkingwebapp的前端请求,从数据库查询数据,并返回数据给前端。Skywalkingoapservice通常......
  • docker阶段03 docker容器内hosts文件, DNS, 查docker空间占用, 部署自动化运维平台spu
    容器内部的hosts文件容器会自动将容器的ID加入自已的/etc/hosts文件中,并解析成容器的IP范例:修改容器的hosts文件[root@ubuntu1804~]#dockerrun-it--rm--add-hostwww.wangxiaochun.com:6.6.6.6--add-hostwww.wang.org:8.8.8.8busybox/#cat/etc/hosts127.0.0......
  • Kubernetes集群部署(kubernetes)
    三台主机恢复到docker快照状态;检查驱动器类型为sytemd;设置各个节点的主机名;然后同步会话,修改hosts文件;在k8s运行过程中不建议使用交换分区;关闭交换分区;但是这种方法是临时性的;如何设置永久不启用交换分区;交换分区也是以挂载的方式加入到系统中的;注释掉......