您当前正在使用Internet Explorer (IE)浏览器访问本站,本站不兼容性此浏览器
请使用非IE浏览器访问本网站
centos7 安装配置vsftpd 和配置虚拟用户
技术积累 Linux Vsftp Centos7

在系统环境 centos7.3 版本,安装配置vsftpd服务和配置虚拟用户

ftp 根目录 : /data/ftp

ftp 配置文件目录:/etc/vsftpd

ftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config

实现目标
1,匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录
2,虚拟用户登录后权限和对应虚拟用户配置文件有关,且只能在自己宿主目录中操作

1,安装vsftpd和db_load加密工具

#要关闭selinux 和防火墙或者开启允许的端口,不然访问会有问题
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #修改配置文件
setenforce 0  #临时关闭
systemctl stop firewalld.service #关闭防火墙
yum install vsftpd libdb libdb-utils net-tools -y

2,创建本地用户[用于映射虚拟用户]

#创建用户指定目录
mkdir /data
useradd -d /data/ftp vuser -s /sbin/nologin
更改权限和主组权限
chmod 755 /data/ftp
chown vuser.root /data/ftp

3,创建虚拟用户[用户和密码]文件

vim /etc/vsftpd/vuser-list
#格式为第一行用户名,第二行密码,依次类推
jin
123456
jinc
123123

4,加密用户密码文件生成数据库文件

cd /etc/vsftpd/
db_load -T -t hash -f ./vuser-list ./vuser-list.db
chmod 600 vuser-list.db

5,创建PAM认证文件

vim /etc/pam.d/vuser.vu
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list    #注意64位系统写/lib64这个路径,32位系统要写成/lib,下同!
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser-list

6,修改配置文件 ```bash vim /etc/vsftpd/vsftpd.conf #开启匿名用户访问 anonymous_enable=YES #允许本地用户登录,允许写入,默认权限掩码 local_enable=YES write_enable=YES local_umask=022 #匿名用户上传默认权限掩码,允许上传、新建 anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES #匿名用户修改删除权限 #anon_other_write_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES listen=YES listen_ipv6=NO #修改ftp默认目录到/data/ftp下面 chroot_local_user=YES local_root=/data/ftp anon_root=/data/ftp #pam认证文件 pam_service_name=vuser.vu #虚拟用户权限配置目录 user_config_dir=/etc/vsftpd/vuser_config userlist_enable=YES tcp_wrappers=YES allow_writeable_chroot=YES one_process_model=NO #开启虚拟用户 guest_enable=YES guest_username=vuser #启用pasv模式 pasv_enable=YES pasv_promiscuous=YES pasv_min_port=33000 pasv_max_port=34000 #禁止反向域名解析,若是没有添加这个参数可能会出现用户登陆较慢,或则客户链接不上ftp的现象 reverse_lookup_enable=NO ```

7,重启vsftpd服务

```bash systemctl restart vsftpd.service ```

8,创建虚拟用户[权限]配置文件

```bash mkdir -p /etc/vsftpd/vuser_config mkdir -p /data/ftp/jinc mkdir -p /data/ftp/jin mkdir -p /data/ftp/test cd /etc/vsftpd/vuser_config vim jin #有所有权限 local_root=/data/ftp/jin #设置登录后禁锢的目录 write_enable=yes #开放写权限 anon_world_readable_only=no #开放下载权限 anon_upload_enable=yes #开放上传权限 anon_mkdir_write_enable=yes #开放创建目录的权限 anon_other_write_enable=yes #开放删除和重命名的权限 anon_umask=022 #掩码 vim jinc #只有上传下载的权限 local_root=/data/ftp/jinc anon_upload_enable=yes anon_world_readable_only=no ```

9,更改虚拟用户目录权限

```shell #如果不更改的话,匿名用户是可以访问到的 cd /data/ftp chown vuser.vuser jin jinc test -R chmod 700 jin chmod 700 jinc ```

10,访问测试:[先在用户文件夹中建个测试的文件夹或文件,方便识别]

匿名访问 ![【匿名】访问][1] 登录jin 用户访问: ![登录【jin】用户访问][2] 登录 jinc 用户访问: ![登录jinc用户访问][3]

错误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]: https://blog.wojc.cn/wp-content/uploads/2017/07/anon.gif [2]: https://blog.wojc.cn/wp-content/uploads/2017/07/jin.gif
本文最后记录时间 2023-10-14
文章链接地址:
https://wojc.cn/archives/14.html
本站文章除注明[转载|引用|来源|来自],均为本站原创内容,转载前请注明出处
Linux 定时任务:at 与 crontab
Win11安装使用Linux子系统遇到的问题
统计文本中每个字符出现的次数
Nali 离线ip数据库文件

python 学习写脚本

linux yum安装开发工具包组

留言

顶部