1
|
root@ubuntu:~
# apt-get install proftpd
|
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:~
#
|
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
|
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
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
|
1
2
|
/usr/share/nginx/html
----lionftp可以读写,chenshuaiftp只读
/usr/share/nginx/html/a
----lionftp可以读写,chenshuaiftp可以读写
|
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
|
1
|
root@ubuntu:~
# chown lionftp /usr/share/nginx/html
|
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/
|
1
|
root@ubuntu:~
# service proftpd restart
|
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千字节/秒。
|
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
|
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/
|
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
|
1
|
root@ubuntu:~
# ftpasswd --passwd --file=/usr/share/proftpd/etc/passwd --name=ftpchenshuai --uid=3000 --home=/usr/local/nginx/html/a --shell=/bin/false
|
1
|
root@ubuntu:~
# ftpasswd --group --name=testgroup --gid=2014
|
1
|
root@ubuntu:~
# ftpasswd --group --name=testgroup --gid=2014 --member=ftpchenshuai
|
1
|
root@ubuntu:~
# chmod 777 -R /usr/local/nginx/html/a
|
1
|
root@ubuntu:~
# service proftpd restart
|
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.
|