1 安裝ftp軟體
yum install vsftpd* -y
2 配置服務啟動
#啟用 firewalld 服務
systemctl start vsftpd.service
#開啟vsftpd服務 這條命令設定 firewalld 服務在系統啟動時自動啟動。systemctl enable 命令用於管理系統服務的啟動和停止配置。啟用服務後,它會在每次系統啟動時自動執行。
[root@localhost ~]# systemctl enable vsftpd.service
返回結果
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
繼續配置防火牆
#永久新增 FTP 服務到 public 區域 #這條命令將 ftp 服務永久新增到 public 區域的防火牆配置中。--permanent 選項指定更改是持久的,即即使系統重啟後也會保持。--zone=public 指定了將要修改的區域(public 是一個常用的區域)。--add-service=ftp 表示允許 ftp 服務透過防火牆。 [root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=ftp success #重新載入 firewalld 配置 [root@localhost ~]# firewall-cmd --reload success
配置服務檔案
/etc/vsftpd下的vsftpd.conf配置如下
anonymous_enable=YES local_enable=YES write_enable=YES guest_enable=YES guest_username=ftp user_sub_token=$USER pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES # 虛擬使用者配置目錄 user_config_dir=/etc/vsftpd/user_conf # 允許寫入許可權 local_root=/home/miot_update chroot_local_user=YES allow_writeable_chroot=YES
具體情況可以參考自己需要修改
local_root為預設訪問目錄
給訪問目錄賦予許可權
chown -R ftp:ftp /home/miot_update
通常情況到此可以匿名訪問ftp服務了,如果還有問題
給ftp授權
setsebool -P ftpd_full_access on
setsebool
:這是用於設定SELinux布林值的命令。-P
:這個選項表示將更改永久儲存到SELinux策略配置中。沒有這個選項的話,更改只會在當前會話中生效,系統重啟後會丟失。ftpd_full_access
:這是一個SELinux布林值,允許FTP守護程序(如vsftpd
或proftpd
)訪問檔案系統中的所有檔案,包括使用者主目錄。on
:表示啟用這個布林值,使其生效。
這個命令啟用ftpd_full_access布林值,使得FTP服務可以獲得更高的許可權,允許它訪問系統上的更多檔案和目錄。這通常用於需要FTP訪問使用者主目錄或其他受限區域的場景。
啟用ftpd_full_access布林值可能會有安全隱患,因為它允許FTP服務訪問更多的檔案和目錄。務必確保在啟用之前,瞭解相關安全影響和你的系統需求。
3 配置虛擬使用者
如果有更多的需求,可以配置虛擬使用者,用來管理ftp的上傳目錄,以及許可權,強烈反對透過新增Linux系統使用者的方式來設定訪問許可權
/etc/vsftpd新增vusers.txt
ruihao
ruihao
rqadmin
rqadmin
奇數行為使用者名稱,偶數行為密碼,最後一個密碼結束後一定要加回車換行,否則可能解析錯誤
使用dbload命令把文字轉成資料庫
安裝dbload,如果已經支援,可以省略
sudo yum install vsftpd db4-utils # 或者在 Debian/Ubuntu 上 sudo apt-get install vsftpd db-util 使用 db_load 建立虛擬使用者資料庫。首先,建立一個文字檔案 vsftpd_virtual_users.txt,內容如下:
轉換資料庫
db_load -T -t hash -f vusers.txt vusers.db
確認下轉換是否成功
db_dump -p /etc/vsftpd/vusers.db
設定pam認證資訊,
cd /etc/pam.d
開啟vsftpd編輯
#%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers #session optional pam_keyinit.so force revoke #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so #auth include password-auth #account include password-auth #session required pam_loginuid.so #session include password-auth
#auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
#account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
新建
/etc/vsftpd 下user_conf資料夾
新建兩個使用者名稱的檔案
rqadmin檔案內容
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/miot_update write_enable=YES
ruihao檔案內容,只讀
anon_world_readable_only=NO
local_root=/home/miot_update
重啟ftp服務
systemctl restart vsftpd
4 測試
使用filezilla驗證
只讀使用者ruihao,可以檢視,無法修改上傳
管理員使用者,可以任意操作
5 常見問題
5.1 命令: USER ruihao 響應: 530 Permission denied. 錯誤: 無法連線到伺服器
使用者配置檔案有衝突,user_list檔案是否包含了新使用者,預設user_list為黑名單使用者
5.2 530 Login incorrect. Login failed
使用者配置檔案包含空格,導致識別錯誤
5.3 bad bool value in config file for: anon_world_readable_only
同上,檢查配置檔案,包含空格或者其它字元導致
5.4 authentication failure; logname= uid=0 euid=0 tty=ftp ruser=rqadmin rhost=192.168.1.169
把pam下的無用配置註釋後重啟服務嘗試