博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vsftp配置虚拟账户
阅读量:6147 次
发布时间:2019-06-21

本文共 2928 字,大约阅读时间需要 9 分钟。

需求:使用vsftp创建虚拟账户,每个账户都限制在定义的各自的根目录里。

环境:CentOS7.6

1.安装必须的软件包

# yum ×××tall vsftpd libdb-utils

2.设置虚拟账户信息(使用文件存储)

2.1 创建明文账户信息

# vim /etc/vsftpd/vuser_listuser0passwd0user1passwd1

说明:上述文件vuser_list存放用户名和密码,奇数行为账号,偶数行为密码。

2.2 创建数据库账户信息

db_load -T -t hash -f /etc/vsftpd/vuser_list /etc/vsftpd/vuser_list.db

3.设置基于虚拟用户验证的PAM文件

# vim /etc/pam.d/vsftpd.vuser auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser_listaccount required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser_list

4.创建虚拟账户的主目录

# mkdir /var/ftp/user0# mkdir /var/ftp/user1

更改虚拟账户的宿主用户

chown -R ftp.root /var/ftp

更改宿主目录的权限以禁止匿名用户进入

chmod 700 /var/ftp/*

说明:

  1. ftp默认秘密为空,建议使用修改密码,执行如下命令并按提示输入新的密码。
    # passwd ftp
  2. 此处使用了默认的ftp账户的主目录,也可以单独创建新的账户和主目录,如下:

    • 建立ftp用户目录
      # mkdir -p /data/ftp
    • 创建用户
      # useradd -d /data/ftp vuser -s /sbin/nologin
    • 更改权限
      # chmod 755 /data/ftp
    • 更改宿主账户
      # chown vuser.root /data/ftp

5.修改vsftpd的配置文件

# vim /etc/vsftpd/vsftpd.conf# 禁止匿名用户anonymous_enable=NO# 允许本地账户登陆local_enable=YES# 设置本地账户的主目录local_root=/var/ftp# 允许写入write_enable=YES# 设置上传写入掩码local_umask=022# 设置主动方式连接(可以应用与NAT环境)connect_from_port_20=YES# 改变上传文件的宿主账户chown_upload=YESchown_username=ftp# 设置排他用户chroot_local_user=YES# 设置监听IPv4地址listen=YESlisten_ipv6=NO# 设置PAM文件pam_service_name=vsftpd.vuser# 开启虚拟用户guest_enable=YESguest_username=ftp# 虚拟用户权限配置目录:'vuser_conf'user_confg_dir=/etc/vsftpd/vuser_conf#userlist_enable=YESallow_writeable_chroot=YES

6. 设置每个虚拟账户的配置文件

准备虚拟账户配置目录

mkdir -p /etc/vsftpd/vuser_conf

创建虚拟账户的个性化配置文件,每个账户的配置文件名与账户名一致,以user0为例进行说明。

# vim /etc/vsftpd/vuser_conf/user0#设置登录后禁锢的目录local_root=/var/ftp/user0#开放写权限write_enable=yes#开放下载权限anon_world_readable_only=no#开放上传权限anon_upload_enable=yes#开放创建目录的权限anon_mkdir_write_enable=yes#开放删除和重命名的权限anon_other_write_enable=yes

以上是所有的权限,可以根据需要进行删除。

7.更改防火墙设置

开放ftp服务端口,--permanent作用是永久保存。

# firewall-cmd --add-service=ftp --permanentsuccess

重新加载防火墙设置

# firewall-cmd --reloadsuccess

8.更改SELinux设置

# setsebool ftpd_full_access on -P

9.启动vsftpd

启动服务

# systemctl start vsftpd

设置自启动

# systemctl enable vsftpd

10.其他说明

  1. 增删账户
    增删除账户只需要编辑明文账户,重新生成db文件即可,另外记得新建/删除相应的虚拟账户的主目录。
  2. 错误处理:
    • 错误1:226 Transfer done (but failed to open directory)
      解决:selinux 和防火墙导致
    • 错误2:500 OOPS: vsftpd: refusing to run with writable root ×××ide chroot()
      解决:配置文件中加入 allow_writeable_chroot=YES 针对标准vsftpd(standonly)模式,然后重启ftp
  3. chroot的相关选项:
    chroot_local_user=YES|NOchroot_list_enable=YES|NOchroot_list_file=/etc/vsftpd/chroot_list

    该选项的作用是禁锢ftp的本地用户于家目录之中。 但是限制和不限制哪些用户是相对于chroot_local_user是否开启而言的。chroot_local_user和chroot_list_enable总是背道而驰。

    方式一:

    chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list

    该方式表明/etc/vsftpd/chroot_list列表里的所有账号都被不会被限制在其家目录里面。列表以外的用户都被限制。

    方式二:

    chroot_local_user=NOchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list

    该方式表明/etc/vsftpd/chroot_list列表里的所有用户都被限制在其家目录里面,但是该列表以外的用户都不被限制在它们的家目录里面。详细理解自己试验。

  4. listen_ipv6=YES和listen=YES这两个不能同时开启,只能开启其中一个。详情看配置文件上有解释。

转载于:https://blog.51cto.com/huanghai/2409207

你可能感兴趣的文章
unix环境高级编程-高级IO(2)
查看>>
树莓派是如何免疫 Meltdown 和 Spectre 漏洞的
查看>>
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
JQuery radio单选框应用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
HDU2502 月之数(解法三)
查看>>
栈的压入、弹出序列 (剑指offer)
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
layer弹出层不居中解决方案,layer提示不屏幕居中解决方法,layer弹窗不居中解决方案...
查看>>
获取本机外网ip和内网ip
查看>>