在Debian系统中,首先需要安装vsftpd(Very Secure FTP Daemon)。通过终端运行以下命令完成安装:
sudo apt update
sudo apt install vsftpd
vsftpd的主配置文件位于/etc/vsftpd.conf,需修改以下关键参数以实现权限控制:
local_enable=YES:允许本地系统用户登录FTP服务器。write_enable=YES:允许用户上传、删除、修改文件(若需禁用写操作,可设置为NO)。chroot_local_user=YES:将用户限制在自己的主目录(增强安全性,防止访问系统其他目录)。allow_writeable_chroot=YES:若启用了chroot_local_user,必须设置此项,否则用户无法在其主目录中写入文件(如上传文件)。userlist_enable=YES:启用用户列表功能,通过/etc/vsftpd.user_list文件定义允许或拒绝访问的用户。userlist_deny=NO:仅允许user_list中的用户登录(若设置为YES,则拒绝列表中的用户登录)。anonymous_enable=NO:禁用匿名用户登录(推荐,避免未授权访问)。若需启用,需额外设置anon_upload_enable=NO(禁止匿名上传)、anon_mkdir_write_enable=NO(禁止匿名创建目录)等参数,限制匿名用户权限。useradd命令创建专用的FTP用户(如ftpuser),并设置密码:sudo useradd -m ftpuser # 创建用户并自动生成主目录(/home/ftpuser)
sudo passwd ftpuser # 设置用户密码
755允许用户读写执行,其他用户仅读执行):sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
uploads),并设置写权限:sudo mkdir /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads # 所有权赋予用户
sudo chmod 775 /home/ftpuser/uploads # 允许用户及同组用户写入
若系统启用了SELinux(默认在Debian中禁用,若手动启用),需调整策略以允许vsftpd访问用户目录:
sudo setsebool -P ftp_home_dir on # 允许FTP访问用户主目录
sudo setsebool -P allow_ftpd_full_access on # 允许FTP完全访问(根据安全需求调整)
允许FTP流量通过防火墙(以UFW为例):
sudo ufw allow 21/tcp
vsftpd.conf中设置pasv_min_port和pasv_max_port,如1024:1048):sudo ufw allow 1024:1048/tcp
sudo ufw reload
完成所有配置后,重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
若需设置开机自启,可运行:
sudo systemctl enable vsftpd
使用FTP客户端(如FileZilla)连接服务器,输入用户名(如ftpuser)和密码,验证是否能正常登录、上传/下载文件。若无法连接,可检查/var/log/vsftpd.log日志文件排查问题。
注意事项:
local_root参数指定用户根目录(如local_root=/var/ftp/specific_dir),并确保该目录权限正确。virtual_use_local_privs、guest_enable等参数)需额外配置PAM认证和虚拟用户数据库,适用于需要更灵活权限管理的场景。