系统要求
Debian
Sudo权限
完整操作步骤
1. 安装vsftpd和Samba
sudoaptupdatesudoaptinstallvsftpd samba -y2. 创建目录结构
sudomkdir-p /home/ftp/{filein,fileout}sudomkdir-p /srv/samba/fileout3. 配置系统用户和权限
创建用户组和用户
sudogroupaddftpuserssudouseradd-g ftpusers -d /home/ftp/filein -s /usr/sbin/nologin fileinsudouseradd-g ftpusers -d /home/ftp/fileout -s /usr/sbin/nologin fileout设置密码
sudopasswdfilein# 设置密码(例: ftppass123)sudopasswdfileout# 设置密码(例: ftppass123)设置目录权限
sudochown-R filein:ftpusers /home/ftp/fileinsudochown-R fileout:ftpusers /home/ftp/fileoutsudochmod755/home/ftpsudochmod750/home/ftp/fileinsudochmod770/home/ftp/fileout创建Samba共享的软链接
sudoln-s /home/ftp/fileout /srv/samba/4. 配置vsftpd
编辑配置文件:
sudonano/etc/vsftpd.conf替换为以下内容:
基础配置
listen=YESlisten_ipv6=NOanonymous_enable=YESlocal_enable=YESwrite_enable=YESdirmessage_enable=YESuse_localtime=YESxferlog_enable=YESconnect_from_port_20=YESchroot_local_user=YESsecure_chroot_dir=/var/run/vsftpd/emptypam_service_name=vsftpdrsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemrsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.keyssl_enable=NO# 匿名用户配置
anon_root=/home/ftp/fileinanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO# 本地用户配置
local_root=/home/ftp/$USERuser_sub_token=$USERallow_writeable_chroot=YES重启服务:
sudosystemctl restart vsftpdsudosystemctlenablevsftpd5. 配置Samba共享
创建Samba用户:
sudosmbpasswd -a filein# 输入密码(建议与系统密码相同)编辑Samba配置:
sudonano/etc/samba/smb.conf添加以下内容:
[fileout]path=/srv/samba/fileout validusers=fileinreadonly=no guest ok=no create mask=0770 directory mask=0770重启服务:
sudosystemctl restart smbd nmbdsudosystemctlenablesmbd nmbd6. 防火墙设置
sudoufw allow20/tcpsudoufw allow21/tcpsudoufw allow137:139/tcpsudoufw allow445/tcpsudoufw reload7. 测试验证
FTP测试:
1.匿名访问下载:
ftplocalhost用户名: anonymous
密码: (直接回车)
进入 /filein 目录测试下载
2.用户上传:
ftplocalhost用户名: filein
密码: (输入密码)
在 /filein 目录测试上传/下载
Samba测试:
smbclient //localhost/fileout -U filein输入密码后测试文件操作
关键配置说明
1.权限控制:
/home/ftp/filein:匿名用户只读(755)
/home/ftp/fileout:filein用户通过Samba读写(770)
filein用户对两个目录均有权限
2.隔离机制:
_local_user=YES限制用户在自己的主目录
anon_root指定匿名用户的根目录
通过软链接访问真实目录
3.安全加固:
所有FTP用户使用虚拟shell (/usr/sbin/nologin)
独立密码验证
防火墙仅开放必要端口
提示:实际部署时替换示例密码,建议使用sudo nano /etc/samba/smb.conf设置更严格的共享权限。