騰訊雲伺服器centos7.3 配置FTP,每個使用者登入FTP對應不同的檔案目錄,並只能訪問設定的目錄
VSFTPD 安裝:
-- 檢視是否已經安裝 VSftpd:
rpm -qa | grep vsftp
yum install -y vsftpd
groupadd ftpuser #建立ftpuser組 useradd -g ftpuser -s /sbin/nologin -M ftpuser #建立個ftpuser使用者並將其加入到ftpuser組,該使用者不能登陸,不能登入的意思就是
只能通過FTP登入,不能通過終端登入伺服器
-- 設定登陸FTP的密碼:
passwd ftpuser #passwd 是命令 ftpuser是需要設定密碼的使用者
將使用者新增到user_list中
echo ftpuser >> /etc/vsftpd/user_list #也可以直接開啟user_list檔案,把使用者名稱新增進去,一個使用者名稱一行
-- 啟動vsftpd systemctl start vsftpd.service #重啟命令是systemctl restart vsftpd.service #停止是systemctl stop vsftpd.service #檢視狀態 systemctl status vsftpd,檢視其他程序狀態也是差不多的,只是修改一下程序名稱 ,比如 systemctl status nginx,就是檢視nginx的狀態
-- 配置檔案 /etc/vsftpd/vsftpd.conf
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=000 dirmessage_enable=YES xferlog_enable=YES xferlog_std_format=YES ascii_upload_enable=YES ascii_download_enable=YES
#
chroot_local_user設定為YES時,使用者被鎖定在自己的home目錄中,vsftpd將在下面chroot_list_file選項值的位置尋找chroot_list檔案
# 必須與下面的設定項配合
chroot_local_user=YES
# 被列入此檔案的使用者,在登入後將不能切換到自己目錄以外的其他目錄
# 從而有利於FTP伺服器的安全管理和隱私保護。此檔案需自己建立 ,裡面存入使用者名稱,一個使用者佔一行ch
root_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES #允許 /etc/vsftpd/user_list 檔案中的使用者登入
user_config_dir=/etc/vsftpd/userconf#新增讀取使用者配置目錄(注:本行配置預設沒有需要手動輸入)
tcp_wrappers=YES userlist_deny=NO
#end vsftpd.conf配置檔案修改完。主要是標紅的地方,其他都是基本 都是預設的配置 -- 建立使用者FTP使用目錄
Mkdir /data/wwwroot #這裡是根據自己需求來建立(就是FTP使用者可以訪問那個目錄)
- 進入使用者配置目錄,沒有的話自己建立,注意和vsftpd.conf檔案中的對應 user_config_dir=/etc/vsftpd/userconf cd /etc/vsftpd/userconf
-- 建立一個同登入使用者名稱稱一樣的檔案(在配置userconf資料夾裡建立) vim ftpuser
-- 寫入使用者登入FTP後能訪問的目錄位置:
local_root=/www/test
-- 重啟VSftp:
/etc/init.d/vsftpd restart
#vsftpd.conf配置檔案基本和預設的差別不大,主要是標紅的地方需要注意
最後附上中文註釋的配置檔案
/etc/vsftpd/vsftpd.conf |
主配置檔案 |
/usr/sbin/vsftpd |
Vsftpd的主程式 |
/etc/rc.d/init.d/vsftpd |
啟動指令碼 |
/etc/pam.d/vsftpd |
PAM認證檔案(此檔案中file=/etc/vsftpd/ftpusers欄位,指明阻止訪問的使用者來自/etc/vsftpd/ftpusers檔案中的使用者) |
/etc/vsftpd/ftpusers |
禁止使用vsftpd的使用者列表檔案。記錄不允許訪問FTP伺服器的使用者名稱單,管理員可以把一些對系統安全有威脅的使用者賬號記錄在此檔案中,以免使用者從FTP登入後獲得大於上傳下載操作的權利,而對系統造成損壞。(注意:linux-4中此檔案在/etc/目錄下) |
/etc/vsftpd/user_list |
禁止或允許使用vsftpd的使用者列表檔案。這個檔案中指定的使用者預設情況(即在/etc/vsftpd/vsftpd.conf中設定userlist_deny=YES)下也不能訪問FTP伺服器,在設定了userlist_deny=NO時,僅允許user_list中指定的使用者訪問FTP伺服器。(注意:linux-4中此檔案在/etc/目錄下) |
/var/ftp |
匿名使用者主目錄;本地使用者主目錄為:/home/使用者主目錄,即登入後進入自己家目錄 |
/var/ftp/pub |
匿名使用者的下載目錄,此目錄需賦權根chmod 1777 pub(1為特殊許可權,使上載後無法刪除) |
/etc/logrotate.d/vsftpd.log |
Vsftpd的日誌檔案 |
# 是否允許匿名登入FTP伺服器,預設設定為YES允許
# 使用者可使用使用者名稱ftp或anonymous進行ftp登入,口令為使用者的E-mail地址。
# 如不允許匿名訪問則設定為NO
anonymous_enable=YES
# 是否允許本地使用者(即linux系統中的使用者帳號)登入FTP伺服器,預設設定為YES允許
# 本地使用者登入後會進入使用者主目錄,而匿名使用者登入後進入匿名使用者的下載目錄/var/ftp/pub
# 若只允許匿名使用者訪問,前面加上#註釋掉即可阻止本地使用者訪問FTP伺服器
local_enable=YES
# 是否允許本地使用者對FTP伺服器檔案具有寫許可權,預設設定為YES允許
write_enable=YES
# 掩碼,本地使用者預設掩碼為077
# 你可以設定本地使用者的檔案掩碼為預設022,也可根據個人喜好將其設定為其他值
#local_umask=022
# 是否允許匿名使用者上傳檔案,須將全域性的write_enable=YES。預設為YES
#anon_upload_enable=YES
# 是否允許匿名使用者建立新資料夾
#anon_mkdir_write_enable=YES
# 是否啟用目錄歡迎資訊功能
# 當用戶用CMD模式首次訪問伺服器上某個目錄時,FTP伺服器將顯示歡迎資訊
# 預設情況下,歡迎資訊是通過該目錄下的.message檔案獲得的
# 此檔案儲存自定義的歡迎資訊,由使用者自己建立
#dirmessage_enable=YES
# 是否讓系統自動維護上傳和下載的日誌檔案
# 預設情況該日誌檔案為/var/log/vsftpd.log,也可以通過下面的xferlog_file選項對其進行設定
# 預設值為NO
xferlog_enable=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data).
# 是否設定FTP伺服器將啟用FTP資料埠的連線請求
# ftp-data資料傳輸,21為連線控制埠
connect_from_port_20=YES
# 設定是否允許改變上傳檔案的屬主,與下面一個設定項配合使用
# 注意,不推薦使用root使用者上傳檔案
#chown_uploads=YES
# 設定想要改變的上傳檔案的屬主,如果需要,則輸入一個系統使用者名稱
# 可以把上傳的檔案都改成root屬主。whoever:任何人
#chown_username=whoever
# 設定系統維護記錄FTP伺服器上傳和下載情況的日誌檔案
# /var/log/vsftpd.log是預設的,也可以另設其它
#xferlog_file=/var/log/vsftpd.log
# 是否以標準xferlog的格式書寫傳輸日誌檔案
# 預設為/var/log/xferlog,也可以通過xferlog_file選項對其進行設定
# 預設值為NO
#xferlog_std_format=YES
# 以下是附加配置,新增相應的選項將啟用相應的設定
# 是否生成兩個相似的日誌檔案
# 預設在/var/log/xferlog和/var/log/vsftpd.log目錄下
# 前者是wu_ftpd型別的傳輸日誌,可以利用標準日誌工具對其進行分析;後者是vsftpd型別的日誌
#dual_log_enable
# 是否將原本輸出到/var/log/vsftpd.log中的日誌,輸出到系統日誌
#syslog_enable
# 設定資料傳輸中斷間隔時間,此語句表示空閒的使用者會話中斷時間為600秒
# 即當資料傳輸結束後,使用者連線FTP伺服器的時間不應超過600秒。可以根據實際情況對該值進行修改
#idle_session_timeout=600
# 設定資料連線超時時間,該語句表示資料連線超時時間為120秒,可根據實際情況對其個修改
#data_connection_timeout=120
# 執行vsftpd需要的非特權系統使用者,預設是nobody
#nopriv_user=ftpsecure
# 是否識別非同步ABOR請求。
# 如果FTP client會下達“async ABOR”這個指令時,這個設定才需要啟用
# 而一般此設定並不安全,所以通常將其取消
#async_abor_enable=YES
# 是否以ASCII方式傳輸資料。預設情況下,伺服器會忽略ASCII方式的請求。
# 啟用此選項將允許伺服器以ASCII方式傳輸資料
# 不過,這樣可能會導致由"SIZE /big/file"方式引起的DoS攻擊
#ascii_upload_enable=YES
#ascii_download_enable=YES
# 登入FTP伺服器時顯示的歡迎資訊
# 如有需要,可在更改目錄歡迎資訊的目錄下建立名為.message的檔案,並寫入歡迎資訊儲存後
#ftpd_banner=Welcome to blah FTP service.
# 黑名單設定。如果很討厭某些email address,就可以使用此設定來取消他的登入許可權
# 可以將某些特殊的email address抵擋住。
#deny_email_enable=YES
# 當上面的deny_email_enable=YES時,可以利用這個設定項來規定哪些郵件地址不可登入vsftpd伺服器
# 此檔案需使用者自己建立,一行一個email address即可
#banned_email_file=/etc/vsftpd/banned_emails
# 使用者登入FTP伺服器後是否具有訪問自己目錄以外的其他檔案的許可權
# 設定為YES時,使用者被鎖定在自己的home目錄中,vsftpd將在下面chroot_list_file選項值的位置尋找chroot_list檔案
# 必須與下面的設定項配合
#chroot_list_enable=YES
# 被列入此檔案的使用者,在登入後將不能切換到自己目錄以外的其他目錄
# 從而有利於FTP伺服器的安全管理和隱私保護。此檔案需自己建立
#chroot_list_file=/etc/vsftpd/chroot_list
# 是否允許遞迴查詢。預設為關閉,以防止遠端使用者造成過量的I/O
#ls_recurse_enable=YES
# 是否允許監聽。
# 如果設定為YES,則vsftpd將以獨立模式執行,由vsftpd自己監聽和處理IPv4埠的連線請求
listen=YES
# 設定是否支援IPV6。如要同時監聽IPv4和IPv6埠,
# 則必須執行兩套vsftpd,採用兩套配置檔案
# 同時確保其中有一個監聽選項是被註釋掉的
#listen_ipv6=YES
# 設定PAM外掛模組提供的認證服務所使用的配置檔名,即/etc/pam.d/vsftpd檔案
# 此檔案中file=/etc/vsftpd/ftpusers欄位,說明了PAM模組能抵擋的帳號內容來自檔案/etc/vsftpd/ftpusers中
#pam_service_name=vsftpd
# 是否允許ftpusers檔案中的使用者登入FTP伺服器,預設為NO
# 若此項設為YES,則user_list檔案中的使用者允許登入FTP伺服器
# 而如果同時設定了userlist_deny=YES,則user_list檔案中的使用者將不允許登入FTP伺服器,甚至連輸入密碼提示資訊都沒有
#userlist_enable=YES/NO
# 設定是否阻扯user_list檔案中的使用者登入FTP伺服器,預設為YES
#userlist_deny=YES/NO
# 是否使用tcp_wrappers作為主機訪問控制方式。
# tcp_wrappers可以實現linux系統中網路服務的基於主機地址的訪問控制
# 在/etc目錄中的hosts.allow和hosts.deny兩個檔案用於設定tcp_wrappers的訪問控制
# 前者設定允許訪問記錄,後者設定拒絕訪問記錄。
# 如想限制某些主機對FTP伺服器192.168.57.2的匿名訪問,編緝/etc/hosts.allow檔案,如在下面增加兩行命令:
# vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY
# 表明限制IP為192.168.57.1/192.168.57.9主機訪問IP為192.168.57.2的FTP伺服器
# 此時FTP伺服器雖可以PING通,但無法連線
tcp_wrappers=YES