vsftpd安裝與配置

簡介

vsftpd(very secure FTP daemon)是 UNIX 操作系統中的一個開源的、免費的 FTP 服務軟件。它具有以下特點:

  • 安全性高,輕小易用
  • 支持系統用戶、匿名用戶和虛擬用戶的權限驗證和相關操作,但無論哪種用戶,最終都會映射爲一個對應的 系統用戶
  • 用戶認證是基於 PAM 實現的

安裝

yum 安裝 vsftpd,並開啓程序

# 安裝
[root@instance-36dg06w0 ~]# yum install vsftpd
# 開啓
[root@instance-36dg06w0 ~]# systemctl start vsftpd

配置詳解

vsftpd 的配置文件在爲 vsftpd.conf,一般在 /etc/vsftpd/ 目錄下。

屬性 屬性值 含義
anonymous_enable YES/NO 是否允許匿名用戶(anonymous)登錄 FTP,如果該設置被註釋,則默認允許
local_enable YES/NO 是否允許本地系統用戶登錄
write_enable YES/NO 是否開啓任何形式的 FTP 寫入命令,上傳文件
local_umask xxx 本地用戶的 umask 設置,如果註釋該設置則默認爲 077,但一般都設置成 022
anon_upload_enable YES/NO 是否允許匿名用戶上傳文件,如果要設置爲允許,則需要先開啓 write_enable,否則無效,此外對應目錄還要具有寫權限
anon_mkdir_write_enable YES/NO 是否允許匿名用戶創建新目錄
dirmessage_enable YES/NO 當進入某個目錄時,發送信息提示給遠程用戶
xferlog_enable YES/NO 是否開啓 上傳/下載 的日誌記錄
connect_from_port_20 YES/NO 是否使用 20 端口來連接 FTP
chown_uploads YES/NO 匿名上傳的文件是否由某一指定用戶 chown_username 所有
chown_username 有效用戶名 匿名上傳的文件由該設定用戶所有
xferlog_file 有效路徑 設置日誌文件的保存位置,默認爲 /var/log/xferlog
xferlog_std_format YES/NO 是否使用標準的 ftpd xferlog日誌格式,該格式日誌默認保存在 /var/log/xferlog
idle_session_timeout 數值 設置空閒連接的超時時間,單位 秒
data_connection_timeout 數值 設置等待數據傳輸的最大時間,單位 秒(data_connection_timeoutidle_session_timeout 在同一時間只有一個有效)
nopriv_user 有效用戶名 指定一個非特權用戶,用於運行 vsftpd
async_abor_enable YES/NO 是否支持異步 ABOR 請求
ascii_upload_enable YES/NO 是否開啓 ASCII 模式進行文件上傳,一般不開啓
ascii_download_enable YES/NO 是否開啓 ASCII 模式進行文件下載,一般不開啓
ftpd_banner 自定義登錄標語
deny_email_enable YES/NO 如果匿名登錄,則會要求輸入 email 地址,如果不希望一些 email 地址具有登錄權限,則可以開啓此項,並在 banned_email_file 指定的文件中寫入對應的 email 地址
banned_email_file 有效文件 當開啓 deny_email_enable 時,需要通過此項指定一個保存登錄無效 email 的文件
chroot_local_user YES/NO 是否將所有用戶限制在主目錄,當爲 NO 時, FTP 用戶可以切換到其他目錄
chroot_list_enable YES/NO 是否啓用限制用戶的名單列表
chroot_list_file 有效文件 用戶列表,其作用與 chroot_local_userchroot_local_user 的組合有關,詳見下表
allow_writeable_chroot YES/NO 是否允許用戶對 ftp 根目錄具有寫權限,如果設置成不允許而目錄實際上卻具備寫權限,則會報錯
ls_recurse_enable YES/NO 是否允許 ls -R 指令來遞歸查詢,遞歸查詢比較耗資源
listen YES/NO 如果爲 YESvsftpd 將以獨立模式運行並監聽 IPv4 的套接字,處理相關連接請求(該指令不能與 listen_ipv6 一起使用)
listen_ipv6 YES/NO 是否允許監聽 IPv6 套接字
pam_service_name 設置 PAM 外掛模塊提供的認證服務所使用的配置文件名 ,即 /etc/pam.d/vsftpd 文件,此文件中 file=/etc/vsftpd/ftpusers 字段,說明了 PAM 模塊能抵擋的帳號內容來自文件 /etc/vsftpd/ftpusers
userlist_enable YES/NO 是否啓用 user_list 文件來控制用戶登錄
userlist_deny YES/NO 是否拒絕 user_list 中的用戶登錄,此屬性設置需在 userlist_enable = YES 時纔有效
tcp_wrappers YES/NO 是否使用 tcp_wrappers 作爲主機訪問控制方式
max_clients 數值 同一時間允許的最大連接數
max_per_ip 數值 同一個IP客戶端連接的最大值
local_root 有效目錄 系統用戶登錄後的根目錄
anon_root 有效目錄 匿名用戶登錄後的根目錄
user_config_dir 有效目錄 用戶單獨配置文件存放目錄,該目錄下用戶的文件名就是對應用戶名

chroot_local_userchroot_local_user 組合功能如下:

chroot_local_user=YES chroot_local_user=NO
chroot_list_enable=YES 1.所有用戶都被限制在其主目錄下
2.使用 chroot_list_file 指定的用戶列表 /etc/vsftpd/chroot_list,這些用戶作爲“例外”,不受限制
1.所有用戶都不被限制其主目錄下
2.使用 chroot_list_file 指定的用戶列表 /etc/vsftpd/chroot_list,這些用戶作爲“例外”,受到限制
chroot_list_enable=NO 1.所有用戶都被限制在其主目錄下
2.不使用 chroot_list_file 指定的用戶列表 /etc/vsftpd/chroot_list,沒有任何“例外”用戶
1.所有用戶都不被限制其主目錄下
2.不使用 chroot_list_file 指定的用戶列表 /etc/vsftpd/chroot_list,沒有任何“例外”用戶

爲每個系統用戶配置各自的 ftp 根目錄

/etc/vsftpd/vsftpd.conf 文件末尾添加如下指令:

# 系統用戶登錄後的根目錄
local_root=/var/test/
# 匿名用戶登錄後的根目錄
anon_root=/var/test/
# 設置用戶獨立配置文件保存目錄
user_config_dir=/etc/vsftpd/userconfig/

此外,還要將 chroot_local_user 設置爲 YES,使 FTP 用戶登錄後直接被鎖定在自己的根目錄上。
通過以上設定,系統用戶和匿名用戶都會將 /var/test/ 當做根目錄,並且登錄後直接被鎖定在該目錄。
但是以上的設置是針對所有系統用戶和匿名用戶的,如果想要給每個 FTP 用戶指定根目錄,我們可以給每個用戶創建一個對應的配置文件。具體操作如下:

  • 根據 user_config_dir 的設置,我們先在 /etc/vsftpd/ 目錄下創建一個名爲 userconfig 的目錄
  • 假設想要給用戶 aaa 單獨指定一個 FTP 根目錄 /var/test/1,我們需要進入 userconfig 目錄,在該目錄下創建一個名爲 aaa 的配置文件,編輯文件 aaa,配置內容如下:
local_root=/var/test1/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章