vsftpd(Very Secure FTP Daemon)是Linux下常用的FTP服务器软件,权限设置需围绕用户认证、目录访问、安全限制三大核心展开。基本流程如下:
sudo apt install vsftpd,CentOS用sudo yum install vsftpd);/etc/vsftpd.conf(核心配置文件),调整权限相关参数;adduser、usermod)创建专用FTP用户,并设置目录权限;sudo systemctl restart vsftpd。vsftpd.conf中的参数直接决定权限行为,以下是核心参数的详细说明:
ftpuser)登录FTP;/etc/vsftpd.user_list),用于白名单/黑名单管理;NO,则user_list中的用户允许登录;若为YES,则拒绝登录(需配合userlist_enable=YES使用)。/home/ftpuser),防止访问系统其他目录(增强安全性);chroot_local_user=YES时,必须设置此项,否则用户无法在chroot目录中写入文件(如上传、创建目录);022表示用户文件权限为755(所有者可读写执行,其他用户可读执行)。anonymous_enable=YES,生产环境不建议开启);anonymous_enable=YES)。为避免使用系统管理员账户(如root)作为FTP用户,建议创建专用用户并限制其shell访问:
sudo adduser ftpuser # 创建用户(默认主目录为/home/ftpuser)
sudo usermod -s /sbin/nologin ftpuser # 禁止用户通过SSH登录系统
FTP用户的主目录需满足以下权限要求:
ftpuser),组可设为ftp(可选);755(drwxr-xr-x),确保用户可访问自己的目录,其他用户只能读取和执行:sudo chown ftpuser:ftpuser /home/ftpuser # 设置所有者和组
sudo chmod 755 /home/ftpuser # 设置权限
若用户需要在chroot目录中上传文件,需创建专用可写子目录(如/home/ftpuser/upload),并设置权限:
sudo mkdir -p /home/ftpuser/upload # 创建可写子目录
sudo chown ftpuser:ftpuser /home/ftpuser/upload # 所有者为ftpuser
sudo chmod 775 /home/ftpuser/upload # 权限设为775(用户可读写执行,组可读写执行)
同时,在vsftpd.conf中启用对应权限:
allow_writeable_chroot=YES
write_enable=YES
若系统启用SELinux(getenforce返回Enforcing),需调整以下策略:
sudo setsebool -P ftp_home_dir on
/var/www):sudo chcon -R -t public_content_rw_t /var/www # 设置目录上下文为可读写
使用ufw(Uncomplicated Firewall)开放FTP所需端口:
sudo ufw allow 21/tcp # FTP控制连接端口
sudo ufw allow 990/tcp # FTPS(FTP over SSL)控制连接端口(可选)
sudo ufw allow 40000:50000/tcp # FTP被动模式数据端口范围(需在vsftpd.conf中配置)
sudo ufw reload # 重新加载防火墙规则
若使用firewalld,可执行:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload
sudo systemctl restart vsftpd
ftpuser)和密码,验证是否能正常登录;/home/ftpuser/upload,或创建目录,确认写入权限是否生效;/var/log/vsftpd.log)定位错误原因(如权限不足、配置错误)。通过以上步骤,可实现vsftpd的精细化权限控制,确保FTP服务器既满足用户访问需求,又保障系统安全。