記錄一次CentOS/Linux下安裝vsftp伺服器的過程

火星大能猫發表於2024-08-02

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守護程序(如vsftpdproftpd)訪問檔案系統中的所有檔案,包括使用者主目錄。
  • 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下的無用配置註釋後重啟服務嘗試

相關文章