首先確保系統已更新,然后安裝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
等),即可實現不同用戶的權限控制。