Linux 安裝配置vsftp服務
二、VSFTP伺服器的安裝配置
本文的伺服器架構:
FTP服務端:xiaolyu10 IP:192.168.31.10
FTP客戶端:xiaolyu11 IP:192.168.31.11
1. 安裝:
yum安裝或rpm安裝均可。
[[email protected] ~]# yum install vsftp
[[email protected] ~]# yum -y install lftp
2. 配置檔案:
[[email protected] ~]# ls -l /etc/vsftpd total 32 -rw-r--r-- 1 root root 13 Mar 16 15:14 chroot_list -rw------- 1 root root 125 May 11 2016 ftpusers -rw------- 1 root root 361 May 11 2016 user_list -rw------- 1 root root 4644 Mar 16 15:13 vsftpd.conf -rw------- 1 root root 4599 Mar 16 14:12 vsftpd.conf_bak -rwxr--r-- 1 root root 338 May 11 2016 vsftpd_conf_migrate.sh
/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置檔案
/etc/vsftpd/ftpusers:用於指定哪些使用者不能訪問FTP 伺服器。 黑名單
/etc/vsftpd/user_list:指定允許使用vsftpd 的使用者列表檔案。 白名單
vim /etc/vsftpd/user_list
# 如果userlist_deny= YES(預設),絕不允許在這個檔案中的使用者登入ftp,甚至不提示輸入密碼
#prompt 提示
/etc/vsftpd/vsftpd_conf_migrate.sh:是vsftpd 操作的一些變數和設定指令碼
/var/ftp/:預設情況下匿名使用者的根目錄
三、VSFTP伺服器實戰
實戰1:
公司技術部準備搭建一臺功能簡單的FTP 伺服器,允許所有員工上傳和下載檔案,並允許建立用戶自己的目錄。
分析:
允許所有員工上傳和下載檔案需要設定成允許匿名使用者登入並且需要將允許匿名使用者上傳功能
開啟,
anon_mkdir_write_enable 欄位可以控制是否允許匿名使用者建立目錄。
備份原配置檔案:
[[email protected] vsftpd]# cp vsftpd.conf vsftpd.conf_bak
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
允許匿名使用者訪問
anonymous_enable=YES
允許匿名使用者上傳檔案並可以建立目錄
anon_upload_enable=YES
anon_mkdir_write_enable=YES
啟動服務:
[[email protected] ~]# service vsftpd restart
[[email protected] pub]# chown ftp.ftp /var/ftp/pub/
然後測試,是可以新建檔案夾了,但是不能重新命名,不能刪除!
[[email protected] ~]# mkdir /var/ftp/xiaolyudata [[email protected] ~]# chown ftp.ftp /var/ftp/xiaolyudata [[email protected] ~]# ll -d !$ ll -d /var/ftp/xiaolyudata drwxr-xr-x 2 ftp ftp 4096 Mar 16 14:34 /var/ftp/xiaolyudata [[email protected] ~]#
重啟服務:
[[email protected] ~]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] [[email protected] ~]#
現在匿名上傳的檔案是禁止刪除的。
這樣匿名使用者的上傳就算成功了
注:工作中,匿名使用者只是只讀訪問,寫的許可權也沒有的。
補充:
如果想讓匿名使用者可以重新命名或者刪除的許可權,新增如下一條配置引數:
重啟服務:
[[email protected] ~]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: 500 OOPS: bad bool value in config file for: anon_other_write_enable [FAILED]
根據提示,說明我剛才新增的那一行匿名寫許可權的引數有問題
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
也就是說引數後面不能有多餘的空格。
重新啟動就可以對重新命名和刪除檔案夾了,
匿名使用者就可以刪除和修改,非常不安全,慎重使用這個引數。
注意,預設匿名使用者家目錄的許可權是755,這個許可權是不能改變的。切記!
[[email protected] ~]# service vsftpd restart
實戰2:
公司內部現在有一臺FTP 和WEB 伺服器,FTP 的功能主要用於維護公司的網站內容,包括上傳文件、建立目錄、更新網頁等等。公司現有兩個部門負責維護任務,他們分別適用team1 和team2帳號進行管理。先要求僅允許team1 和team2 帳號登入FTP 伺服器,但不能登入本地系統,並將這兩個帳號的根目錄限制為/var/www/html,不能進入該目錄以外的任何目錄。
ftp 和www web伺服器相結合。
www web伺服器根目錄: /var/www/html
只允許:team1和team2兩使用者 可以上傳。 vsftp禁止匿名。
分析:
將FTP 和WEB 伺服器做在一起是企業經常採用的方法,這樣方便實現對網站的維護,為了增強安全性,首先需要使用僅允許本地使用者訪問,並禁止匿名使用者登入。其次使用chroot 功能將team1和team2 鎖定在/var/www/html 目錄下。如果需要刪除檔案則還需要注意本地許可權
解決方案:
(1)建立維護網站內容的ftp 帳號team1 和team2 並禁止本地登入,然後設定其密碼
[[email protected] ~]# useradd -s /sbin/nologin team1 [[email protected] ~]# useradd -s /sbin/nologin team2 [[email protected] ~]# echo "123456" | passwd --stdin team1 Changing password for user team1. passwd: all authentication tokens updated successfully. [[email protected] ~]# echo "123456" | passwd --stdin team2 Changing password for user team2. passwd: all authentication tokens updated successfully.
2)配置vsftpd.conf 主配置檔案並作相應修改
[[email protected] vsftpd]# cp vsftpd.conf_bak vsftpd.conf cp: overwrite `vsftpd.conf'? y [[email protected] vsftpd]# vim vsftpd.conf
#anonymous_enable=YES anonymous_enable=NO 禁止匿名使用者登入# # Uncomment this to allow local users to log in. local_enable=YES 允許本地使用者登入
繼續將:
修改為:
local_root=/var/www/html:設定本地使用者的根目錄為/var/www/html
chroot_list_file=/etc/vsftpd/chroot_list:設定鎖定使用者在根目錄中的列表檔案。此檔案存放要鎖定的使用者名稱
儲存退出
(3)建立/etc/vsftpd/chroot_list 檔案,新增team1 和team2 帳號
[[email protected] vsftpd]# touch /etc/vsftpd/chroot_list [[email protected] vsftpd]# ll !$ ll /etc/vsftpd/chroot_list -rw-r--r-- 1 root root 0 Mar 16 15:13 /etc/vsftpd/chroot_list [[email protected] vsftpd]# vim /etc/vsftpd/chroot_list #寫入以下內容,一行,一個使用者名稱
team1
team2
(4)重啟vsftpd 服務使配置生效
service vsftpd restart
(5)修改本地許可權
[[email protected] vsftpd]# mkdir -p /var/www/html/ [[email protected] vsftpd]# ll -d /var/www/html/ drwxr-xr-x 2 root root 4096 Mar 16 15:16 /var/www/html/ [[email protected] vsftpd]# chmod -R o+w /var/www/html/ [[email protected] vsftpd]# ll -d /var/www/html/ drwxr-xrwx 2 root root 4096 Mar 16 15:16 /var/www/html/
(6).測試:
[[email protected] ~]# lftp 192.168.31.10 -uteam1,123456 lftp [email protected]:~> ls drwxr-xr-x 2 500 500 4096 Mar 16 07:24 web lftp [email protected]:~>
如果通過FileZilla訪問出現550 Create directory operation failed 錯誤,則需要修改selinux
執行以下命令檢視狀態:
[[email protected] ~]# getsebool -a | grep ftp
返回的結果看到兩行都是off,代表,沒有開啟外網的訪問
[[email protected] ~]# setsebool -P ftpd_full_access on
[[email protected] ~]# setsebool -P tftp_home_dir on