Linux系统管理与编程17:自动化部署ftp服务
兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。
#virtual用户管理:passerbyA、captain和admin三个虚拟用户
# passerbyA只能看,captain可看读写上传,但不能删除。admin全部权限
[root@shell shell]# vim myFtp.sh #!/bin/bash #----------------------------------------------------------- # File Name: myFtp.sh # Version: 1.0 # Created: 2025-05-09 01:36:21 # Author: 网工XXX # Contact: QQ15523232551 # Copyright(R):CQIE # Description:1.virtual用户管理了passerbyA、captain和admin # 三个虚拟用户 # 2.passerbyA只能看,captain可看读写上传,但不能 # 删除。admin全部权限 #=========================================================== #我的化妆盒 RED='\033[31m' GREEN='\033[32m' YELLOW='\033[43m' BLUE='\033[94m' RedBlink="\e[5;31m" #5是闪烁,31m是红色 UL='\033[4m' #下划线 RESET='\033[0m' #复位 # 安装必要组件 sudo yum install -y ftp vsftpd # 创建虚拟用户映射的系统用户 sudo useradd -d /home/virtual -s /sbin/nologin virtual sudo chmod 755 /home/virtual # 创建虚拟用户数据库文件 sudo bash -c 'cat > /etc/vsftpd/vusers.txt << EOF passerbyA passerbyA_pass captain captain_pass admin admin_pass EOF' # 生成数据库文件 sudo db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db sudo chmod 600 /etc/vsftpd/vusers.db # 备份原始PAM文件 sudo cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak # 配置PAM认证 sudo bash -c 'cat > /etc/pam.d/vsftpd << EOF auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers EOF' # 创建虚拟用户配置文件目录 sudo mkdir -p /etc/vsftpd/vusers_conf # 配置passerbyA(只读) sudo bash -c 'cat > /etc/vsftpd/vusers_conf/passerbyA << EOF anon_world_readable_only=NO write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO EOF' # 配置captain(上传/下载/修改,不能删除) sudo bash -c 'cat > /etc/vsftpd/vusers_conf/captain << EOF write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=NO EOF' # 配置admin(完全权限) sudo bash -c 'cat > /etc/vsftpd/vusers_conf/admin << EOF write_enable=YES anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES EOF' # 备份原始vsftpd配置 sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak # 生成新的vsftpd配置 sudo bash -c 'cat > /etc/vsftpd/vsftpd.conf << EOF anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES listen_ipv6=NO # 虚拟用户配置 user_config_dir=/etc/vsftpd/vusers_conf guest_enable=YES guest_username=virtual allow_writeable_chroot=YES pam_service_name=vsftpd # 被动模式设置 pasv_enable=YES pasv_min_port=50000 pasv_max_port=50010 EOF' # 设置目录权限 sudo chown -R virtual:virtual /home/virtual sudo chmod 755 /home/virtual # 处理防火墙 sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=50000-50010/tcp sudo firewall-cmd --reload # 处理SELinux sudo setsebool -P ftpd_full_access on # 启动服务 sudo systemctl enable vsftpd sudo systemctl restart vsftpd echo -e "${GREEN}安装配置完成!${RESET}" echo -e "虚拟用户密码文件:/etc/vsftpd/vusers.txt (${RedBlink}请及时修改权限或删除${RESET})" |
图17- 1
远端测试:
图17- 2
图17- 3