1. 程式人生 > 實用技巧 >Linux搭建FTP伺服器

Linux搭建FTP伺服器

Linux

FTP

  • 檢測系統是否已經安裝vsftp
rpm -q vsftpd
#package vsftpd is not installed #說明系統沒有安裝vsftpd
  • 安裝、啟動、配置
yum install vsftpd
#設定開機自動啟動
chkconfig vsftpd on
systemctl start vsftpd.service
vi /etc/vsftpd/vsftpd.conf 

use_localtime=YES #ftp時間和系統同步,如果啟動有錯誤,請登出
reverse_lookup_enable=NO #新增此行,解決客戶端登陸緩慢問題!重要!預設vsftpd開啟了DNS反響解析!這裡需要關閉,如果啟動有錯誤,請登出!
 
listen_port=21 #預設無此行,ftp埠為21,新增listen_port=2222把預設埠修改為2222,注意:防火牆同時要開啟2222埠
anonymous_enable=NO   #禁止匿名使用者
local_enable=YES
設定本地使用者可以訪問。注意:主要是為虛擬宿主使用者,如果該專案設定為NO那麼所有虛擬使用者將無法訪問
write_enable=YES #全域性設定,是否容許寫入(無論是匿名使用者還是本地使用者,若要啟用上傳許可權的話,就要開啟他)
local_umask=022 設定上傳後文件的許可權掩碼。
anon_upload_enable=NO 禁止匿名使用者上傳。
anon_mkdir_write_enable=NO 禁止匿名使用者建立目錄。
dirmessage_enable=YES 設定開啟目錄標語功能。
xferlog_enable=YES 設定開啟日誌記錄功能。
connect_from_port_20=YES 設定埠20進行資料連線。
chown_uploads=NO 設定禁止上傳檔案更改宿主。
xferlog_file=/var/log/vsftpd.log 日誌儲存路徑(先建立好檔案)
xferlog_std_format=YES   #使用標準格式
async_abor_enable=YES 設定支援非同步傳輸功能。
ascii_upload_enable=YES
ascii_download_enable=YES 設定支援ASCII模式的上傳和下載功能。
ftpd_banner=Welcome to Awei FTP servers 設定Vsftpd的登陸標語。
chroot_local_user=YES 禁止本地使用者登出自己的FTP主目錄。
pam_service_name=vsftpd 設定PAM服務下Vsftpd的驗證配置檔名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd檔案配置。
userlist_enable=YES 設為YES的時候,如果一個使用者名稱是在userlist_file引數指定的檔案中,
 那麼在要求他們輸入密碼之前,會直接拒絕他們登陸。
tcp_wrappers=YES 是否支援tcp_wrappers
idle_session_timeout=300 #超時設定
data_connection_timeout=1 #空閒1秒後伺服器斷開
#以下這些是關於Vsftpd虛擬使用者支援的重要配置專案。
#預設Vsftpd.conf中不包含這些設定專案,需要自己手動新增配置
guest_enable=YES 設定啟用虛擬使用者功能。
guest_username=vsftpd 指定虛擬使用者的宿主使用者(這個是我們後面要新建的使用者)
user_config_dir=/etc/vsftpd/vconf 設定虛擬使用者個人Vsftp的配置檔案存放路徑。
 也就是說,這個被指定的目錄裡,將存放每個Vsftp虛擬使用者個性的配置檔案,一個需要注意的
 地方就是這些配置檔名必須和虛擬使用者名稱相同。
 比如說vsftpd.conf的配置檔案,你複製到這個目錄下,你要mv一下,配置成虛擬使用者的名稱
virtual_use_local_privs=YES #當該引數啟用(YES)時,虛擬使用者使用與本地使用者相同的許可權。
 #當此引數關閉(NO)時,虛擬使用者使用與匿名使用者相同的許可權。預設情況下此引數是關閉的(NO)。
pasv_min_port=6000 (設定被動模式的埠範圍)
pasv_max_port=7000 (設定被動模式的埠範圍)
accept_timeout=5 #保持5秒
connect_timeout=1 #1秒後重新連線
  • 新建虛擬使用者
touch /etc/vsftpd/virtusers
vi /etc/vsftpd/virtusers
#第一行賬號,第二行密碼,注意:不能使用root做使用者名稱,系統保留
admin
4242587

#生成虛擬使用者資料檔案:
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#報錯users.db-bash: db_load: command not found可以執行yum install db4* 命令安裝
chmod 600 /etc/vsftpd/virtusers.db #設定PAM驗證檔案,並指定對虛擬使用者資料庫檔案進行讀取
vi /etc/pam.d/vsftpd
#如果系統為32位,則lib64改為lib,否則配置失敗
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
#新建一個系統使用者vsftpd,使用者家目錄為/home/wwwroot, 使用者登入終端設為/bin/false(即使之不能登入系統)
useradd vsftpd -d /home/wwwroot -s /bin/false
chown vsftpd:vsftpd /home/wwwroot -R
#chown apache:apache /home/wwwroot -R #如果虛擬使用者的宿主使用者為apache,需要這樣設定
#建立虛擬使用者個人Vsftp的配置檔案
mkdir /etc/vsftpd/vconf
mkdir /home/wwwroot/admin
cd /etc/vsftpd/vconf
touch admin
vi admin

local_root=/home/wwwroot/admin
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#防火牆
firewall-cmd -–zone=public -–add-port=20/tcp -–permanent
firewall-cmd -–zone=public -–add-port=21/tcp -–permanent
firewall-cmd -–zone=public -–add-port=6000-7000/tcp -–permanent
systemctl restart firewalld.service
#重啟伺服器
systemctl restart vsftpd.service