大数跨境
0
0

vsftp匿名和普通用户共用一个目录

vsftp匿名和普通用户共用一个目录 开发运维devops
2025-11-24
9
导读:vsftp匿名和普通用户共用一个目录

1、docker-compose配置

services:  ftp:    image: fauria/vsftpd    container_name: ftp    environment:      FTP_USER: fonda      FTP_PASS: fonda123      PASV_ADDRESS: 192.168.10.220  #宿主机IP      PASV_MIN_PORT: 11103      PASV_MAX_PORT: 11105    ports:      - "20:20"      - "21:21"      - "11103-11105:11103-11105"    volumes:      - ./data:/home/vsftpd/fonda      - ./vsftpd.conf:/etc/vsftpd/vsftpd.conf      - ./run-vsftpd.sh:/usr/sbin/run-vsftpd.sh    entrypoint: ["bash""/usr/sbin/run-vsftpd.sh"]restart: always


 

2、vsftpd.conf配置

listen=YESbackground=NO # 本地用户(虚拟用户也是用本地权限)local_enable=YESwrite_enable=YES # 允许 chrootchroot_local_user=YESallow_writeable_chroot=YES # 匿名用户anonymous_enable=YES#跟yml文件中的要一制anon_root=/home/vsftpd/fondaanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO # 本地用户根目录,跟yml文件中的要一制local_root=/home/vsftpd/fonda # 虚拟用户系统账户guest_enable=NOguest_username=ftpvirtual_use_local_privs=NO # PAMpam_service_name=vsftpd # PASVpasv_enable=YES#宿主机IPpasv_address=192.168.10.220pasv_min_port=11103pasv_max_port=11105seccomp_sandbox=NO# 上传文件权限file_open_mode=0666local_umask=022

3、run-vsftpd.sh配制

#!/bin/bash
# If no env var for FTP_USER has been specified, use 'admin':if [ "$FTP_USER" = "**String**" ]; then    export FTP_USER='admin'fi
# If no env var has been specified, generate a random password for FTP_USER:if [ "$FTP_PASS" = "**Random**" ]; then    export FTP_PASS=`cat /dev/urandom | tr -dc A-Z-a-z-0-9 | head -c${1:-16}`fi
# Do not log to STDOUT by default:if [ "$LOG_STDOUT" = "**Boolean**" ]; then    export LOG_STDOUT=''else    export LOG_STDOUT='Yes.'fi
# Create home dir and update vsftpd user db:mkdir -p "/home/vsftpd/${FTP_USER}"chown -R ftp:ftp /home/vsftpd/
echo -e "${FTP_USER}\n${FTP_PASS}" > /etc/vsftpd/virtual_users.txt/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
# Set passive mode parameters:if [ "$PASV_ADDRESS" = "**IPv4**" ]; then    export PASV_ADDRESS=$(/sbin/ip route|awk '/default/ { print $3 }')fi

# Get log file pathexport LOG_FILE=`grep xferlog_file /etc/vsftpd/vsftpd.conf|cut -d= -f2`
# stdout server info:if [ ! $LOG_STDOUT ]; thencat << EOB        *************************************************        *                                               *        *    Docker image: fauria/vsftpd                *        *    https://github.com/fauria/docker-vsftpd    *        *                                               *        *************************************************
        SERVER SETTINGS        ---------------        · FTP User: $FTP_USER        · FTP Password: $FTP_PASS        · Log file: $LOG_FILE        · Redirect vsftpd log to STDOUT: No.EOBelse    /usr/bin/ln -sf /dev/stdout $LOG_FILEfi
# Run vsftpd:&>/dev/null /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

4、启动ftp镜像

docker-compose up -d

5、登录容器做相关操作

cd /home/vsftpd/useradd -m fondaecho "fonda:fonda123" | chpasswdmkdir -p fonda/testchown -R fonda:root fondachmod -R 755 fonda

6、windws访问截图

【声明】内容源于网络
0
0
开发运维devops
10+老运维,devops相关文档精华。
内容 96
粉丝 0
开发运维devops 10+老运维,devops相关文档精华。
总阅读143
粉丝0
内容96