vsftp配置虚拟帐户

需求:使用vsftp建立虚拟帐户,每一个帐户都限制在定义的各自的根目录里。
环境:CentOS7.6linux

1.安装必须的软件包

# yum ×××tall vsftpd libdb-utils

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

2.1 建立明文帐户信息

# vim /etc/vsftpd/vuser_list

user0
passwd0
user1
passwd1

说明:上述文件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_list
account required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vuser_list

4.建立虚拟帐户的主目录

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

更改虚拟帐户的宿主用户vim

chown -R ftp.root /var/ftp

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

chmod 700 /var/ftp/*

说明:ui

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

    • 创建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=YES
chown_username=ftp
# 设置排他用户
chroot_local_user=YES
# 设置监听IPv4地址
listen=YES
listen_ipv6=NO
# 设置PAM文件
pam_service_name=vsftpd.vuser
# 开启虚拟用户
guest_enable=YES
guest_username=ftp
# 虚拟用户权限配置目录:'vuser_conf'
user_confg_dir=/etc/vsftpd/vuser_conf
#
userlist_enable=YES
allow_writeable_chroot=YES

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

准备虚拟帐户配置目录ip

mkdir -p /etc/vsftpd/vuser_conf

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

# 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

以上是全部的权限,能够根据须要进行删除。hash

7.更改防火墙设置

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

# firewall-cmd --add-service=ftp --permanent
success

从新加载防火墙设置

# firewall-cmd --reload
success

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|NO
    chroot_list_enable=YES|NO
    chroot_list_file=/etc/vsftpd/chroot_list

    该选项的做用是禁锢ftp的本地用户于家目录之中。 可是限制和不限制哪些用户是相对于chroot_local_user是否开启而言的。chroot_local_user和chroot_list_enable老是背道而驰。
    方式一:

    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

    该方式代表/etc/vsftpd/chroot_list列表里的全部帐号都被不会被限制在其家目录里面。列表之外的用户都被限制。
    方式二:

    chroot_local_user=NO
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

    该方式代表/etc/vsftpd/chroot_list列表里的全部用户都被限制在其家目录里面,可是该列表之外的用户都不被限制在它们的家目录里面。详细理解本身试验。

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