學校ftp服務器搭建


ftp配置文件,默認配置:

默認配置

anonymous_enable=YES
#允許匿名用戶和本地用戶登陸。

local_enable=YES
#匿名用戶使用的登陸名為ftp或anonymous,口令為空;匿名用戶不能離開匿名用戶家目錄/var/ftp,且只能下載不能上傳。

write_enable=YES
#本地用戶的登錄名為本地用戶名,口令為此本地用戶的口令;本地用戶可以在自己家目錄中進行讀寫操作;本地用戶可以離開自家目錄切換至有權限
訪問的其他目錄,並在權限允許的情況下進行上傳/下載。

#寫在文件/etc/vsftpd.ftpusers中的本地用戶禁止登陸。

anonymous_enable=YES/NO(YES)
#控制是否允許匿名用戶登入,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)
#如果設為YES,則允許匿名登入者有上傳文件(非目錄)的權限,只有在write_enable=YES時,此項才有效。當然,匿名用戶必須要有對上層目錄的寫入權。默認值為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)
#如果設為YES,則允許匿名登入者有新增目錄的權限,只有在write_enable=YES時,此項才有效。當然,匿名用戶必須要有對上層目錄的寫入權。
默認值為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。配合anon_umask一起使用,可以既顯示匿名用戶上傳文件目錄內容,又能同時控制匿名用戶上傳文件權限。

chown_username=username
#設置匿名用戶上傳文件(非目錄)的屬主名。建議不要設置為root。

anon_umask=077
#設置匿名登入者新增或上傳檔案時的umask 值。默認值為077,則新建檔案的對應權限為700。注意,默認為066,上傳文件后,無法顯示文件內容,改為umask=022,可以正常顯示匿名用戶上傳文件夾中的所有內容。同時這個anon_umask是造成我們使用匿名用戶上傳文件不能下載的主要原因

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,創建一個Teacher目錄,只用於teacher賬號的資料存儲及使用方便,匿名用戶無權限訪問;創建 一個benet目錄,並在其中建立各個班級的子目錄文件夾,所有學生使用匿名用戶登陸ftp服務器提交作業,要求權限只能上傳不能下載;為了方便學生課后更好的學習,需要下載ftp服務器中的學習資料,需要Public目錄下的所有文件都能下載。

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:123@192.168.0.101 
lftp teacher@192.168.0.101:~> 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 teacher@192.168.0.101
:~> ls 
drwx------ 2 0 0 16384 Aug 17 02:31 lost+found lftp teacher@192.168.0.101:/> 
[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班
[root@x101 ftproot]# ll -R
.:
total 12
drwxr-xr-x 5 teacher teacher 4096 Aug 17 19:13 benet
drwxr-xr-x 2 teacher teacher 4096 Aug 17 19:15 Public
drwx------ 2 teacher teacher 4096 Aug 17 19:15 Teacher

./benet:
total 12
drwxr-xr-x 2 ftp teacher 4096 Aug 17 19:18 1班
drwxr-xr-x 2 ftp teacher 4096 Aug 17 19:49 2班
drwxr-xr-x 2 ftp teacher 4096 Aug 17 19:11 3班

./benet/1班:
total 16
-rw------- 1 teacher ftp 14848 Aug 17 19:18 三班_李勇_學號2010230578.doc

./benet/2班:
total 44
-rw------- 1 teacher ftp 14848 Aug 17 19:49 三班_李勇_學號2010230578.doc
-rw------- 1 teacher ftp 26112 Aug 17 19:21 租房合同1.doc

./benet/3班:
total 0

./Public:
total 16
-rw-r--r-- 1 teacher teacher 422 Aug 17 19:14 LXE文件播放說明.txt
-rw-r--r-- 1 teacher teacher 6656 Aug 17 19:15 新建 XLS 工作???xls
-rw-r--r-- 1 teacher teacher 531 Aug 17 19:15 新建文本文檔 (3).txt

./Teacher:
total 32
-rwx------ 1 teacher teacher 171 Aug 17 19:15 linux網絡排錯.txt
-rwx------ 1 teacher teacher 26112 Aug 17 19:15 租房合同1.doc
[root@x101 ftproot]#
[root@x101 home]# chmod 700 /ftproot/Teacher/ #授權 

  

  

訪問測試: 
匿名訪問,上傳作業、下載作業、下載Public中的資源、訪問teacher。

 

匿名用戶下載Public中的資源,正常下載,但是不能上傳。
匿名用戶訪問Teacher目錄失敗,無權限訪問

 

用戶teacher登入 給teacher文件夾創建的權限 匿名用戶訪問teacher文件夾 沒有權限(上面的命令生效)

 
        
配置匯總如下:

[root@x101 ftproot]# grep -Ev "^[#|$]" /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=066                #可以不需要(默認)
anon_upload_enable=YES
anon_world_readable_only=YES        #可以不需要(默認)
anon_root=/ftproot
local_root=/ftproot
allow_writeable_chroot=YES
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=teacher
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
deny_file={*.rmvb,*.mp3,*.avi,*.exe}

  

  

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM