ubuntu12.04+proftpd1.3.4a的系统用户+虚拟用户权限应用实践,ubuntu12.04
目录:
一、什么是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的官方网站在哪里?
http://www.proftpd.org/
三、在哪里下载?
http://www.proftpd.org/md5_pgp.html
四、如何安装?
标题中介绍了我的系统是ubuntu12.04,所以就直接使用apt-get的方式安装了,安装过程中会弹出个窗口让你选择运行模式,这里我们选择的是“standalone”
?
安装后,proftpd会自动启动,可以查看下进程是否存在"ps -aux|grep ftp"或用"netstat -tulpn | grep :21"查看下ftp的默认21端口是否有内容
?
1
2
3
4
5
6
7
|
root@ubuntu:~
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:~
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
ServerIdent off
IdentLookups off
ServerName "idoall.org FTP server"
ServerType standalone
DeferWelcome on
DisplayLogin /usr/share/proftpd/etc/ftplogin .msg
DisplayChdir .message
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
RootLogin off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 600
ListOptions "-l"
DenyFilter \*.*/
TransferRate STOR 150 user lionftp
TransferRate RETR 100 user lionftp
Port 21
QuotaDisplayUnits Mb
PassivePorts 60000 65535
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
DefaultRoot /usr/local/nginx/html
AllowOverwrite on
ServerIdent off
AllowStoreRestart on
AllowRetrieveRestart on
MaxHostsPerUser 10
MaxClientsPerUser 10
MaxClientsPerHost 10
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 :是否允许登陆的权限
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:~
欢迎您%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:~
/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:~
root@ubuntu:~
root@ubuntu:~
root@ubuntu:~
Enter new UNIX password:
Retype new UNIX password:
passwd : password updated successfully
root@ubuntu:~
Enter new UNIX password:
Retype new UNIX password:
passwd : password updated successfully
|
d)设置目录用户权限
?
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:~
Include /etc/proftpd/modules .conf
关闭IPv6支持
UseIPv6 off
UseReverseDNS off
UseEncoding UTF-8 GBK
ServerIdent off
IdentLookups off
ServerName "idoall.org FTP server"
ServerType standalone
DeferWelcome on
DisplayLogin /usr/share/proftpd/etc/ftplogin .msg
DisplayChdir .message
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
RootLogin off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 600
ListOptions "-l"
DenyFilter \*.*/
TransferRate STOR 150 user lionftp
TransferRate RETR 100 user lionftp
Port 21
QuotaDisplayUnits Mb
PassivePorts 60000 65535
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
DefaultRoot /usr/local/nginx/html
AllowOverwrite on
ServerIdent off
AllowStoreRestart on
AllowRetrieveRestart on
MaxHostsPerUser 10
MaxClientsPerUser 10
MaxClientsPerHost 10
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 >
<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 >
<IfModule mod_dynmasq.c>
< /IfModule >
Include /etc/proftpd/conf .d/
|
f)重启ftp服务器
?
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
|
RequireValidShell off
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:~
Include /etc/proftpd/modules .conf
关闭IPv6支持
UseIPv6 off
UseReverseDNS off
UseEncoding UTF-8 GBK
ServerIdent off
IdentLookups off
ServerName "idoall.org FTP server"
ServerType standalone
DeferWelcome on
DisplayLogin /usr/share/proftpd/etc/ftplogin .msg
DisplayChdir .message
MultilineRFC2228 on
DefaultServer on
ShowSymlinks off
RootLogin off
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 600
ListOptions "-l"
DenyFilter \*.*/
TransferRate STOR 150 user lionftp
TransferRate RETR 100 user lionftp
Port 21
QuotaDisplayUnits Mb
PassivePorts 60000 65535
MaxInstances 30
User proftpd
Group nogroup
Umask 022 022
DefaultRoot /usr/local/nginx/html
AllowOverwrite on
ServerIdent off
AllowStoreRestart on
AllowRetrieveRestart on
MaxHostsPerUser 10
MaxClientsPerUser 10
MaxClientsPerHost 10
WtmpLog on
TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd .log
RequireValidShell off
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 >
<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 >
<IfModule mod_dynmasq.c>
< /IfModule >
Include /etc/proftpd/conf .d/
|
b)配置文件中的虚拟用户和用户组的文件如果不存在,先创建:
?
1
2
3
|
root@ubuntu:~
root@ubuntu:~
root@ubuntu:~
|
c)创建一个虚拟用户ftpchenshuai,并指定目录
?
–passwd 指定建立一个新的虚拟用户,–group则建立一个虚拟组;
–file 指定存储虚拟用户的文件;
–name 指定此虚拟用户的用户名,密码会在命令执行时要求输入;
–uid 指定此虚拟用户对应的系统用户UID,此虚拟用户将以此系统UID的身份读写文件
–home 指定此虚拟用户的根目录,就是其登陆FTP后的根目录;
–shell 指定此虚拟用户的shell,为了安全当然指定一个不可登陆的shell了。
d)新建一个虚拟用户组
?
e)将虚拟用户添加到虚拟用户组
?
f)如果用户登录后,没有写权限,要使用以下命令增加
?
g)重启ftp服务器
?
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配置简单比较方便一些。
---------------------------------------
博文作者:迦壹
博客地址:http://idoall.org/home.php?mod=space&uid=1&do=blog&id=549
转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作!
---------------------------------------
你这个问题很奇怪呀,这个估计是不能的吧,每个管理员只要有sudo 的密码,就基本所有权都有了,你的限制就没又意义了,要限制就把管理员设置为普通用户
百度一吧,关于用户管理有一大段内容.
一般,我们需要知道,平时登录的时候我们是以管理员登录的,但是不具备某些权限,例如安装软件.所以命令中经常要带sudo; 如果你想以超级管理员登录,那么你得先为它设置密码,具体忘了,但是在终端可以很容易切换到超级管理员的角色,命令:
su
即可,如果要切换回来,命令:
su 你的用户名
这样就可以了
评论暂时关闭