首先确保系统已更新,然后安装VSFTP服务:
sudo yum update -y
sudo yum install vsftpd -y
启动VSFTP服务并设置为开机自启:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
vsftpd.conf)编辑VSFTP主配置文件/etc/vsftpd/vsftpd.conf,设置以下关键参数:
sudo vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
644,目录为755):local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES # 允许chroot目录可写(若用户主目录需要写入)
/etc/vsftpd/user_list中的用户登录):userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO # 允许列表中的用户登录
确保用户主目录权限正确(通常为755),且所有者为用户自身:
# 创建用户(示例:ftpuser)
sudo useradd -m ftpuser
sudo passwd ftpuser
# 设置主目录权限
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
若用户需要上传文件到子目录(如uploads),需额外设置子目录权限:
sudo mkdir -p /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads
sudo chmod 775 /home/ftpuser/uploads # 允许用户写入
若SELinux处于enforcing模式,需调整FTP目录的SELinux上下文,允许FTP访问:
# 设置用户主目录的SELinux上下文(类似httpd内容)
sudo chcon -Rv --type=httpd_sys_content_t /home/ftpuser
# 若需要上传文件,添加写入权限
sudo chcon -Rv --type=httpd_sys_rw_content_t /home/ftpuser/uploads
允许FTP流量(默认端口21)通过防火墙:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
应用所有配置更改:
sudo systemctl restart vsftpd
若需要更细粒度的权限(如限制特定用户只能访问特定目录),可创建虚拟用户:
# 创建虚拟用户文件(格式:用户名 密码)
sudo vim /etc/vsftpd/virtual_users.txt
# 示例内容:
ftp_virtual user1pass
ftp_virtual2 user2pass
# 生成数据库文件
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
sudo chmod 600 /etc/vsftpd/virtual_users.db
# 配置PAM认证(编辑/etc/pam.d/vsftpd)
sudo vim /etc/pam.d/vsftpd
# 注释原有内容,添加以下两行:
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
# 配置VSFTP虚拟用户
sudo vim /etc/vsftpd/vsftpd.conf
# 添加以下内容:
guest_enable=YES
guest_username=ftpuser # 虚拟用户映射的系统用户
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/home/$USER # 虚拟用户主目录
chroot_local_user=YES
allow_writeable_chroot=YES
# 重启服务
sudo systemctl restart vsftpd
通过以上步骤,可完成CentOS上VSFTP的基础权限设置。根据实际需求调整vsftpd.conf中的参数(如chroot、userlist等),即可实现不同用户的权限控制。