CENTOS 安装和简易配置VSFTP

本文详细介绍了在CentOS7系统中配置VSFTP服务器的过程,包括安装、基础指令、防火墙设置、用户权限配置及虚拟用户管理,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

centos 7

你也许会用到的基础指令看这里:CENTOS 一些常用的指令

安装vsftp

yum -y install vsftpd

打开、关闭、查看状态、开机启动

systemctl start vsftpd.service
systemctl stop vsftpd.service
systemctl status vsftpd.service
systemctl enable vsftpd.service

如果只是用sftp方式使用root账户登录上传下载文件,这个就够用了!客服端选择连接的时候使用 SFTP(FTP OVER SSH),端口号22

简易配置使用FTP登录

VSFTP 配置文件地址:

vim /etc/vsftpd/vsftpd.conf

基础设置

pam_service_name=vsftpd
tcp_wrappers=YES
listen_port=21
write_enable=YES

防火墙放行21端口

firewall-cmd --zone=public --add-port=21/tcp --permanent

firewall-cmd --reload

开启pasv

如果你想在浏览中也能访问ftp,但是又不想麻烦的设置浏览器,那么可以开启 vsftp的被动(pasv)模式:

pasv_enable=YES
pasv_max_port=30000
pasv_min_port=30000

30000这个端口选用你自己的没有被占用的端口就行,你也可以修改min和max多设置几个端口,目前端口设置多少对vsftp有什么影响我也不是很清楚,然后防火墙放行你添加的端口

firewall-cmd --zone=public --add-port=30000/tcp --permanent
firewall-cmd --reload

先期准备

我们这里假定使用条件是,普通用户登录进入默认目录为:/usr/local/ftp;匿名用户默认目录为:/usr/local/ftp/share;这个目录根据自己的需求设定

#创建一个 ftp目录,你可以用自己的路径
mkdir /usr/local/ftp
#修改任何人可以都可以读写权限
chmod -R a=rwx /usr/local/ftp
#查看一下是不是都具有了读写权限
getfacl /usr/local/ftp

#创建一个匿名用户使用的目录,你可以用自己的目录
mkdir /usr/local/ftp/share

匿名用户登录配置

修改vsftp配置文件,首先保证

#允许匿名登录,设置NO表示不允许匿名登录
anonymous_enable=YES

然后添加

#设置匿名用户的基本目录
anon_root= /usr/local/ftp/share
#允许匿名用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES

anon_root= /usr/local/ftp/share ,这个是设置匿名用户的根目录,你可以使用你自己的

这个设置是允许匿名用户上传文件,但是一般情况下我们都不允许匿名用户上传,只能查看和下载,禁止的方法如下:

修改上面配置中的部分内容如下:

#不允许匿名用户上传
anon_upload_enable=NO
anon_mkdir_write_enable=NO

但是修改了之后,由于vsftp要检查chroot权限,所以我们这里要修改一下匿名用户主目录的权限,取消他的写权限,如果不取消会出现:

vsftpd: refusing to run with writable root inside chroot() 

错误,导致不能连接

默认匿名用户的用户名为ftp,如果你修改了请在下面修改为你修改后默认的用户名

#修改目录的所有者为ftp
chown -R ftp /usr/local/ftp/share

#禁用文件所有(ftp)的写权限
chmod -R u-x /usr/local/ftp/share


# ftp :为你的匿名用户的统一id,也是vsftp默认的
#/usr/local/ftp/share :上面的配置中 anon_root= /usr/local/ftp/share 这一项中你设置的匿名用户的主目录

本地用户登录配置

怎么创建一个只能登录FTP的用户

我们这里新建一个测试用户:ftptest,并把他放在ftp组里面,且不能让他直接登录系统,可以登录FTP

#添加一个用户
useradd -g ftp -s /sbin/nologin ftptest
#设置密码 为 123456
echo "123456" | passwd --stdin ftptest

有的系统没有 /sbin/nologin shell那么修改vim /etc/shells 添加如下:

/sbin/nologin

配置

修改配置文件 /etc/vsftpd/vsftpd.conf,增加如下,先添加 然后按照后面的说明,根据你自己的需求修改

#开启userlist的限制本地用户功能
userlist_enable=YES
#YES 表示在user_list中的用户不能登录,NO表示只允许在user_list中的用户才能登录
userlist_deny=YES
#允许用户对主目录拥有写权限,否则就只能在系统中把主目录的写权限去掉
allow_writeable_chroot=YES
#设置本地用户登录后的默认目录
local_root=/usr/local/ftp
#限制本地用户只能访问配置的默认目录下的内容,只有在chroot_list中的用户才能访问默认目录以外的内容
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

用户限制说明

vsftp下有2个用户列表:

     1、/etc/vsftpd/ftpusers :凡是在这个目录中的用户 不论什么情况下都不能登录FTP

           如果你想让在系统中的某个用户(如:root)登录FTP那么首先vim /etc/vsftpd/ftpusers 注释掉root。

    2、/etc/vsftpd/user_list :根据以上的配置文件来确定是否可以登录FTP,有效配置为如下:

#开启userlist的限制本地用户功能
userlist_enable=YES
#YES 表示在user_list中的用户不能登录,NO表示只允许在user_list中的用户才能登录
userlist_deny=YES

    这里分情况说明:

  • userlist_enable=NO :不开启/etc/vsftpd/user_list  的用户检测功能,任何合法用户都可以登录(在/etc/vsftpd/ftpusers中的用户除外)

  • userlist_enable=YES :开启/etc/vsftpd/user_list  的用户检测功能,根据 userlist_deny 的配置来确定,具体看配置上的注释

  用户主目录限制配置说明      

 

#限制本地用户只能访问配置的默认目录下的内容,只有在chroot_list中的用户才能访问默认目录以外的内容
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

    chroot_local_user : NO (默认值)下面两项配置无效,所有用户都可以访问local_root=/usr/local/ftp 配置的之外的目录(可以访问整个服务器上的所有文件),即这个配置只是用户登录后的默认的所在目录,没有其他限制作用。

     chroot_local_user : YES  限制所有用户只能访问设定的主目录,是否有例外根据后面2项配置确定:

  • chroot_list_enable : NO (默认)不启用例外

  • chroot_list_enable : YES,在chroot_list_file=/etc/vsftpd/chroot_list 配置文件中列出的用户例外,可以访问其他目录

虚拟用户登录配置

新建一个虚拟用户适用的本地用户,名称可以自己定,我这里使用ftpviruser

useradd -g ftp -s /bin/false ftpviruser

新建一个用于存放虚拟用户权限的目录,路径可以自己定

mkdir /etc/vsftpd/virusers

修改 主配置 /etc/vsftpd/vsftpd.conf,添加如下:

#启用虚拟用户
guest_enable=YES
#刚才建立的用于虚拟用户的系统用户
guest_username=ftpviruser
#设置刚才建立的存放虚拟用户权限的目录
user_config_dir=/etc/vsftpd/virusers

增加虚拟用户的用户列表,名字可以自己定义,我这里用的是viruser_list.并增加用户,用户ID和密码分为2行,依次增加,如下:

vim /etc/vsftpd/viruser_list

内容举例如下,实际根据自己的用户添加:

ftpvir1
123456
ftpvir2
123456
ftpvir4
123456

生成用户数据库文件,并修改权限。以后每次修改viruser_list的内容后都需要 生成数据库文件(不需要再修改权限)

db_load -T -t hash -f /etc/vsftpd/viruser_list /etc/vsftpd/viruser_list.db
chmod 700 /etc/vsftpd/viruser_list.db

#以上执行时如果没有db_load命令 则安装
yum -y install libdb-utils

修改PAM验证文件

vim /etc/pam.d/vsftpd

   在前面增加如下内容(这样可以保证本地用户也可以登录,否则本地用户则不能登录)

auth sufficient pam_userdb.so db=/etc/vsftpd/viruser_list
account sufficient pam_userdb.so db=/etc/vsftpd/viruser_list

示例如下

增加用户权限文件,这里仅以一个用户为例,虚拟用户只能访问设置的目录:

vim /etc/vsftpd/virusers/ftpvir1
#允许下载
anon_world_readable_only=NO
write_enable=YES
#默认目录,需要把目录的权限赋给前面创建的系统用户,我这里是ftpviruser,具体什么权限根据你的需求来,不知道就777
local_root= /usr/local/ftp
#是否允许上传
anon_upload_enable=YES
#是否允许创建目录
anon_mkdir_write_enable=YES
#是否允许其他写操作,如删除,重命名等
anon_other_write_enable=YES

重启VSFTP

以上有不知道命令可以查看:CENTOS 一些常用的指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值