ftp伺服器搭建
ftp配置檔案,預設配置:
預設配置
anonymous_enable=YES
#允許匿名使用者和本地使用者登陸。
local_enable=YES
#匿名使用者使用的登陸名為ftp或anonymous,口令為空;匿名使用者不能離開匿名使用者家目錄/var/ftp,且只能下載不能上傳。
write_enable=YES
#本地使用者的登入名為本地使用者名稱,口令為此本地使用者的口令;本地使用者可以在自己家目錄中進行讀寫操作;本地使用者可以離開自家目錄切換至有許可權
訪問的其他目錄,並在許可權允許的情況下進行上傳/下載。
#寫在檔案/etc/vsftpd.ftpusers中的本地使用者禁止登陸。
anonymous_enable=YES/NO(YES)
write_enable=YES/NO(YES)
#是否允許登陸使用者有寫許可權。屬於全域性設定,預設值為YES。
no_anon_password=YES/NO(NO)
#若是啟動這項功能,則使用匿名登入時,不會詢問密碼。預設值為NO。
ftp_username=ftp
#定義匿名登入的使用者名稱。預設值為ftp。
anon_root=/var/ftp
#使用匿名登入時,所登入的目錄。預設值為/var/ftp。注意ftp目錄不能是777的許可權屬性,即匿名使用者的家目錄不能有777的許可權。
anon_upload_enable=YES/NO(NO)
anon_world_readable_only=YES/NO(YES)
#如果設為YES,則允許匿名登入者下載可閱讀的檔案(可以下載到本機閱讀,不能直接在FTP伺服器中開啟閱讀)。預設值為YES。當為YES時,檔案的other使用者必須有r許可權才允許下載,即使檔案的屬主為ftp且對檔案有r許可權也無法下載,為了安全考慮,預設為YES;當為NO時,則只要屬主為ftp且對檔案有r許可權即可下載;
anon_mkdir_write_enable=YES/NO(NO)
預設值為NO。
anon_other_write_enable=YES/NO(NO)
#如果設為YES,則允許匿名登入者更多於上傳或者建立目錄之外的許可權,譬如刪除或者重新命名。(如果anon_upload_enable=NO,則匿名使用者不能
上傳檔案,但可以刪除或者重新命名已經存在的檔案;如果anon_mkdir_write_enable=NO,則匿名使用者不能上傳或者新建資料夾,但可以刪除或者重
命名已經存在的資料夾。)預設值為NO。
chown_uploads=YES/NO(NO)
#設定是否改變匿名使用者上傳檔案(非目錄)的屬主。預設值為NO。
chown_username=username
#設定匿名使用者上傳檔案(非目錄)的屬主名。建議不要設定為root。
anon_umask=077
#設定匿名登入者新增或上傳檔案時的umask 值。預設值為077,則新建檔案的對應許可權為700。
deny_email_enable=YES/NO(NO)
#若是啟動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內容為email address。若是使用匿名登入,則會要求輸入email address,
若輸入的email address 在此檔案內,則不允許進入。預設值為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
chroot_local_user=YES
#是否將所有使用者限制在主目錄,YES為啟用 NO禁用.(該項預設值是NO,即在安裝vsftpd後不做配置的話,ftp使用者是可以向上切換到要目錄之外的)
allow_writeable_chroot=YES
#選項chroot_local_user=YES 意味著本地使用者將進入 chroot 環境,當登入以後預設情況下是其 home 目錄。並且我們要知道,預設情況下,出於安全原因,VSFTPD 不允許 chroot 目錄具有可寫許可權。然而,我們可以通過選項 allow_writeable_chroot=YES 來改變這個設定
chroot_list_enable #是否啟動限制使用者的名單 YES為啟用? NO禁用(包括註釋掉也為禁用)
chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目錄下的使用者名稱單,至於是限制名單還是排除名單,這取決於chroot_local_user的值,我們可以這樣記憶: chroot_local_user總是一個全域性性的設定,其為YES時,全部使用者被鎖定於主目錄,其為NO時,全部使用者不被鎖定於主目錄。那麼我們勢必需要在全域性設定下能做出一些“微調”,即,我們總是需要一種“例外機制",所以當chroot_list_enable=YES時,表示我們“需要例外”。而”例外“的含義總是有一個上下文的,即,當”全部使用者被鎖定於主目錄“時(即chroot_local_user=YES),"例外"就是:不被鎖定的使用者是哪些;當"全部使用者不被鎖定於主目錄"時(即chroot_local_user=NO),"例外"“就是:要被鎖定的使用者是哪些。這樣解釋和記憶兩者之間的關係就很清晰了!
virtual_use_local_privs=YES
#虛擬使用者和本地使用者有相同的許可權
banned_email_file=/etc/vsftpd/banner_emails
#此檔案用來輸入email address,只有在deny_email_enable=YES時,才會使用到此檔案。若是使用匿名登入,則會要求輸入email address
搭建ftp伺服器,用於區域網內部檔案共享
1、建立使用者,並指定家目錄 [root@x101 home]# useradd teacher -d /ftproot [root@x101 home]# echo "p@SS123" | passwd --stdin teacher 2、掛載硬碟,建立lvm邏輯卷,並永久掛載到/ftproot目錄下 [root@x101 home]# fdisk /dev/sdb Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): Using default response p Partition number (2-4, default 2): Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e Command (m for help): p Disk /dev/sdb: 5368 MB, 5368709120 bytes, 10485760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x485aacab Device Boot Start End Blocks Id System /dev/sdb1 2048 10485759 5241856 8e Linux LVM Command (m for help): w [root@x101 home]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 1G 0 part [SWAP] └─sda3 8:3 0 18.5G 0 part / sdb 8:16 0 5G 0 disk └─sdb1 8:17 0 5G 0 part 建立物理卷 [root@x101 home]# pvcreate sdb1 /dev/sdb1 建立卷組 [root@x101 home]# vgcreate vg_sdb1 /dev/sdb1 建立邏輯卷 [root@x101 home]# vgdisplay --- Volume group --- VG Name vg_sdb1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size <5.00 GiB PE Size 4.00 MiB Total PE 1279 Alloc PE / Size 1279 / <5.00 GiB Free PE / Size 0 / 0 VG UUID swSkuE-7RoQ-Qy6f-spus-QdHk-Plch-2SPHgQ [root@x101 home]# echo "1279*4"|bc 5116 [root@x101 home]# lvcreate -n lv_sdb1 -L 5116M vg_sdb1
# -n用於指定邏輯卷名稱,-L 指定建立的邏輯卷大小 [root@x101 home]# mkfs.ext4 /dev/vg_sdb1/lv_sdb1 [root@x101 home]# mount /dev/vg_sdb1/lv_sdb1 /ftproot [root@x101 home]# echo "/dev/vg_sdb1/lv_sdb1 /ftproot ex4 defaults 0 0">> /etc/fstab [root@x101 home]# mount -a [root@x101 home]# df -Th
3、根據要求,安裝並配置ftp伺服器ftp根目錄下有三個目錄: Benet要求所有學員能上傳作業(上傳檔案不能是:*.rmvb,*.mp3,*.avi,*.exe)但不能下載,且要求teacher能給該目錄授權並下載學員作業; Public要求共享學習資料,學員能下載不能上傳,teacher能上傳下載; Teacher目錄只有teacher能訪問,其他所有人都無法訪問。 訪問測試並驗證。 主配置檔案新增的配置項: anon_upload_enable=YES anon_mkdir_write_enable=NO chown_uploads=YES chown_username=teacher chroot_local_user=YES anon_root=/ftproot
allow_writeable_chroot=YES
deny_file={*.rmvb,*.mp3,*.avi,*.exe}
實施步驟:
[root@x101 home]# yum -y install vsftpd
[root@x101 home]# vim /etc/vsftpd/vsftpd.conf
新增如下內容: anon_upload_enable=YES
anon_mkdir_write_enable=NO
chown_uploads=YES
chown_username=teacher
chroot_local_user=YES
allow_writeable_chroot=YES
local_root=/ftproot
anon_root=/ftproot
deny_file={*.rmvb,*.mp3,*.avi,*.exe}
[root@x101 home]# chown teacher.teacher /ftproot/
#給/ftproot目錄授權teacher使用者
[root@x101 home]# rm -rf /ftproot/*
[root@x101 home]# chmod 755 /ftproot/
[root@x101 home]# systemctl start vsftpd;systemctl enable vsftpd
測試:
[root@x112 ~]# lftp teacher:[email protected]
lftp [email protected]:~> ls
ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
[root@x101 vsftpd]# chmod a-w /ftproot/
[root@x101 vsftpd]# lftp [email protected]
:~> ls
drwx------ 2 0 0 16384 Aug 17 02:31 lost+found lftp [email protected]:/>
[root@x101 vsftpd]# yum list vsftpd
Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com Installed Packages vsftpd.x86_64 3.0.2-22.el7 @rhel
#vsftpd3.0版本及之後的版本,預設關閉chroot囚禁家目錄的寫許可權,才能夠進行訪問或者新增此項allow_writeable_chroot=YES
windows訪問ftp,使用teacher使用者登入並建立Benet、Public、Teacher目錄,並在Benet5.2下建立班級目錄並授權,上傳資源到Public、Teacher目錄,關閉視窗。
[root@x101 benet]# chown ftp benet /1班
[root@x101 benet]# chown ftp benet /2班
[root@x101 benet]# chown ftp benet /3班
匿名使用者下載Public中的資源,正常下載,但是不能上傳。
[root@x101 home]# chmod 700 /ftproot/Teacher/ #授權
訪問測試:
匿名訪問,上傳作業、下載作業、下載Public中的資源、訪問teacher。
匿名使用者訪問Teacher目錄失敗,無許可權訪問
使用者teacher登入 給teacher資料夾建立的許可權 匿名使用者訪問teacher資料夾 沒有許可權(上面的命令生效)