1. 程式人生 > 其它 >Proftpd快速搭建FTP伺服器

Proftpd快速搭建FTP伺服器

Proftpd快速搭建FTP伺服器

前言

在Linux系統中,FTP伺服器軟體有很多,都已經成熟,像vsftpd, wu-ftp, Pure-FTPd等。但這些軟體安裝配置起來都比較麻煩,搭建個人的FTP伺服器,還是Proftpd比較簡單。

目錄

  1. Proftpd介紹
  2. Proftpd安裝
  3. Proftpd配置檔案
  4. Proftpd使用場景
  5. 客戶端訪問

1. Proftpd介紹

Proftpd是一款開放原始碼的FTP伺服器軟體,它是原來世界範圍使用最廣泛的wu-ftpd的改進版,它修正了wu-ftpd的許多缺陷,在許多方面進行了重大的改進,其中一個重要變化就是它學習了Apache的配置方式,使proftpd的配置和管理更加簡單易懂。

有兩種執行方式,獨立伺服器與超級伺服器的子伺服器。無論從安全性和穩定性,還是可配置性來說都是非常好的選擇。

官方網站:http://www.proftpd.org/

2. Proftpd安裝

系統環境

  • Linux Ubuntu 12.04.2 LTS 64bit server

安裝Proftpd

~ sudo apt-get install proftpd

<h

選擇“standalone”

檢視proftpd狀態

~ sudo /etc/init.d/proftpd status

ProFTPD is started in standalone mode, currently running.

~ ps -aux|grep ftp

proftpd 6674 0.0 0.1 94648 2092 ? Ss 16:05 0:00 proftpd: (accepting connections)

#啟動埠21

~ netstat -nltp|grep 21

tcp6 0 0 :::21 :::* LISTEN -

3. Proftpd配置檔案

配置檔案:/etc/proftpd/proftpd.conf

#配置伺服器名

ServerName ""blog.fens.me FTP Server"

#設定伺服器執行模式,獨立服務,或者被監管

ServerType standalone

#設定為預設伺服器

DefaultServer on

#設定伺服器程序執行使用的使用者

User proftpd

#設定伺服器程序執行使用的組

Group nogroup

#設定關閉IPv6支援

UseIPv6 off

#設定伺服器接受請求的埠

Port 21

#設定被動模式使用的埠範圍

PassivePorts 60000 65535

#設定使用者上傳檔案的許可權掩碼

Umask 022

#設定使用者被chroot鎖定到的各自的Home目錄

DefaultRoot /ftp

#關閉歡迎資訊顯示

DeferWelcome off

#如果顯示歡迎資訊,則指定顯示的檔案

DisplayLogin welcome.msg

#指定切換資料夾時,顯示的歡迎資訊

DisplayChdir .message

#設定日誌

SystemLog /var/log/proftp.log

TransferLog /var/log/proftp-transfer.log

#限定操作

<Limit SITE_CHMOD>

DenyAll

</Limit>

#設定匿名使用者資源

<Anonymous "/ftp/c">

...

</Anonymous>

#配置儲存目錄許可權

<Directory "/ftp/a/" >

<Limit ALL>

AllowUser x

AllowUser a1

DenyAll

</Limit>

<Limit CWD READ RETR DIRS>

AllowAll

</Limit>

</Directory>

Limit許可權說明:

  • CWD:Change Working Directory進入該目錄
  • MKD:Make Directory建立目錄
  • RNFR:Rename from更名
  • DELE:Delete刪除檔案
  • RMD:Remove Directory刪除目錄
  • READ: 可讀
  • WRITE: 可寫
  • STOR: 可上傳
  • RETR: 可下載
  • DIRS: 允許列出目錄
  • LOGIN: 允許登入
  • ALL: 全部

4. Proftpd使用場景

場景描述:某公司建立統一的FTP伺服器(/ftp),公司有a部門(/ftp/a),b兩個部門(/ftp/b),有獨立的儲存空間。

a1為a部門經理有對(/ftp/a)操作許可權,a2為a部門員工只能讀檔案。

b1為b部門經理有對(/ftp/b)操作許可權,b2為b部門員工只能讀檔案。

x為公司總經理,有對(/ftp)操作許可權。

操作許可權:

/ftp -- x所有操作

/ftp/a -- a1所有操作, a2只讀

/ftp/b -- b1所有操作, b2只讀

命令操作:

#建立FTP目錄

sudo mkdir /ftp

sudo mkdir /ftp/a

sudo mkdir /ftp/b

#建立使用者組

sudo groupadd a

sudo groupadd b

Ubuntu系統配置nologin,與其他Linux稍有不同

~ sudo vi /etc/shells

# /etc/shells: valid login shells

/bin/sh

/bin/dash

/bin/bash

/bin/rbash

/usr/bin/tmux

/usr/bin/screen

/usr/sbin/nologin

最後一行增加/usr/sbin/nologin

建立使用者並設定nologin,禁止FTP賬戶登陸

sudo useradd a1 -g a -s /usr/sbin/nologin

sudo useradd a2 -g a -s /usr/sbin/nologin

sudo useradd b1 -g b -s /usr/sbin/nologin

sudo useradd b2 -g b -s /usr/sbin/nologin

sudo useradd x -G a,b -s /usr/sbin/nologin

#設定賬戶密碼

echo -e "a1:123" | sudo chpasswd

echo -e "a2:123" | sudo chpasswd

echo -e "b1:123" | sudo chpasswd

echo -e "b2:123" | sudo chpasswd

echo -e "x:123" | sudo chpasswd

#設定目錄許可權

sudo chown x /ftp

sudo chown a1:a /ftp/a

sudo chmod 770 /ftp/a

sudo chmod g+s /ftp/a

sudo chown b1:b /ftp/b

sudo chmod 770 /ftp/b

sudo chmod g+s /ftp/b

修改配置檔案:/etc/proftpd/proftpd.conf

~ sudo vi /etc/proftpd/proftpd.conf

ServerName "blog.fens.me FTP Server"

ServerType standalone

DefaultServer on

Port 21

Umask 022

MaxInstances 30

User proftpd

Group nogroup

DefaultRoot /ftp

AllowOverwrite on

SystemLog /var/log/proftp.log

TransferLog /var/log/proftp-transfer.log

<Directory "/ftp/*">

<Limit CWD READ>

AllowAll

</Limit>

</Directory>

<Directory "/ftp/a/" >

<Limit ALL>

AllowUser x

AllowUser a1

DenyAll

</Limit>

<Limit CWD READ RETR DIRS>

AllowAll

</Limit>

</Directory>

<Directory "/ftp/b/" >

<Limit ALL>

AllowUser x

AllowUser b1

DenyAll

</Limit>

<Limit CWD READ RETR DIRS>

AllowAll

</Limit>

</Directory>

<Limit SITE_CHMOD>

DenyAll

</Limit>

重新伺服器

~ sudo /etc/init.d/proftpd restart

* Stopping ftp server proftpd [ OK ]

* Starting ftp server proftpd

5.客戶端訪問

客戶端命令列:Win7 64bit Command

模擬a1使用者登陸:

~ ftp

#建立連線

ftp> open 192.168.1.201

連線到192.168.1.201。

220 ProFTPD 1.3.4a Server (blog.fens.me FTP Server) [::ffff:192.168.1.201]

使用者(192.168.1.201:(none)): a1

331 Password required for a1

密碼:

230 User a1 logged in

#檢視目錄

ftp> dir

200 PORT command successful

150 Opening ASCII mode data connection for file list

drwxrws--- 2 a1 a 4096 Nov 3 12:59 a

drwxrws--- 2 b1 b 4096 Nov 3 12:25 b

226 Transfer complete

ftp:收到116位元組,用時0.00秒58.00千位元組/秒。

ftp> cd a

250 CWD command successful

ftp> pwd

257 "/a" is the current directory

ftp> dir

200 PORT command successful

150 Opening ASCII mode data connection for file list

-rw-r--r-- 1 a2 a 55723 Nov 3 12:56 36kryunjiasu.docx

-rw-r--r-- 1 a1 a 4 Nov 3 12:24 test.txt

226 Transfer complete

ftp:收到139位元組,用時0.00秒69.50千位元組/秒。

#上傳檔案

ftp> put c:\22.log

200 PORT command successful

150 Opening ASCII mode data connection for 22.log

226 Transfer complete

ftp:傳送120位元組,用時0.06秒2.18千位元組/秒。

#下載檔案

ftp> get test.txt

200 PORT command successful

150 Opening ASCII mode data connection for test.txt (4 bytes)

226 Transfer complete

ftp:收到5位元組,用時0.00秒5000.00千位元組/秒。

#嘗試訪問B目錄,出錯

ftp> cd ../b

550 ../b: No such file or directory

#退出

ftp> bye

221 Goodbye.

模擬a2使用者登陸:

~ ftp

#建立連線

ftp> open 192.168.1.201

連線到192.168.1.201。

220 ProFTPD 1.3.4a Server (blog.fens.me FTP Server) [::ffff:192.168.1.201]

使用者(192.168.1.201:(none)): a2

331 Password required for a2

密碼:

230 User a2 logged in

#檢視目錄

ftp> dir

200 PORT command successful

150 Opening ASCII mode data connection for file list

drwxrws--- 2 a1 a 4096 Nov 3 13:09 a

drwxrws--- 2 b1 b 4096 Nov 3 12:25 b

226 Transfer complete

ftp:收到116位元組,用時0.00秒116.00千位元組/秒。

#上傳檔案,出錯

ftp> put c:\11.log

200 PORT command successful

550 11.log: Operation not permitted

#下載檔案

ftp> get 22.log

200 PORT command successful

150 Opening ASCII mode data connection for 22.log (114 bytes)

226 Transfer complete

ftp:收到120位元組,用時0.00秒120000.00千位元組/秒。

用Proftpd我們快速建立了一個公司內部的FTP伺服器,比wu-ftpd要方便。