Proftpd快速搭建FTP伺服器
Proftpd快速搭建FTP伺服器
前言
在Linux系統中,FTP伺服器軟體有很多,都已經成熟,像vsftpd, wu-ftp, Pure-FTPd等。但這些軟體安裝配置起來都比較麻煩,搭建個人的FTP伺服器,還是Proftpd比較簡單。
目錄
- Proftpd介紹
- Proftpd安裝
- Proftpd配置檔案
- Proftpd使用場景
- 客戶端訪問
1. Proftpd介紹
Proftpd是一款開放原始碼的FTP伺服器軟體,它是原來世界範圍使用最廣泛的wu-ftpd的改進版,它修正了wu-ftpd的許多缺陷,在許多方面進行了重大的改進,其中一個重要變化就是它學習了Apache的配置方式,使proftpd的配置和管理更加簡單易懂。
有兩種執行方式,獨立伺服器與超級伺服器的子伺服器。無論從安全性和穩定性,還是可配置性來說都是非常好的選擇。
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要方便。