Linux centos 7 安装vsftp-server服务器

一、系统环境
  # cat /etc/redhat-release 
  CentOS Linux release 7.6.1810 (Core)
二、安装 vsftp 服务
  # yum -y install vsftpd db4*  (db4配置虚拟用户生成db库文件)
三、配置vsftp服务器主要配置文件
  # cp /etc/vsftpd/vsftp.conf{,.bak}
  # grep -v '^#' /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=NO
xferlog_std_format=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
####添加如下###########
chroot_local_user=YES
chroot_list_enable=YES  #(1.所有用户都被限制在其主目录下 
              2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制)
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO
virtual_use_local_privs=NO
############# 以下开启虚拟用户权限#################
guest_enable=YES
guest_username=vsftpuser
user_config_dir=/etc/vsftpd/v_conf
pasv_enable=YES
pasv_min_port=33000
pasv_max_port=34000
	
四、先建立虚拟用户名单文件
    # touch /etc/vsftpd/user_ftp
    # cat /etc/vsftpd/user_ftp (第一行账号,第二行密码)
	admin (账号)
	123456 (密码)
	user   (账号)
	123456(密码)
五、创建用户和组
    # useradd -d /opt/ftpdata -s /sbin/nologin vsftpuser
    # touch /etc/vsftpd/chroot_lis #(1.所有用户都被限制在其主目录下 
	                2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制)
    # mkdir -p /etc/vsftpd/v_conf  #(虚拟用户配置文件目录)
六、在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)
    # cp /etc/pam.d/vsftpd(,.bak)
    # vim /etc/pam.d/vsftpd  
    auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/user_ftp
    account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/user_ftp
七、生成虚拟用户数据文件:
    # db_load -T -t hash -f /etc/vsftpd/user_ftp /etc/vsftpd/user_ftp.db
      # chmod 600 /etc/vsftpd/user_ftp.db  #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
八、创建ftp目录
    # mkdir -p /opt/ftpdata/
    # chown -R vsftpuser.vsftpuser /opt/ftpdata
九、配置用户登录ftp server
    # mkdir -p /opt/ftpdata/admin/system-file
    # chmod a-w /opt/ftpdata/admin #(新版本vsftp增加了ftp服务安全性,根目录不能有写入的权限,去掉写的权限)
    # chown -R vsftpuser.vsftpuser /opt/ftpdata/admin
    # chmod -R 700 /opt/ftpdata/admin/system-file
    # vim /etc/vsftpd/user_ftp #(添加用户)
    # cat /etc/vsftpd/user_ftp #(第一行账号,第二行密码)
    admin  #(账号)
    123456 #(密码)
    # db_load -T -t hash -f /etc/vsftpd/user_ftp /etc/vsftpd/user_ftp.db
    # chmod 600 /etc/vsftpd/user_ftp.db
十、建立虚拟用户个人Vsftp的配置文件
    # cd /etc/vsftpd/v_conf
    # vim admin #(创建文件和设置的虚拟用户,名字要一样)
    # cat admin
local_root=/opt/ftpdata/admin
anon_umask=077 
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
	
十一、启动 ftp server service
	# systemctl start vsftpd.service
	# systemctl enable vsftpd.service
十二、配置虚拟用户脚本

#!/bin/bash
################################
## Writer By Tian              #
## Ver 1.0 At 20190107         #
## sh vsftp.sh name password   #
################################
data=/opt/ftpdata
if [ $# -eq 3 ];then
    user=$1
    pawd=$2
    path=$3
	for i in `sed -n '1~2p' /etc/vsftpd/user_ftp`;do
	if [ $user == $i ];then
            echo "user '$user' already exists"
            exit 1
        fi
    done
    if [ ! -d "$path" ];then
        mkdir -p $path
    fi
    echo -e "$user\n$pawd" >> /etc/vsftpd/user_ftp
    db_load -T -t hash -f /etc/vsftpd/user_ftp /etc/vsftpd/user_ftp.db
    touch /etc/vsftpd/v_conf/$user
cat >>/etc/vsftpd/v_conf/$user <<EOF
local_root=$path/$user
anon_umask=077 
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
else
    echo "Please input user pawd and path"
fi
mkdir -p $data/$user/System-file
chown -R vsftpuser.vsftpuser ${data}/$user
chmod a-w $data/$user
chmod -R 700 $data/$user/System-file

脚本执行:./vsftp.sh username  password /opt/ftpdata/username

效果如下:QQ截图20190108124252.png