1. 程式人生 > >配置FTP伺服器提供上傳下載功能

配置FTP伺服器提供上傳下載功能

本節所講內容:

•      使用者和組的相關配置檔案

•      管理使用者和組

•      進入單使用者模式找回root身份

•      暴力破解rhel5下shadow檔案中的密碼

FTP服務端:xuegod63.cn   IP:192.168.1.63

FTP客戶端:xuegod64.cn   IP:192.168.1.64

FTP服務概述:

FTP伺服器(File TransferProtocol Server)是在網際網路上提供檔案儲存和訪問服務的計算機,它們依照FTP協議提供服務。

FTP(File Transfer Protocol: 檔案傳輸協議)作用: Internet 上用來傳送檔案的協議

常見FTP伺服器:

windows:Serv-U FTP Server

Linux:ProFTPD:(Professional FTP daemon)一個Unix平臺上或是類Unix平臺上(如Linux, FreeBSD等)的FTP伺服器程式。 

今天的主角:vsftp

VSFTP是一個基於GPL釋出的類Unix系統上使用的FTP伺服器軟體,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是程式碼的安全。

特點:

它是一個安全、高速、穩定的FTP伺服器;

模式: C/S 模式

埠:

[[email protected] ~]#vim /etc/services

20 (傳資料)   21 (傳指令)

fsp(File Service Protocol:檔案服務協議。

安裝vsftp伺服器端

[[email protected] ~]# rpm-ivh /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm

yum -y install vsftpd

安裝客戶端:

[[email protected] ~]# rpm -ivh /mnt/Packages/lftp-4.0.9-1.el6.x86_64.rpm

注:從RHEL6開始,系統映象中預設沒有ftp客戶端命令。取而代之的是lftp命令

Linux

客戶端:

lftp 是一個功能強大的下載工具,它支援訪問檔案的協議: ftp, ftps, http, https,hftp, fish.(其中ftps和https需要在編譯的時候包含openssl庫)。llftp的介面非常好一個shell: 有命令補全,歷史記錄,允許多個後臺任務執行等功能,使用起來非常方便。它還有書籤、排隊、映象、斷點續傳、多程序下載等功能。

配置檔案

/var/ftp/pub/                            #預設的共享目錄

/etc/vsftpd/vsftpd.conf#vsftpd主配置檔案

/etc/vsftpd/ftpusers           #使用者指定哪些使用者不能訪問ftp伺服器,黑名單

/etc/vsftpd/user_list           #使用者指定哪些使用者能訪問ftp伺服器,白名單

/var/ftp/                            #預設情況下匿名使用者的根目錄

啟動服務

[[email protected] ~]#service vsftpd restart

[[email protected] ~]#chkconfig vsftpd on

[[email protected] ~]#netstat -anptu | grep ftp

tcp        0     0 0.0.0.0:21                 0.0.0.0:*                   LISTEN      2877/vsftpd

互動: 為什麼看不到20埠?。

因為沒有資料通訊。 

FTP服務的使用方法

Linux

[[email protected] ~]# lftp192.168.1.63

lftp 192.168.1.63:~>ls

drwxr-xr-x    2 0       0            4096 Mar 31 12:47 pub

windows:

修改配置檔案,實戰舉例

例1公司技術部準備搭建一臺功能簡單的FTP 伺服器,允許所有員工上傳和下載檔案,並允許建立用

戶自己的目錄。

允許匿名使用者訪問

anonymous_enable=YES

允許匿名使用者上傳檔案並可以建立目錄

anon_upload_enable=YES

anon_mkdir_write_enable=YES 

重啟服務

[[email protected] ~]#service vsftpd restart

啟動服務:

service vsftpd restart

測試:  不能寫

(2)建立上傳目錄ftp 使用者的寫入許可權

注意,預設匿名使用者家目錄的許可權是755,這個許可權是不能改變的。切記!

下面我們來一步一步的實現,先修改目錄許可權,建立一個公司上傳用的目錄,叫xuegoddata,設定擁有者為ftp 使用者所有,目錄許可權是755

[[email protected] vsftpd]# mkdir/var/ftp/xuegoddata

[[email protected] vsftpd]# chown ftp/var/ftp/xuegoddata/

[[email protected] vsftpd]# ll -d !$

ll -d /var/ftp/xuegoddata/

drwxr-xr-x 2 ftp root 4096 Mar  9 19:30 /var/ftp/xuegoddata/

然後重新啟動服務

[[email protected] ~]# service vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

(5)測試

匿名登入FTP

現在我們匿名上傳

現在匿名上傳的檔案是禁止刪除滴~

這樣匿名使用者的上傳就算成功了

注:工作中,匿名使用者只是只讀訪問,寫的許可權也沒有的。

例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/nologinteam1

[[email protected] ~]# useradd -s /sbin/nologinteam2

[[email protected] ~]# echo "123456" |passwd --stdin team1

Changing password for user team1.

passwd: all authentication tokens updatedsuccessfully.

[[email protected] ~]# echo "123456" |passwd --stdin team2

Changing password for user team2.

passwd: all authentication tokens updatedsuccessfully.

2)配置vsftpd.conf 主配置檔案並作相應修改

[[email protected] vsftpd]# cp vsftpd.conf.backvsftpd.conf

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO:禁止匿名使用者登入

local_enable=YES:允許本地使用者登入

改:

為:

local_root=/var/www/html:設定本地使用者的根目錄為/var/www/html

chroot_list_enable=YES:激chroot 功能

chroot_list_file=/etc/vsftpd/chroot_list:設定鎖定使用者在根目錄中的列表檔案。此檔案存放要鎖定的使用者名稱

儲存退出

(3)建立/etc/vsftpd/chroot_list 檔案,新增team1 和team2 帳號

[[email protected] vsftpd]# touch/etc/vsftpd/chroot_list

[[email protected] ~]# ll !$

ll /etc/vsftpd/chroot_list

-rw-r--r-- 1 root root 0 Nov 10 17:08/etc/vsftpd/chroot_list

[[email protected] ~]# vim/etc/vsftpd/chroot_list  #寫入以下內容,一行,一個使用者名稱

team1

team2

(5)重啟vsftpd 服務使配置生效

service vsftpd restart

(6)修改本地許可權

[[email protected] ~]# ll -d /var/www/html/

drwxr-xr-x. 2 root root 4096 Oct  6  2011/var/www/html/

[[email protected] ~]# chmod -R o+w/var/www/html/

[[email protected] ~]# ll -d /var/www/html/

drwxr-xrwx. 2 root root 4096 Oct  6  2011/var/www/html/

(7)測試

測試:

windows  :windows+R  再執行cmd

C:\Users\shen>ftp 192.168.1.63

連線到 192.168.1.63。

220 (vsFTPd 2.2.2)

使用者(192.168.1.63:(none)): team1

331 Please specify the password.

密碼:123456

230 Login successful.

ftp> pwd

257 "/"

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

226 Directory send OK.

ftp> mkdir test

257 "/test" created

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

test

226 Directory send OK.

ftp: 收到 6 位元組,用時 0.00秒 6.00千位元組/秒。

測試刪除:

ftp> rm -rf test

550 Remove directory operation failed.

ftp> rmdir test   #刪除時,不用能用rm命令,因為rm命令不是ftp上的命令。

250 Remove directory operation successful.

ftp> ls

200 PORT command successful. Consider using PASV.

150 Here comes the directory listing.

226 Directory send OK.

ftp>

FTP虛擬使用者的使用

概述:通過虛擬使用者能講ftp的使用者和系統使用者進行分離,這樣即使黑客破解了ftp的賬號和密碼,也只是能訪問ftp共享出來的內容,對伺服器本身沒有任何影響,能提高伺服器的安全性。

公司環境:

假設A公司有一臺ftp伺服器,此伺服器提供了供公司員工下載的一些資料,普通員工只有檢視和下載許可權,但是沒有上傳和修改的許可權,公司經理擁有上傳和下載的許可權

實現步驟:

1、建立使用者文字檔案,在此檔案中新增虛擬使用者,兩行為一組,分別對應使用者名稱和密碼

[[email protected] ~]# vim/etc/vsftpd/vusers.list

xsb

123

boss

456

注:其中xsb為普通員工登入賬號,boss為經理登入賬號

2、生成資料庫

使用db_load生成,如果沒有此命令,可以使用以下命令進行安裝

[[email protected] ~]# yum -yinstall db4-utils

生成使用者資料庫

[[email protected] ~]# db_load -T-t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

注:-T:允許應用程式能夠將文字檔案轉譯載入資料庫

       -t:hash使用hash碼加密

       -f:指定包含使用者名稱和密碼的文字檔案

3、修改資料庫檔案的訪問許可權,提高安全性,只允許root使用者擁有讀寫許可權,防止非法使用者盜取

[[email protected] ~]# chmod 600/etc/vsftpd/vusers.db

4、建立兩個系統使用者virtual和rm並修改目錄許可權

[[email protected] ~]# chmod600 /etc/vsftpd/vusers.db

[[email protected] ~]#useradd -d /var/ftp/xsb -s /sbin/nologin virtual

[[email protected] ~]#useradd -d /var/ftp/boss -s /sbin/nologin rm

[[email protected] ~]# chmod755 /var/ftp/xsb/

[[email protected] ~]# chmod755 /var/ftp/boss/

5、配置PAM檔案

為了是伺服器能使用資料庫檔案,對客戶端進行身份驗證,需要呼叫系統的PAM模組

PAM概述:

PAM(Plugable AuthenticationModule)為可插拔認證模組,不必重新安裝應用系統,通過修

改指定的配置檔案,調整對該程式的認證方式。PAM 模組配置檔案路徑為/etc/pam.d/目錄,此

目錄下儲存著大量與認證有關的配置檔案,並以服務名稱命名。

[[email protected] ~]# vim/etc/pam.d/vsftpd.vu

#%PAM-1.0

auth required/lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

account required/lib64/security/pam_userdb.so db=/etc/vsftpd/vusers

注:檔案最後呼叫的資料庫檔案時省略掉了db字尾

6、修改主配置檔案

[[email protected] ~]# vim/etc/vsftpd/vsftpd.conf

local_enable=YES                              #允許本地使用者登入

write_enable=YES                             #允許寫入

anon_umask=022                              #設定上傳檔案的預設許可權

chroot_local_user=YES                      #限制目錄

#guest_enable=YES                          #開啟虛擬使用者支援,可以在使用者單獨配置檔案中設定

#guest_username=virtual                 #設定對映本地使用者,可以在使用者單獨配置檔案中設定

pam_service_name=vsftpd.vu           #指定PAM檔案

max_clients=300                               #最大接入的客戶端數量

max_per_ip=10                                 #設定每個IP地址最大連線數

如果在主配置檔案中開啟了虛擬使用者支援,並配置了虛擬使用者對映的本地使用者,那麼這些配置好之後虛擬使用者就能在客戶端進行登入了,但是所有的虛擬使用者許可權一樣。

建立獨立的配置檔案,設定不同使用者的許可權

[[email protected] ~]# vim/etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir    #指定使用者配置檔案的路徑

[[email protected] ~]# vim/etc/vsftpd/vusers_dir/xsb

guest_enable=yes

guest_username=virtual

anon_world_readable_only=no                 #允許匿名使用者瀏覽整個伺服器的檔案

anon_max_rate=50000                             #設定傳輸速率為50KB/s

[[email protected] ~]# vim/etc/vsftpd/vusers_dir/boss

guest_enable=yes

guest_username=rm

anon_world_readable_only=no

write_enable=yes

anon_mkdir_write_enable=yes                 #允許建立目錄

anon_upload_enable=yes                         #允許上傳檔案

anon_max_rate=100000                            #甚至傳輸速率為100KB/s

anon_other_write_enable=yes                  #允許修改、重新命名、刪除檔案

客戶端驗證:

先拷貝一些測試檔案

[[email protected] ~]# cp/etc/passwd /var/ftp/xsb/

[[email protected] ~]# cp/etc/hosts /var/ftp/boss/

客戶端登入驗證

使用xsb使用者登入時,上傳檔案失敗,許可權不允許

使用boss使用者登入上傳檔案成功

相關推薦

配置FTP伺服器提供下載功能

本節所講內容: •      使用者和組的相關配置檔案 •      管理使用者和組 •      進入單使用者模式找回root身份 •      暴力破解rhel5下shadow檔案中的密碼 FTP服務端:xuegod63.cn   IP:192.168.1.63 FT

CentOS 安裝rz和sz命令,實現ftp下載功能

lrzsz在linux裡可代替ftp上傳和下載。 windows 需要向centos伺服器上傳檔案,可直接在centos上執行命令yum -y install lrzsz 程式會自動安裝好,然後如你要下載者sz [找到你要下載的檔案] 如果你要上傳,者rz 瀏覽找到你

C#實現FTP下載功能

//ftp的上傳功能     private void Upload(string filename)     {         FileInfo fileInf = new FileInfo(filename);         string uri = "ftp://

Libcurl的初步實現tfp下載功能

rtmp 細致 helib art download close 2.3 article 可能 該學習筆記的目標是利用libcurl實現ftp文件上傳和下載功能 一、Libcurlde的簡單介紹 Libcurl是一個免費的而且易於使用的利用url進行文件傳輸的庫。,

Linux使用Shell腳本實現ftp的自動下載

binary http linux user 文件中 get cal 文件重定向 tab 1. ftp自動登錄批量下載文件。#####從ftp服務器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<

FTP文件下載

交互 case 所有 緩沖 沒有 如果 bye command AR ftp ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer] 參數-v 禁止顯示遠程服務器響應。-n 禁

javaweb專案下載功能實現

最近把java_web專案的放在了linux伺服器上,我是在windows下開發的。 本機測試的時候沒問題,但上線後發現下載檔案這個功能出了問題,獲取不到輸入流,下載下的檔案是空的。 一番排查之後,發現了問題 原來的程式碼是: FileInputStream in = new FileInp

基於Java的一個簡單的檔案下載功能

最近在公司給客戶端做介面,有一個圖片上傳和檔案下載的功能,本來想用Struts來做檔案上傳下載,但是看了下公司好像沒有這個配置,然後看了下同事的程式碼,才發現原來Apache也可以簡單的實現檔案上傳下載。 首先引入commons-io-2.2.jar FileUtils為我

Flask 實現檔案下載功能

檔案下載的兩種方法, 一是構建檔案url,二是使用flask.send_from_directory(directory, filename, **options),介紹第一種方法,是我寫著寫著就發現的,第二種方法就查api吧,不介紹了。 檔案下載一般都是先有一

java socket 實現c/s檔案下載功能+註冊登入

使用JAVA SOCKET實現c/s結構的通訊程式,以實現客戶端向伺服器端的檔案的上傳以及伺服器端向客戶端的檔案的下載。 實現思路: 1、在伺服器端,建立SocketServer物件,監聽某一埠,有連線請求則開一個執行緒處理這一請求 2、在客戶端,根據伺服器的ip地址以及埠號,建立

Android FTP 客戶端 /下載 帶進度條實戰原始碼

關於FTP我們在Android開發的時候先說一下特別需要注意,就當是正餐之前調味吧。 1.FTP是基於TCP/IP協議的常用埠是:21,也就是如果不設定埠實際上就是訪問了21埠 2.FTP程式設計要特別考慮到編碼的問題,尤其是要和FTP服務的編碼能匹配,實際上一搬都是U

.net,C#,Ftp各種操作,,下載,刪除檔案,建立目錄,刪除目錄,獲得檔案列表...

using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; using System.Windows.Forms; namespace ConvertData {

CentOS6.5下搭建FTP伺服器 + Java檔案

/** * @Type ftpClientFileManager.java * @Desc * @author 123 * @date 2017年3月31日 下午2:50:58 * @version */ @Service public class FTPFileManager {

用MVC實現簡單的檔案(圖片)下載功能

  一 實現效果簡單說明 上傳:上傳圖片,將圖片儲存到伺服器,並將相關資訊寫入資料庫。 下載:在頁面展示圖片下載列表的縮圖,點選圖片將其載入到本地。   二.View Index中程式碼 <h2>圖片上傳區</h2> <hr/> &l

fastdfs 新新增一個專案的圖片目錄 實現獨立的下載功能

1,功能需求Fastdfs已經安裝完成,部署過程見:http://blog.csdn.net/mchdba/article/details/50933405,fastdfs安裝啟動後,預設只有一個group1,只能適合用於一個專案;那麼如果有新專案過來了,是否需要再準備新的l

OkHttp基本使用(三)下載功能實現

前言 本篇將使用OkHttp實現檔案的上傳和下載,以及下載實現斷點續傳功能。因為是基本的使用,此係列文章主要是以大家會用為主而寫的。當然,只要會用了,後面的優化、封裝等等就不難了。 下載 使用OkHttp完成下載功能,實現斷點續傳,並附帶進度條顯示下載進度。檔案下載的互

Mule 3.4.0中對Ftp協議的下載的應用

1.    前言 一直都聽說 Mule 對 Ftp 和 Http 協議的支援很好,於是就關注了一下。 Mule 通過一系列的配置檔案的配置就可以完成對 Ftp 伺服器的下載和上傳 ,這個還是很神奇的。 但是可惜的是, Mule 本身並不支援 FtpS 協議,只支援 SFTP ,這樣對於工業級的使用上,未免有

Python 操作FTP檔案,下載檔案

#!C:/Python27 #coding=utf-8 from ctypes import * import os import sys import ftplib class myFtp: ftp = ftplib.FTP() bIsDir = F

Linux系統安裝rz/sz實現本地和伺服器檔案下載

一:說明     通過SecureCRT等SSH登入軟體連線伺服器,可以通過rz和sz命令上傳下載檔案,就不需要通過xftp進行檔案操作了. sz 檔名: 將選定的檔案傳送(send)到本地

張明貴-Linux文件下載及sCRT配置批量管理功能

http ros 系統版本 uname tro 吸引 聯網 上傳 proc 【講課:互動,用提問的方式來吸引聽眾的註意力,聽眾吸收最大化】大學是在許昌學院讀的,在我看來,不幹念PPT的老師就是好講師,因為大部分任課老師自顧自講,沒有互動,傳授的知識我們只是被動的聽,沒有引導