本文整理在Cent OS
上通过vsftpd
快速搭建ftp
服务!
1. yum安装vsftpd
check
1
| systemctl start vsftpd.service
|
2 SELinux与防火墙
设置SELinux对ftp的限制
1 2
| getsebool -a | grep ftp setsebool -P ftpd_full_access on
|
将ftp加入防火墙白名单
1 2 3
| firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --reload firewall-cmd --list-all
|
3. 修改配置文件
1 2
| cd /etc/vsftpd/ vim vsftpd.conf
|
4. 创建宿主用户ftpuser
1 2 3 4 5 6 7 8 9 10
| cd /home mkdir vsftpd # 创建用户 ftpuser 指定 `/home/vsftpd` 目录 # -s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录 useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
passwd ftpuser chown -R ftpuser.root /home/vsftpd
cd /etc/vsftpd/vuser_conf
|
5. 生成虚拟用户数据文件
1 2 3
| vim vuser_passwd db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db chmod 600 /etc/vsftpd/vuser_passwd.db
|
查看系统位数
编辑pam认证文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| vim /etc/pam.d/vsftpd # 将其他都注释掉,添加下面两行; # vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。 # 系统为32位: auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
# 系统为64位: auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
mkdir /home/vsftpd/ftp-user1 chown -R ftpuser.root /home/vsftpd/ftp-user1 chmod 777 /home/vsftpd/ftp-user1 mkdir /home/vsftpd/ftp-user2 chown -R ftpuser.root /home/vsftpd/ftp-user2 chmod 777 /home/vsftpd/ftp-user2
|
6. 创建虚拟用户配置目录
1 2 3 4 5 6 7 8 9 10 11
| cd /etc/vsftpd/vuser_conf CREATE_USER=ftp-user1 echo "local_root=/home/vsftpd/${CREATE_USER} write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES" >> /etc/vsftpd/vuser_conf/${CREATE_USER} # 写入虚拟用户名 echo "${CREATE_USER}" >> /etc/vsftpd/chroot_list
|
7. 重启VSFTP服务
1
| systemctl restart vsftpd.service
|
PS 配置文件
贴出部分关键的配置文件
vsftpd.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| anonymous_enable=NO # 允许ascii文件上传和下载 ascii_upload_enable=YES ascii_download_enable=YES # 将用户限制在为其配置的主目录 chroot_local_user=YES chroot_list_enable=YES #允许写 allow_writeable_chroot=YES # 如果启用了限定用户在其主目录下需要添加这个配置。 allow_writeable_chroot=YES
#设置启用虚拟用户功能 guest_enable=YES #制定宿主用户名(我们后续需要为我们的系统增加该用户) guest_username=ftpuser #制定虚拟用户配置文件放置文件夹(需要我们自己建立) user_config_dir=/etc/vsftpd/vuser_conf chroot_list_file=/etc/vsftpd/chroot_list
|
vuser_passwd1 2 3 4
| ftp-user1 123456 ftp-user2 123456
|
添加用户的脚本
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
| #!/bin/bash ORG_ID=$1 PASSWORD=$2 # chroot_list 所在 CHROOT_LIST=/opt/zbbai/file_watch/chroot_list # 虚拟用户配置文件放置文件夹 user_config_dir=/opt/zbbai/file_watch/user_config_dir # 宿主home目录 HOME=/home/vsftpd # 宿主用户名 ftpuser=ftpuser # ftp用户命名格式 CREATE_USER="ftp-user${ORG_ID}"
if [ ! $PASSWORD ]; then # 默认密码 PASSWORD=123456 fi
function create_ftp_user(){ if [ -z "`grep "${CREATE_USER}$" $CHROOT_LIST`" ] then echo "${CREATE_USER} 将被建立" else echo "${CREATE_USER} 已存在" exit 1 fi echo "${CREATE_USER}" >> $CHROOT_LIST echo "local_root=${HOME}/${CREATE_USER} write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES" >> ${user_config_dir}/${CREATE_USER} echo "${CREATE_USER}" >> ${user_config_dir}/vuser_passwd echo "${PASSWORD}" >> ${user_config_dir}/vuser_passwd db_load -T -t hash -f ${user_config_dir}/vuser_passwd ${user_config_dir}/vuser_passwd.db chmod 600 ${user_config_dir}/vuser_passwd.db }
function create_ftp_dir(){ cd $HOME mkdir ${CREATE_USER} chown -R $ftpuser $HOME/${CREATE_USER}/ chmod 777 $HOME/${CREATE_USER}/ }
function restart_ftp_server(){ systemctl restart vsftpd.service }
echo "机构ID: ${ORG_ID}" create_ftp_user echo "用户: ${CREATE_USER}" echo "密码: ${PASSWORD}" create_ftp_dir echo "目录: $HOME/${CREATE_USER}" restart_ftp_server echo "添加完成"
|