Proftpd快速搭建FTP服務器

前言linux

Linux系統中,FTP服務器軟件有不少,都已經成熟,像vsftpd, wu-ftp, Pure-FTPd等。但這些軟件安裝配置起來都比較麻煩,搭建我的的FTP服務器,仍是Proftpd比較簡單。shell

目錄安全

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

1. Proftpd介紹bash

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

有兩種運行方式,獨立服務器與超級服務器的子服務器。不管從安全性和穩定性,仍是可配置性來講都是很是好的選擇。tcp

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

2. Proftpd安裝網站

系統環境ui

  • Linux Ubuntu 12.04.2 LTS 64bit server

安裝Proftpdspa

~ sudo apt-get install proftpd

<hproftpd-install

選擇「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),有獨立的存儲空間。

a1a部門經理有對(/ftp/a)操做權限,a2a部門員工只能讀文件。

b1b部門經理有對(/ftp/b)操做權限,b2b部門員工只能讀文件。

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要方便。

轉載請註明出處:
http://blog.fens.me/linux-ftp-proftpd/

 



相關文章
相關標籤/搜索