ubuntu12.04+proftpd1.3.4a的系統使用者+虛擬使用者許可權應用實踐

Lion發表於2014-08-09
目錄:
  一、什麼是Proftpd?
  二、Proftpd的官方網站在哪裡?
  三、在哪裡下載?
  四、如何安裝?
    1)系統使用者的配置+許可權控制
    2)虛擬使用者的配置+許可權控制
 
  一、什麼是Proftpd?
  ProFTPd是一套可配置性強的開放原始碼的FTP伺服器軟體,名稱最後的d字是因為在Linux中是用daemon來稱呼。ProFTPd與Apache的配置方式類似,因此十分容易配置和管理。
  專案開始時,Unix或類Unix平臺上 FTP Server十分有限,最常使用的恐怕就是wu-ftpd了。雖然wu-ftpd有著極佳的效能同時也是一套很好的軟體,然而它卻欠缺了許多Win32平臺上FTP Server的一些特色,同時wu-ftpd過去也有不少的安全漏洞陸續被發現。ProFTPD的原創者本身就曾經花非常多的時間尋找wu-ftpd 的漏洞加以改進並且增加許多功能。然而十分不幸的是,他很快地發現顯然wu-ftpd需要全部重新的改寫才能補足欠缺的設定能力以及缺乏的一些功能。
  除了wu-ftpd的,也有一些其他的FTP伺服器可被設計成重量輕,安全而犧牲的可配置性。例如,Troll FTP是一個很好的FTP程式,比wu-ftpd更為安全而且資源佔用更少。不幸的是,它是非常適合於基本的FTP服務,但不適合需要更復雜功能的FTP站點. 
  ProFTPD不是由其它FTP Server的原始碼修改而產生的,相反的,它是完全獨立而完整、重新改寫的FTP Server。許多著名的,訪問量大的網站使用ProFTPD的。ProFTPD有兩種執行方式,獨立伺服器與超級伺服器的子伺服器。無論從安全性和穩定性,還是可配置性來說都是非常好的選擇。
 
  二、Proftpd的官方網站在哪裡?
 
  三、在哪裡下載?
 
  四、如何安裝?
  標題中介紹了我的系統是ubuntu12.04,所以就直接使用apt-get的方式安裝了,安裝過程中會彈出個視窗讓你選擇執行模式,這裡我們選擇的是“standalone”
1
root@ubuntu:~# apt-get install proftpd
 
  安裝後,proftpd會自動啟動,可以檢視下程式是否存在"ps -aux|grep ftp"或用"netstat -tulpn | grep :21"檢視下ftp的預設21埠是否有內容
1
2
3
4
5
6
7
root@ubuntu:~# ps -aux|grep ftp
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
proftpd  18912  0.0  0.0  93376  2204 ?        Ss   11:10   0:00 proftpd: (accepting connections)             
root     18942  0.0  0.0   8112   940 pts/1    S+   12:06   0:00 grep --color=auto ftp
root@ubuntu:~# netstat -tulpn | grep :21
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      18912/proftpd: (acc
root@ubuntu:~#
  proftpd基本配置說明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
關閉IPv6支援
UseIPv6                         off
 
# 禁用反向域名解析
UseReverseDNS      off
 
#支援的編碼格式
UseEncoding UTF-8 GBK
 
# 不顯示伺服器相關資訊, 如proftpd版本
ServerIdent          off
 
#查詢客戶的遠端使用者名稱,關掉節省連線時間
IdentLookups                    off
 
#配置伺服器名
ServerName                      "idoall.org FTP server"
 
#設定伺服器執行模式,獨立服務,或者被監管
ServerType                      standalone
 
#關閉歡迎資訊顯示
DeferWelcome                    on
 
#如果顯示歡迎資訊,則指定顯示的檔案
DisplayLogin /usr/share/proftpd/etc/ftplogin.msg
 
#指定切換資料夾時,顯示的歡迎資訊
DisplayChdir            .message
 
 
#FTP安全擴充套件
MultilineRFC2228                on
 
#設定為預設伺服器
DefaultServer                   on
 
#不顯示連結檔案的目標檔案DefaultRoot
ShowSymlinks                    off
 
#允許root使用者登入,預設是不允許的,安全起見不推薦此選項。
RootLogin off 
 
#登陸後允許IDLE的時間
TimeoutNoTransfer               600
 
#連線超時的時間
TimeoutStalled                  600
 
#客戶端idle時間設定,預設就是600秒
TimeoutIdle                     600
 
#顯示時顯示詳細資訊
ListOptions                     "-l"
 
#阻止帶.的命令
DenyFilter                      \*.*/
  
# 限制lionftp使用者上傳的速率限制在150Kbytes/s
TransferRate STOR 150 user lionftp
 
# 限制lionftp使用者下載的速率限制在100Kbytes/s
TransferRate RETR 100 user lionftp
 
#埠號 
Port                            21
 
# 顯示以MB為單位
QuotaDisplayUnits Mb
  
#設定被動模式使用的埠範圍
PassivePorts                  60000 65535
  
#FTP SERVER最大連線數
MaxInstances                    30
  
#設定伺服器程式執行使用的使用者
User                            proftpd
 
#設定伺服器程式執行使用的組
Group                           nogroup
 
#設定使用者上傳檔案的許可權掩碼
Umask                           022  022
 
#設定使用者被chroot鎖定到的各自的Home目錄
DefaultRoot     /usr/local/nginx/html
 
# 允許覆蓋檔案
AllowOverwrite                  on
 
#遮蔽伺服器版本資訊
ServerIdent off 
 
 #上傳時,允許斷點續傳
AllowStoreRestart on 
 
#下載時,允許斷點續傳
AllowRetrieveRestart on 
 
#每個帳戶最多允許來源ip為1個
MaxHostsPerUser 10 
 
#每個帳戶在每個客戶端最多可以同時登陸1次,可以防止多執行緒軟體下載對伺服器的破壞
MaxClientsPerUser 10
 
#同一個客戶端只能最多1個帳號可以登陸
MaxClientsPerHost 10
 
#是否要把ftp記錄在日誌中,如果不想可以設定成off遮蔽掉log日誌。
WtmpLog on
 
#設定日誌
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
  Limit許可權說明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CMD : Change Working Directory 改變目錄
MKD : MaKe Directory 建立目錄的許可權
RNFR : ReName FRom 更改目錄名的許可權
DELE : DELEte 刪除檔案的許可權
RMD : ReMove Directory 刪除目錄的許可權
RETR : RETRieve 從服務端下載到客戶端的許可權
STOR : STORe 從客戶端上傳到服務端的許可權
READ :可讀的許可權,不包括列目錄的許可權,相當於 RETR , STAT 等
WRITE :寫檔案或者目錄的許可權,包括 MKD 和 RMD
DIRS :是否允許列目錄,相當於 LIST , NLST 等許可權,還是比較實用的
ALL :所有許可權
LOGIN :是否允許登陸的許可權
 
#limit 中對使用者和群組的控制
AllowUser 針對某個使用者允許的 Limit
DenyUser 針對某個使用者禁止的 Limit
AllowGroup 針對某個使用者組允許的 Limit
DenyGroup 針對某個使用者組禁止的 Limit
AllowAll 針對所有使用者組允許的 Limit
DenyAll 針對所有使用者禁止的 Limit
 
  關於歡迎檔案的設定包含如下引數:
1
2
3
4
5
6
7
8
9
10
11
12
%T 目前的時間
%F 所在硬碟剩下的容量
%C 目前所在的目錄
%R Client 端的主機名稱
%L Server 端的主機名稱
%U 使用者帳戶名稱
%M 最大允許連線人數
%N 目前的伺服器連線人數
%E FTP伺服器管理員的 email
%i 本次上傳的檔案數量
%o 本次下載的檔案數量
%t 本次上傳+下載的檔案數量
  知道這些引數,我們就可以寫出一個友好的歡迎語:
1
2
3
4
5
6
7
root@ubuntu:~# vi /usr/share/proftpd/etc/ftplogin.msg
歡迎您%U, 這是idoall的測試FTP伺服器;
目前時間是:%T;
本伺服器最多允許%M個使用者連線數;
目前伺服器上已有%N個使用者連線數;
目前你所在的目錄是%C;
目錄所在的硬碟還剩下%F位元組。
    1)系統使用者的配置+許可權控制
      a)Ubuntu系統配置nologin,與其他Linux稍有不同,最後一行增加/usr/sbin/nologin
1
2
3
4
5
6
7
8
9
root@ubuntu:~# 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
      b)使用者操作許可權說明
1
2
/usr/share/nginx/html    ----lionftp可以讀寫,chenshuaiftp只讀
/usr/share/nginx/html/a    ----lionftp可以讀寫,chenshuaiftp可以讀寫
      c)先建立一個ftp使用者組,再建立兩個測試使用者lionftp和chenshuaiftp,並且禁止ftp使用者使用終端登入,將使用者lionftp和chenshuaiftp加入到ftp使用者組中
1
2
3
4
5
6
7
8
9
10
11
root@ubuntu:~# groupadd ftp
root@ubuntu:~# useradd lionftp -g ftp -s /usr/sbin/nologin
root@ubuntu:~# useradd chenshuaiftp -g ftp -s /usr/sbin/nologin
root@ubuntu:~# passwd lionftp
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ubuntu:~# passwd chenshuaiftp
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
      d)設定目錄使用者許可權
1
root@ubuntu:~# chown lionftp /usr/share/nginx/html
      e)修改proftpd的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
root@ubuntu:~# vi /etc/proftpd/proftpd.conf
# If set on you can experience a longer connection delay in many cases.
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
  
# Includes DSO modules
Include /etc/proftpd/modules.conf
  
關閉IPv6支援
UseIPv6                         off
 
# 禁用反向域名解析
UseReverseDNS      off
 
#支援的編碼格式
UseEncoding UTF-8 GBK
 
# 不顯示伺服器相關資訊, 如proftpd版本
ServerIdent          off
 
#查詢客戶的遠端使用者名稱,關掉節省連線時間
IdentLookups                    off
 
#配置伺服器名
ServerName                      "idoall.org FTP server"
 
#設定伺服器執行模式,獨立服務,或者被監管
ServerType                      standalone
 
#關閉歡迎資訊顯示
DeferWelcome                    on
 
#如果顯示歡迎資訊,則指定顯示的檔案
DisplayLogin /usr/share/proftpd/etc/ftplogin.msg
 
#指定切換資料夾時,顯示的歡迎資訊
DisplayChdir            .message
 
 
#FTP安全擴充套件
MultilineRFC2228                on
 
#設定為預設伺服器
DefaultServer                   on
 
#不顯示連結檔案的目標檔案DefaultRoot
ShowSymlinks                    off
 
#允許root使用者登入,預設是不允許的,安全起見不推薦此選項。
RootLogin off 
 
#登陸後允許IDLE的時間
TimeoutNoTransfer               600
 
#連線超時的時間
TimeoutStalled                  600
 
#客戶端idle時間設定,預設就是600秒
TimeoutIdle                     600
 
#顯示時顯示詳細資訊
ListOptions                     "-l"
 
#阻止帶.的命令
DenyFilter                      \*.*/
  
# 限制lionftp使用者上傳的速率限制在150Kbytes/s
TransferRate STOR 150 user lionftp
 
# 限制lionftp使用者下載的速率限制在100Kbytes/s
TransferRate RETR 100 user lionftp
 
#埠號 
Port                            21
 
# 顯示以MB為單位
QuotaDisplayUnits Mb
  
#設定被動模式使用的埠範圍
PassivePorts                  60000 65535
  
#FTP SERVER最大連線數
MaxInstances                    30
  
#設定伺服器程式執行使用的使用者
User                            proftpd
 
#設定伺服器程式執行使用的組
Group                           nogroup
 
#設定使用者上傳檔案的許可權掩碼
Umask                           022  022
 
#設定使用者被chroot鎖定到的各自的Home目錄
DefaultRoot     /usr/local/nginx/html
 
# 允許覆蓋檔案
AllowOverwrite                  on
 
#遮蔽伺服器版本資訊
ServerIdent off 
 
 #上傳時,允許斷點續傳
AllowStoreRestart on 
 
#下載時,允許斷點續傳
AllowRetrieveRestart on 
 
#每個帳戶最多允許來源ip為1個
MaxHostsPerUser 10 
 
#每個帳戶在每個客戶端最多可以同時登陸1次,可以防止多執行緒軟體下載對伺服器的破壞
MaxClientsPerUser 10
 
#同一個客戶端只能最多1個帳號可以登陸
MaxClientsPerHost 10
 
#是否要把ftp記錄在日誌中,如果不想可以設定成off遮蔽掉log日誌。
WtmpLog on
 
#設定日誌
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
 
<Directory "/usr/local/nginx/html/*">
        <Limit ALL>
                AllowUser lionftp
        DenyAll
        </Limit>
    <Limit CWD READ DIRS>
        AllowAll
    </Limit>
</Directory>
 
<Directory "/usr/local/nginx/html/a/*" >
    <Limit ALL>
        AllowUser lionftp
        AllowUser chenshuaiftp
        DenyAll
    </Limit>
    <Limit CWD READ DIRS>
        AllowAll
    </Limit>
</Directory>
 
#不允許任何人執行chmod命令(SITE_CHMOD)
<Limit SITE_CHMOD>
        DenyAll
</Limit>
 
  
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
  
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
  
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
 
  
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
 
Include /etc/proftpd/conf.d/
 
      f)重啟ftp伺服器
1
root@ubuntu:~# service proftpd restart
      g)在windows上測試連線
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
C:\Users\Administrator>ftp
ftp> open 192.168.1.100
連線到 192.168.1.100。
220 192.168.1.100 FTP server ready
使用者(192.168.1.100:(none)): chenshuaiftp
331 Password required for chenshuaiftp
密碼:
230-歡迎您chenshuaiftp,這是idoall的測試FTP伺服器;
230-   目前時間是:Sat Aug 09 03:22:02 2014;
230-   本伺服器最多允許0個使用者連線數;
230-   目前伺服器上已有2個使用者連線數;
230-   目前你所在的目錄是/;
230-   目錄所在的硬碟還剩下0位元組。
230 User chenshuaiftp logged in
ftp> dir
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 root     root          537 Aug  6 06:38 50x.html
drwxrwxrwx  19 root     root         4096 Jun 17 05:49 xxx
drwxrwxrwx   7 root     root         4096 Aug  9 01:19 aaaa
226 Transfer complete
ftp: 收到 201 位元組,用時 0.01秒 13.40千位元組/秒。
    2)虛擬使用者的配置+許可權控制
      a)修改配置檔案,在剛才的配置檔案中增加以下配置,同時在“/usr/local/nginx/html/a/*”許可權部分增加一個使用者,後面我們用這個虛擬使用者“ftpchenshuai”來測試
1
2
3
4
5
6
# 不要求有合法shell,直接效果是允許nologin使用者和虛擬使用者登入
RequireValidShell off
# AuthOrder指定了許可權檢查的順序。這裡只使用虛擬使用者
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/share/proftpd/etc/passwd
AuthGroupFile /usr/share/proftpd/etc/group
      修改後的proftpd的全部配置檔案內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
root@ubuntu:~# vi /etc/proftpd/proftpd.conf
# If set on you can experience a longer connection delay in many cases.
#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes, reload proftpd after modifications, if
# it runs in daemon mode. It is not required in inetd/xinetd mode.
  
# Includes DSO modules
Include /etc/proftpd/modules.conf
  
關閉IPv6支援
UseIPv6                         off
 
# 禁用反向域名解析
UseReverseDNS      off
 
#支援的編碼格式
UseEncoding UTF-8 GBK
 
# 不顯示伺服器相關資訊, 如proftpd版本
ServerIdent          off
 
#查詢客戶的遠端使用者名稱,關掉節省連線時間
IdentLookups                    off
 
#配置伺服器名
ServerName                      "idoall.org FTP server"
 
#設定伺服器執行模式,獨立服務,或者被監管
ServerType                      standalone
 
#關閉歡迎資訊顯示
DeferWelcome                    on
 
#如果顯示歡迎資訊,則指定顯示的檔案
DisplayLogin /usr/share/proftpd/etc/ftplogin.msg
 
#指定切換資料夾時,顯示的歡迎資訊
DisplayChdir            .message
 
 
#FTP安全擴充套件
MultilineRFC2228                on
 
#設定為預設伺服器
DefaultServer                   on
 
#不顯示連結檔案的目標檔案DefaultRoot
ShowSymlinks                    off
 
#允許root使用者登入,預設是不允許的,安全起見不推薦此選項。
RootLogin off 
 
#登陸後允許IDLE的時間
TimeoutNoTransfer               600
 
#連線超時的時間
TimeoutStalled                  600
 
#客戶端idle時間設定,預設就是600秒
TimeoutIdle                     600
 
#顯示時顯示詳細資訊
ListOptions                     "-l"
 
#阻止帶.的命令
DenyFilter                      \*.*/
  
# 限制lionftp使用者上傳的速率限制在150Kbytes/s
TransferRate STOR 150 user lionftp
 
# 限制lionftp使用者下載的速率限制在100Kbytes/s
TransferRate RETR 100 user lionftp
 
#埠號 
Port                            21
 
# 顯示以MB為單位
QuotaDisplayUnits Mb
  
#設定被動模式使用的埠範圍
PassivePorts                  60000 65535
  
#FTP SERVER最大連線數
MaxInstances                    30
  
#設定伺服器程式執行使用的使用者
User                            proftpd
 
#設定伺服器程式執行使用的組
Group                           nogroup
 
#設定使用者上傳檔案的許可權掩碼
Umask                           022  022
 
#設定使用者被chroot鎖定到的各自的Home目錄
DefaultRoot     /usr/local/nginx/html
 
# 允許覆蓋檔案
AllowOverwrite                  on
 
#遮蔽伺服器版本資訊
ServerIdent off 
 
 #上傳時,允許斷點續傳
AllowStoreRestart on 
 
#下載時,允許斷點續傳
AllowRetrieveRestart on 
 
#每個帳戶最多允許來源ip為1個
MaxHostsPerUser 10 
 
#每個帳戶在每個客戶端最多可以同時登陸1次,可以防止多執行緒軟體下載對伺服器的破壞
MaxClientsPerUser 10
 
#同一個客戶端只能最多1個帳號可以登陸
MaxClientsPerHost 10
 
#是否要把ftp記錄在日誌中,如果不想可以設定成off遮蔽掉log日誌。
WtmpLog on
 
#設定日誌
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
 
# 不要求有合法shell,直接效果是允許nologin使用者和虛擬使用者登入
RequireValidShell off
# AuthOrder指定了許可權檢查的順序。這裡只使用虛擬使用者
AuthOrder mod_auth_file.c mod_auth_unix.c
AuthUserFile /usr/share/proftpd/etc/passwd
AuthGroupFile /usr/share/proftpd/etc/group
  
<Directory "/usr/local/nginx/html/*">
        <Limit ALL>
                AllowUser lionftp
        DenyAll
        </Limit>
    <Limit CWD READ DIRS>
        AllowAll
    </Limit>
</Directory>
 
<Directory "/usr/local/nginx/html/a/*" >
    <Limit ALL>
        AllowUser lionftp
        AllowUser chenshuaiftp
        AllowUser ftpchenshuai
        DenyAll
    </Limit>
    <Limit CWD READ DIRS>
        AllowAll
    </Limit>
</Directory>
 
#不允許任何人執行chmod命令(SITE_CHMOD)
<Limit SITE_CHMOD>
        DenyAll
</Limit>
 
  
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
  
<IfModule mod_ratio.c>
Ratios off
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
  
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
 
  
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
 
Include /etc/proftpd/conf.d/
      b)配置檔案中的虛擬使用者和使用者組的檔案如果不存在,先建立:
1
2
3
root@ubuntu:~# mkdir -p /usr/share/proftpd/etc/
root@ubuntu:~# touch /usr/share/proftpd/etc/passwd
root@ubuntu:~# touch /usr/share/proftpd/etc/group
      c)建立一個虛擬使用者ftpchenshuai,並指定目錄
1
root@ubuntu:~# ftpasswd --passwd --file=/usr/share/proftpd/etc/passwd --name=ftpchenshuai --uid=3000 --home=/usr/local/nginx/html/a --shell=/bin/false
      –passwd 指定建立一個新的虛擬使用者,–group則建立一個虛擬組;
      –file 指定儲存虛擬使用者的檔案;
      –name 指定此虛擬使用者的使用者名稱,密碼會在命令執行時要求輸入;
      –uid 指定此虛擬使用者對應的系統使用者UID,此虛擬使用者將以此係統UID的身份讀寫檔案
      –home 指定此虛擬使用者的根目錄,就是其登陸FTP後的根目錄;
      –shell 指定此虛擬使用者的shell,為了安全當然指定一個不可登陸的shell了
 
      d)新建一個虛擬使用者組
1
root@ubuntu:~# ftpasswd --group --name=testgroup --gid=2014
      e)將虛擬使用者新增到虛擬使用者組
1
root@ubuntu:~# ftpasswd --group --name=testgroup --gid=2014 --member=ftpchenshuai
      f)如果使用者登入後,沒有寫許可權,要使用以下命令增加
1
root@ubuntu:~# chmod 777 -R /usr/local/nginx/html/a
      g)重啟ftp伺服器
1
root@ubuntu:~# service proftpd restart
      h)在windows上測試連線
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
C:\Users\Administrator>ftp
ftp> open 192.168.1.100
連線到 192.168.1.100。
220 192.168.1.100 FTP server ready
使用者(192.168.1.100:(none)): ftpchenshuai
331 Password required for ftpchenshuai
密碼:
230-歡迎您ftpchenshuai,這是idoall的測試FTP伺服器;
230-   目前時間是:Sat Aug 09 03:30:53 2014;
230-   本伺服器最多允許0個使用者連線數;
230-   目前伺服器上已有2個使用者連線數;
230-   目前你所在的目錄是/a;
230-   目錄所在的硬碟還剩下0位元組。
230 User ftpchenshuai logged in
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 ftpchenshuai 3000      1870666 Aug  9 02:13 xxx.apk
226 Transfer complete
ftp: 收到 88 位元組,用時 0.01秒 5.87千位元組/秒。
ftp> put c:\a.txt
200 PORT command successful
150 Opening ASCII mode data connection for a.txt
226 Transfer complete
ftp: 傳送 1 位元組,用時 0.06秒 0.02千位元組/秒。
ftp> dir
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 ftpchenshuai 3000            1 Aug  9 03:33 a.txt
-rw-r--r--   1 ftpchenshuai 3000      1870666 Aug  9 02:13 xxx.apk
226 Transfer complete
ftp: 收到 154 位元組,用時 0.01秒 22.00千位元組/秒。
ftp> bye
221 Goodbye.
  之前也嘗試過vsftpd等FTP,最後感覺還是Proftpd配置簡單比較方便一些。
 
---------------------------------------
博文作者:迦壹
轉載宣告:可以轉載, 但必須以超連結形式標明文章原始出處和作者資訊及版權宣告,謝謝合作!
---------------------------------------

相關文章