1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| #! /bin/bash # 指定虚拟用户文件 cat >>/etc/vsftpd/vuser.list<<EOF admin admin123 EOF
# 使用db_load命令用哈希算法将原始的明文信息文件转换成数据库文件 db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db chmod 600 /etc/vsftpd/vuser.db rm -f /etc/vsftpd/vuser.list
# 创建用户映射 useradd -d /var/ftproot -s /sbin/nologin virtual ls -ld /var/ftproot/ chmod -Rf 755 /var/ftproot/ cat >>/etc/pam.d/vsftpd.vu<<EOF auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser EOF
# 创建数据目录 mkdir -p /data mkdir -p /home/data chown -R virtual:virtual /data chown -R virtual:virtual /home/data ln -s /home/data /data
mkdir /etc/vsftpd/vusers_dir/ cat >>/etc/vsftpd/vusers_dir/admin<<EOF anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES EOF
#修改vsftp配置文件 mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak cat >>/etc/vsftpd/vsftpd.conf<<EOF # 允许匿名访问 anonymous_enable=NO # 允许本地登陆 local_enable=YES # 使用chroot将用户限制在其主目录中,增强安全性。通过chroot_list可以指定一些用户不被chroot。 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list # 设置用户上传文件时的默认umask,确保文件和目录的权限合适。 local_umask=022 local_root=/data # 允许匿名用户上传文件(须将全局的write_enable=YES,默认YES) anon_upload_enable=YES # 允许匿名用户创建目录 anon_mkdir_write_enable=YES # 激活目录消息,向远程用户发送消息,进入某个目录 dirmessage_enable=YES # 确保RORT传输连接来自端口 20 connect_from_port_20=YES # 日志文件使用标准ftpd xferlog格式的日志文件 ,默认位置 /var/log/xferlog xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/xferlog # 限制并发连接数 max_clients=200 # 限制单个ip并发数 max_per_ip=40 # 启用 listen 指令,vsftp 以独立模式运行侦听ipv4 套接字,该指令不能同时使用 with listen_inv6 指令 listen=NO # 监听ipv6 listen_ipv6=YES # vsftpd 虚拟用户使用PAM认证方式 pam_service_name=vsftpd.vu user_config_dir=/etc/vsftpd/vusers_dir userlist_enable=YES guest_enable=YES guest_username=virtual allow_writeable_chroot=YES tcp_wrappers=YES # 启用任何形式的ftp 写入命令 write_enable=YES # 修改服务端口 listen_port=21 # 开启被动模式 pasv_enable=YES # 指定被动模式的端口范围。 pasv_min_port=1050 pasv_max_port=1060 pasv_promiscuous=YES EOF
# 设置 SELinux 域允许策略 setsebool -P ftpd_full_access=on
# 白名单及重启服务 firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --permanent --add-port=21/tcp firewall-cmd --permanent --add-port=1050-1060/tcp firewall-cmd --reload systemctl restart firewalld.service systemctl restart vsftpd.service systemctl enable vsftpd.service # 安装客户端 yum -y install ftp
|