vsftpd 配置-使用虚拟账户登录
概述
vsftpd 支持三種賬戶類型登錄 ftp,分別是:匿名用戶、系統賬戶、虛擬賬戶
匿名用戶
默認 vsftpd 是支持匿名用戶的,該用戶登錄 ftp 服務使用 anonymous 用戶直接登錄,不需要輸入密碼。
系統賬戶
可以使用 Linux 系統本身存在的用戶,作為 ftp 用戶,具體哪些用戶可以登錄 ftp,可以通過配置文件指定。
虛擬賬戶
虛擬用戶的特點是只能訪問服務器為其提供的FTP服務,而不能訪問系統的其它資源。所以,如果想讓用戶對FTP服務器站內具有寫權限,但又不允許訪問系統其它資源,可以使用虛擬用戶來提高系統的安全性。
說明:所有虛擬用戶在登錄過程中會被隱射成同一個系統賬戶,所以所有的虛擬賬戶擁有相同的系統權限,如果想區分匿名用戶的權限,默認情況是無法實現的。
環境及目標
VMWare 虛擬機,Ubuntu20.04 64位,vsftpd-3.0.3
目標是搭建一個ftp,可以使用虛擬用戶 vuser1 登錄 ftp。
搭建過程
# 安裝 vsftpd apt install -y vsftpd # 找到 pam_userdb.so 位置,后續配置會用到 find / -name pam_userdb.so建立虛擬宿主用戶。
虛擬用戶并不是系統用戶,也就是說這些 ftp 的用戶在系統中是不存在的。他們的總體權限其實是集中映射在一個系統用戶身上,所謂 vsftpd 的虛擬宿主用戶,就是這樣一個支持著所有虛擬用戶的宿主用戶。執行以下命令將虛擬用戶映射在 virtusers 這個用戶上。
# -d 指定賬戶的 home 目錄 # -s 指定系統用戶登錄的 shell,nologin 即不允許系統 login 登錄。 # 使用 nologin 可以增強安全性 useradd -d /data/ftproot virtusers -s /sbin/nologin建立 ftp 相關工作目錄,以及權限管理。
最新版 vsftpd 不允許用戶主目錄有 w 權限,因此在主目錄下新建一個子目錄。所有上傳、下載、刪除、重命名等操作只能在子目錄中進行,虛擬用戶 vuser1 的 ftp 目錄是 /data/ftproot/vuser1/,沒有 w 權限,設置權限為 500,以下是相關目錄權限設置參考。
# 此處采用目錄結構樹的形式展現個子目錄權限/data #數據目錄,便于后期數據備份 └── [drwxr-xr-x] ftproot #FTP服務目錄└── [dr-x------] vuser1 #虛擬用戶主目錄,后期可以增加vuser2、vuser3...└── [drwxr-xr-x] rootdir #虛擬用戶FTP工作目錄,可以在此目錄讀寫操作 # 創建相關目錄。 mkdir -p /data/ftproot/vuser1/rootdir# 進行權限設置。 chown -R virtusers.virtusers /data/ftproot chmod 500 /data/ftproot/vuser1配置虛擬用戶
# 創建文件,用于存儲虛擬賬戶名稱及對應密碼 vi /etc/vsftpd/vuserlist# 虛擬用戶列表的內容 # 奇數行為用戶名,偶數行為用戶密碼 vuser1 123456用系統的 db_load 工具來生成 db 文件,出于安全角度修改 vuserlist.db 為 600 權限。
如果沒有這個工具可以通過以下命令安裝。
修改 PAM 驗證。
修改 */etc/pam.d/vsftpd,這個文件名與 /etc/vsftpd.conf 中的 pam_service_name=vsftpd 相對應。注釋掉所有參數,在最后面加入以下兩行內容。
# 注意:需要清除除注釋外的所有內容,包括默認生成的以 @ 等開頭的內容auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlist創建及配置虛擬用戶的配置文件。
# 創建虛擬用戶的配置文件 mkdir /etc/vsftpd/vuser_conf/# 配置虛擬用戶的配置文件 vi /etc/vsftpd/vuser_conf/vuser1# 添加以下配置信息 local_root=/data/ftproot/vuser1 anon_upload_enable=YES anon_world_readable_only=NO anon_mkdir_write_enable=YES anon_other_write_enable=YES配置 vsftpd 的 vsftpd.conf 主配置文件。
listen=YES #開啟IPv4監聽 listen_ipv6=NO #關閉IPV6監聽 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list pam_service_name=vsftpd #如果前面/etc/pam.d/vsftpd沒有改文件名,就不修改 virtual_use_local_privs=YES #虛擬用戶使用本地用戶的權限 guest_enable=YES #開啟虛擬用戶 guest_username=virtusers #指定虛擬用戶的宿主用戶user_config_dir=/etc/vsftpd/vuser_conf #指定虛擬用戶配置文件記得創建 /etc/vsftpd/chroot_list,否則會報錯。
touch /etc/vsftpd/chroot_list解釋說明
chroot_local_user 和 chroot_list_file 兩個配置項是配合使用的。
當 chroot_local_user=YES 時,只有 chroot_list_file 中指定的用戶才能夠 chroot,其他用戶禁止 chroot。
當 chroot_local_user=NO 時, chroot_list_file 中指定的用戶禁止 chroot,其他用戶可以 chroot。
總結
以上是生活随笔為你收集整理的vsftpd 配置-使用虚拟账户登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 背景变透明处理
- 下一篇: 西门子pcs7 V9.1用Sim_EKB