ProFTPD部署指南
服务器环境:RHEL5.4
下载ProFTP:
# wget ftp://ftp1.hk.proftpd.org/proftpd/distrib/source/proftpd-1.3.4a.tar.bz2
1.FTP要求:
公司四个部门:运维部、开发部、销售部、行政部
各部门用户访问FTP后可以看到所有目录,仅可以访问本部门的目录
需要FTP日志功能
FTP认证方式基于文件认证方式
共享目录:/var/ftp
2.解压文件:
# tar -xjf proftpd-1.3.4a.tar.bz2 -C /usr/src/
# cd /usr/src/proftpd-1.3.4a/
安装前请先阅读INSTALL与README文件
3.安装ProFTPD:
#./configure --help 查看帮助选项
######################################################################################
以下为部分选项说明:
--prefix=PREFIX
指定安装路径(--prefix=/usr/local/)
--sysconfdir=DIR 指定FTP服务配置文件路径(--sysconfdir=/etc)
--localstatedir=DIR 指定运行状态的文件存放位置(默认/var/proftpd)
--with-modules=mod_ldap
指定加载功能模块
--enable-memcache 支持缓存功能
--enable-nls 支持多语言环境(如中文),安装完成后在主配置文件中需要指定字符编码(UseEncoding UTF-8 CP936)
--enable-openssl 支持TLS加密FTP服务
--enable-shadow
支持使用/etc/shadow验证用户密码
######################################################################################################
注:需要GCC编译器
#./configure --prefix=/usr/local/proftpd --sysconfdir=/etc/ --enable-nls --enable-openssl --enable-shadow
#make
#make install
#PATH=echo$PATH:/usr/local/proftpd/bin
添加环境变量
#useradd -M -s /sbin/nologin proftp
创建启动用户及组(该用户无法登录系统,没有宿主目录)
4.建立共享目录,修改配置文件:
#mkdir -p /var/ftp/{运维部,开发部,销售部,行政部}
#useradd -M -s /sbin/nologin yunwei
#useradd -M -s /sbin/nologin kaifa
#useradd -M -s /sbin/nologin xiaoshou
#useradd -M -s /sbin/nologin xingzheng
#chmod 777 /var/ftp/运维部
#chmod 777 /var/ftp/开发部
#chmod 777 /var/ftp/销售部
#chmod 777 /var/ftp/行政部
#vim /etc/proftpd.conf 以下为配置文件原文(行号仅为参考值)
******************************************************************************************************
1
# This is a basic ProFTPD configuration file (rename it to
2
# 'proftpd.conf' for actual use. It establishes a single server
3
# and a single anonymous login. It assumes that you have a user/group
4
# "nobody" and "ftp" for normal operation and anon.
5
6
ServerName
"ProFTPD Default Installation"
客户端连接后显示的字符
7
ServerType
standalone
服务启动模式
8
DefaultServer
on
9
10
# Port 21 is the standard FTP port.
11
Port
21
端口
12
13
# Don't use IPv6 support by default.
14
UseIPv6
off
禁用IPv6
15
16
# Umask 022 is a good standard umask to prevent new dirs and files
17
# from being group and world writable.
18
Umask
022 权限掩码
19
20
# To prevent DoS attacks, set the maximum number of child processes
21
# to 30. If you need to allow more than 30 concurrent connections
22
# at once, simply increase this value. Note that this ONLY works
23
# in standalone mode, in inetd mode you should use an inetd server
24
# that allows you to limit maximum number of processes per service
25
# (such as xinetd).
26
MaxInstances
30 并发进程30个(防DoS攻击)
27
28
# Set the user and group under which the server will run.
29
User
nobody 启动服务的用户
30
Group
nobody 启动服务的组
31
32
# To cause every FTP user to be "jailed" (chrooted) into their home
33
# directory, uncomment this line.
34
#DefaultRoot ~
共享根目录(默认为用户家目录)
35
36
# Normally, we want files to be overwriteable.
37
AllowOverwrite
on
是否允许使用文件覆写权限
38
39
# Bar use of SITE CHMOD by default
40
<Limit SITE_CHMOD>
权限设置
41
DenyAll
42
</Limit>
43
44
# A basic anonymous configuration, no upload directories. If you do not
45
# want anonymous users, simply delete this entire <Anonymous> section.
46
<Anonymous ~ftp>
47
User
ftp
48
Group
ftp
49
50
# We want clients to be able to login with "anonymous" as well as "ftp"
51
UserAlias
anonymous ftp
用户别名
52
53
# Limit the maximum number of anonymous logins
54
MaxClients
10
最大客户端连接数
55
56
# We want 'welcome.msg' displayed at login, and '.message' displayed
57
# in each newly chdired directory.
58
DisplayLogin
welcome.msg
显示登录信息
59
DisplayChdir
.message
60
61
# Limit WRITE everywhere in the anonymous chroot
62
<Limit WRITE>
权限设置
63
DenyAll
64
</Limit>
65
</Anonymous>
******************************************************************************************************
该文件格式:
##########################################################################
# 全局设置
参数值 #
# 全局设置
参数值 #
# #
# <Directory "路径">
指定路径相关设置,可以使用Limit语法限制目录权限 #
# ... ... #
#
... ... #
# </Directory> #
#
#
# #
#
#
# <anonymouse "路径">
匿名共享路径相关设置(包括权限设置) #
# </anonymouse>
#
##########################################################################
Limit权限说明:
#########################################################################
#
CWD : Change Working Directory
进入该目录
#
#
MKD : Make Directory
创建目录
#
#
RNFR : Rename from
更名
#
#
DELE : Delete
删除文件
#
#
RMD : Remove Directory
删除目录
#
#
READ :
可读
#
#
WRITE:
可写
#
#
STOR :
可上传
#
#
RETR :
可下载
#
#
DIRS :
允许列出目录
#
#
LOGIN:
允许登录
#
#
ALL :
全部
#
#########################################################################
修改后有效的配置文件内容,部分内容为添加内容(#开始的部分为注释):
6
ServerName
"ProFTPD Default Installation"
7
ServerType
standalone
8
DefaultServer
on
9 UseEncoding UTF-8 CP936
支持的编码格式(中文)
11
Port
21
12 AllowRetrieveRestart
on 允许断点继传(上传)
13 AllowStoreRestart
on 允许断点继传(下载)
14
UseIPv6
off
18
Umask
022
19 RootLogin
off
禁止root登录ftp
26
MaxInstances
30
27 SystemLog
/var/log/proftp.log
产生独立的日志文件
28
TransferLog
/var/log/proftp.log
记录用户下载的日志信息
#####如果想指定自己的日志格式可以结合(ExtendLog,LogFormat)两个选项设置
29
User
proftp
设置启动用户为proftp
30
Group
proftp
设置启动组为proftp
34
DefaultRoot /var/ftp
指定共享根目录为/var/ftp
37
AllowOverwrite
on
46
#<Anonymous ~ftp>
该部分全部#注释,取消匿名访问功能
47
# User
ftp
48
# Group
ftp
51
# UserAlias
anonymous ftp
54
# MaxClients
10
58
# DisplayLogin
welcome.msg
59
# DisplayChdir
.message
62
# <Limit WRITE>
63
# DenyAll
64
# </Limit>
65
#</Anonymous>
以下内容为设置权限,为手动添加内容
所有用户可以看到所有部门的文件夹,仅可以访问自己部门的目录
*****************************************************************************************************
67 RequireValidShell off
用户登录是否需要shell(对虚拟用户很重要)
68 AuthUserFile /usr/local/proftpd/ftpd.passwd
通过文件认证用户登录,需要ftpasswd命令创建该文件
69
<Directory "/var/ftp/*">
70
<Limit CWD READ>
允许所有人可以查看根目录
71
AllowAll
72
</Limit>
73
</Directory>
74
<Directory "/var/ftp/运维部">
75
<Limit CWD MKD RNFR READ WRITE STOR RETR>
76
DenyAll
拒绝所有人往该目录下执行Limit后的操作指令
77
</Limit>
78
<Limit DELE>
79
DenyAll
禁止任何人在该目录下删除文件
80
</Limit>
81
<Limit CWD MKD RNFR READ WRITE STOR RETR>
82
AllowUser yunwei 仅允许yunwei用户可以执行Limit后的所有指令
83
</Limit>
84
</Directory>
85
<Directory "/var/ftp/开发部">
86
<Limit CWD MKD RNFR READ WRITE STOR RETR>
87
DenyAll
88
</Limit>
89
<Limit DELE>
90
DenyAll
91
</Limit>
92
<Limit CWD MKD RNFR READ WRITE STOR RETR>
93
AllowUser kaifa
94
</Limit>
95
</Directory>
96
<Directory "/var/ftp/行政部">
97
<Limit CWD MKD RNFR READ WRITE STOR RETR>
98
DenyAll
99
</Limit>
100
<Limit DELE>
101
DenyAll
102
</Limit>
103
<Limit CWD MKD RNFR READ WRITE STOR RETR>
104
AllowUser xingzheng
105
</Limit>
106
</Directory>
107
<Directory "/var/ftp/销售部">
108
<Limit CWD MKD RNFR READ WRITE STOR RETR>
109
DenyAll
110
</Limit>
111
<Limit DELE>
112
DenyAll
113
</Limit>
114
<Limit CWD MKD RNFR READ WRITE STOR RETR>
115
AllowUser xiaoshou
116
</Limit>
117
</Directory>
******************************************************************************************************
5.创建虚机帐号
ftpasswd命令格式说明
(该命令可以创建用户文件、组文件,默认创建的用户文件为ftpd.passwd):
--passwd 创建密码文件,即AuthUserFile指定的文件
--group 创建组文件
--name
指定创建的用户名
--uid
指定用户虚拟UID
--gid 指定虚拟GID
--home
指定用户家目录
--shell 指定用户Shell
--file
指定创建的文件名
#ftpasswd --passwd --name=yunwei --uid=1000 --home=/home/nohome --shell=/bin/false
6.启动FTP服务:
#/usr/local/proftpd/sbin/proftpd
成功验证!!!!
这里仅以用户为实验环境,需要实现组功能的情况可以自行探索...
支持开源