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

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

 






免責聲明!

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



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