共计 6989 个字符,预计需要花费 18 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下 Linux 下如何安装配置与管理 proftpd,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一. proftpd 简介。
proftpd 是一款开放源码的 ftp 服务器软件,它是原来世界范围使用最广泛的 wu-ftpd 的改进版,它修正了 wu-ftpd 的许多缺陷,在许多方面进行了重大的改进,其中一个重要变化就是它学习了 Apache 的配置方式,使 proftpd 的配置和管理更加简单易懂。
二. 软件的相关资源。
官方网站:http://www.proftpd.org/
三. 软件的安装。
1. 安装
由其官方网站中下载其源码软件包 proftpd-1.2.10. tar.gz。接下来我将对安装过程的一些重要步骤,给出其解释:
[root@localhost root]#tar xzvf proftpd-1.2.10. tar.gz[root@localhost root]#cd bind-9.3.1[root@localhost bind-9.3.1]#./configure [root@localhost bind-9.3.1]#make[root@localhost bind-9.3.1]#make install
tar xzvf bind-9.3.1.tar.gz 解压缩软件包。
./configure 针对机器作安装的检查和设置,大部分的工作是由机器自动完成的,但是用户可以通过一些参数来完成一定的设置,其常用选项有:
./configure –help 察看参数设置帮助。
–enable-ipv6 支持 ipv6。
可以设置的参数很多,可以通过 -help 察看需要的,一般情况下,默认设置就可以了。
默认情况下,安装过程应该建立了:
proftpd 的 deamon 为 /usr/local/sbin/proftpd
proftpd 的配置文件,/usr/local/etc/proftpd.conf。
2. 启动:
[root@localhost root]# /usr/local/sbin/proftpd -c /usr/local/etc/proftpd.conf
- c 选项用来指定配置文件的位置,不指定的话默认位置是 /usr/local/etc/proftpd.conf。
正常情况下 proftpd 应该启动了,ps aux 应该可以查到 proftpd 的进程,或 netstat -an 也可以看到 21 端口的服务已经起来了。(ftp 默认端口)
如果要设置开机自启动 ftp server,只需在 /etc/rc.d/rc.local 中加入一行
/usr/local/sbin/proftpd #!/bin/sh## This script will be executed*after* all the other init scripts.# You can put your own initialization stuff in here if you don t# want to do the full Sys V style init stuff.touch /var/lock/subsys/local/usr/local/sbin/proftpd
四. 软件的配置。
1. 初始配置文件
默认配置文件的位置为:
/usr/local/etc/proftpd.conf (如果文件不存在可以从压缩包中把配置文件样例拷贝过来即可) 下面逐项分析其中一些常选项:(# 后面的部分是注释)
# This is a basic ProFTPD configuration file (rename it to # proftpd.conf for actual use.It establishes a single server# and a single anonymous login. It assumes that you have a user/group# nobody and ftp for normal operation and anon.ServerName ServerType standaloneDefaultServer on# Port 21 is the standard FTP port.Port 21
ServerType 指定 FTP Server 的启动类型,一般使用 standalone 方式比较简单,如果访问量不大,为节省资源考虑用 xinetd 侦听启动,必须在这里指定。Port 指定 FTP 的侦听端口,一般使用 21 端口
# Umask 022 is a good standard umask to prevent new dirs and files# from being group and world writable.Umask 022# To prevent DoS attacks, set themaximum number of child processes# to 30. If you need to allow more than 30 concurrent connections# at once, simply increase this value. Note that this ONLY works# in standalone mode, in inetd modeyou should use an inetd server# that allows you to limit maximumnumber of processes per service# (such as xinetd).MaxInstances 30
Umask 指定 FTP server 进程的 Umask 值,022 与 Linux 系统得默认值一致。
MaxInstances 指定 FTP server 的 *** 连接数。
# Set the user and group under which the server will run.User nobody Group nogroup # To cause every FTP user to be jailed (chrooted) into their home# directory, uncomment this line.#DefaultRoot ~DefaultRoot
User 和 Group 指定 proftpd 进程启动时的有效用户 ID,处于安全考虑默认的身份是 nobody,有一点要指出的是,一般 Red Linux 9.0 中默认是没有 nogroup 这个组的,把 Group 指定为 nobody 即可。
DefaultRoot 选项限制 Linux 系统用户通过 FTP 方式登录时将被限制在其 home 目录下。
# Set the maximum number of secondsa data connection is allowed# to stall before being aborted.#TimeoutStalled 300AllowRetrieveRestart onAllowStoreRestart on# Normally, we want files to be overwriteable. AllowOverwrite on
TimeoutStalled 指定一个连接的超时时间。
AllowRetriveRestart 和 AllowStroeRestart 指定允许断点续传。
User ftp Group ftp # We want clients to be able to login with anonymous as well as ftp UserAlias anonymous ftp# Limit the maximum number of anonymous logins MaxClients 10# We want welcome.msg displayed at login, and .message displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message# Limit WRITE everywhere in the anonymous chrootDenyAll
这一部分,将在后面详细介绍。
2. 配置文件结构分析
# 全局设置设置项目 1 参数 1 设置项目 2 参数 2#某个目录的设置 ……# 关于匿名登陆的设置 …………
常用全局设置
DefaultRoot ~ # 限制每个 FTP 用户在自己的目录下,不可查看上一级目录
AllowRetrieveRestart on #下载时,允许断点续传
AllowStoreRestart on #上传时,允许断点续传
ServerIdent off #屏蔽服务器版本信息
TransferRate STOR|RETR 速度 (Kbytes/s) user 使用者 #设定用户传输速率
MaxHostsPerUser 1 #每个帐户最多允许来源 ip 为 1 个, 对防止 ftp 帐号还是比较有用的。
MaxClientsPerUser 1 #每个帐户在每个客户端最多可以同时登陆 1 次, 可以防止多线程软件下载对服务器的破坏
MaxClientsPerHost 1 #同一个客户端只能最多 1 个帐号可以登陆
WtmpLog on #是否要把 ftp 记录在日志中,如果不想可以设置成 off 屏蔽掉 log 日志。
TimeoutIdle 600 #客户端 idle 时间设置,默认就是 600 秒
DisplayLogin welcome.msg #设置 ftp 登陆欢迎信息文件
RootLogin on #允许 root 用户登录,默认是不允许的,安全起见不推荐此选项。
欢迎词设置
关于欢迎文件的设置包含如下参数:
%T 目前的时间
%F 所在硬盘剩下的容量
%C 目前所在的目录
%R Client 端的主机名称
%L Server 端的主机名称
%U 使用者帐户名称
%M *** 允许连接人数
%N 目前的服务器连接人数
%E FTP 服务器管理员的 email
%i 本次上传的文件数量
%o 本次下载的文件数量
%t 本次上传 + 下载的文件数量
知道这些参数,可以写出一个友好的欢迎语文件,例如:
欢迎您 %U,这是 T -force 的测试 FTP 服务器; 目前时间是:%T; 本服务器最多允许 %M 个用户连接数; 目前服务器上已有 %N 个用户连接数; 目前你所在的目录是 %C; 目录所在的硬盘还剩下 %F 字节。
anonymous 配置块
在配置文件中 anonymous 配置块是非常重要的一部分,全局帐户的权限配置一般都由它来控制,下面分析一个比较常见的例子
# A basic anonymous configuration, no upload directories. If you do not# want anonymous users, simply delete this entiresection.# 指定匿名用户登录目录 User ftp# 指定本块设置的用户 Group ftp# 指定本块设置的用户属组# We want clients to be able to loginwith anonymous as well as ftp UserAlias anonymous ftp# 设定用户的别名 AnonRequirePassword on #登陆需要密码# Limit the maximum numberof anonymous loginsMaxClients 10# We want welcome.msg displayed at login, and .message displayed# in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message# Limit WRITE everywhere in the anonymous chrootDenyAllAllowAll
anonymous 配置块中的重点是通过 Limit 对指定目录进行比较详尽的权限管理,Limit 的权限控制比较完整,通过不同的组合基本上可以做到各种复杂的权限控制,其控制项如下:
CMD:Change Working Directory 改变目录 MKD:MaKe Directory 建立目录的权限 RNFR:ReName FRom 更改目录名的权限 DELE:DELEte 删除文件的权限 RMD:ReMove Directory 删除目录的权限 RETR:RETRieve 从服务端下载到客户端的权限 STOR:STORe 从客户端上传到服务端的权限 READ:可读的权限,不包括列目录的权限,相当于 RETR,STAT 等 WRITE:写文件或者目录的权限,包括 MKD 和 RMDDIRS:是否允许列目录,相当于 LIST,NLST 等权限,还是比较实用的
注:在测试是否可以下载时,不能用长度为 0 的空文件去测试,要用一个有内容的文件 (文件大小不能为 0k)。
针对上面这个 Limit 所应用的对象,又包括以下范围
AllowUser 针对某个用户允许的 LimitDenyUser 针对某个用户禁止的 LimitAllowGroup 针对某个用户组允许的 LimitDenyGroup 针对某个用户组禁止的 LimitAllowAll 针对所有用户组允许的 LimitDenyAll 针对所有用户禁止的 Limit
五. 一种简单实用的配置管理方式:
proftpd 和 mysql 组合可以完成比较庞大而且完备的权限控制,但是也同样增加了管理和维护的复杂性,在这里我介绍一种简单易行的配置方法,适用于 100 个用户以下的应用。这种方法的核心在于巧妙的运用了设置 gid 位,读者 *** 找资料了解一下相关的知识。这种方法的配置管理工作相当少,也相当的简单,同时还可以保持一个清晰的权限系统结构。
1. 思路
首先需要明确的概念是 proftpd 的用户与 linux 系统的用户的关系:linux 系统的用户即为 proftpd 的用户。proftpd 的权限控制是基于 Linux 系统得权限控制之上的,即用户对于某个文件或目录,必须先有 Linux 系统的权限,在此基础上 proftpd 才能设置其特有的一些权限。其实一般来说 Linux 自有的权限系统就是一个比较完善的权限系统了,我们完全可以只利用这个权限系统,就足可以满足我们的要求了。
我们设置一个 ftp 管理员 ftpadmin 属于 ftpadmin 组,ftp 的根目录 /ftp 是 ftpadmin 的个人根目录,这样 ftpadmin 可以完成日常的管理。通过设置 /ftp 的 gid 可以保证新上传的文件是属于 ftpadmin 用户,加上再设置 umask 值 002 保证上传文件的组读写权限,这样管理员就可以对其管理下的文件进行管理,而同时保证了不改变该文件的属主。
ftp 的用户,我们只需新建一个 Linux 用户,而把他的用户目录制定在 /ftp 之下就可以。操作起来很简单。
2. 建立 ftp 管理员:ftpadmin
[root@localhost root]groupadd ftpadmin #ftpadmin 为新添加的组的名字 [root@localhost root]useradd -d /ftp -g ftpadmin -s /sbin/nologin admin[root@localhost root]chmod 2775 /ftp
同时保证 ftpadmin 是 /ftp 的属主,ftpadmin 是 /ftp 的组属主。这样就保证了 ftpadmin 对要管理的 /ftp 目录有全部的权限。
-s /sbin/nologin 指定用户不能从 shell 登录,就是说只能从 ftp 方式登录,这样是出于安全的考虑。
修改 /usr/local/etc/proftpd.conf
nobody ftpadminnogroup ftpadminUmask 002 #允许所有者,组用户对 ftp 进行管理。
掩码 Umask 改为 002。即组成员和所有者都可对文件夹进行增删,改等操作。其他用户可读可执行,但不可写。这样,ftpadmin 用户可以通过同组的身份对所有的文件进行读写,同时也不改变其内容的原有权限。也就说,不改变这个文件夹下的文件的所有者身份,但同时又可以管理这些文件。
chmod 2775 /ftp,通过设置了文件夹的 gid,以后在这个文件夹下写的所有文件,不管其所有者是谁,文件的组必定是 ftpadmin(因为 /ftp 的组属于 ftpadmin),都合理的被纳于 ftpadmin 的管理之下。
3. 添加用户:user1
useradd -d /ftp/user1 -g ftpadmin -s/sbin/nologin user1
这样 user1 就对 /ftp/user1 的目录有完整的权限,而作为管理员也可以通过组权限对目录进行管理。
每当需要添加用户的时候,只需方便的简单的添加一个 Linux 的用户就可以了。
4. 对应的配置文件:proftpd.conf 中的重要条目
Umask 002DefaultRoot
Umask 002 保证了新建的文件有组读写权限。
DefaultRoot ~ 保证 每个用户登录后被锁定在自己的目录里,看不到其他用户的目录。
以上是“Linux 下如何安装配置与管理 proftpd”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!