`
aben328
  • 浏览: 1460580 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

FreeBSD环境下ports安装 ProFTPD

阅读更多

FreeBSD环境下ports安装 ProFTPD


内容提示: ProFTPd是一套开放源代码的FTP服务器软件,名称最后的d字是因为在Linux中是用daemon来称呼.ProFTPd亦开发了有图形用户接口的FTP服务器软件称为gProFTPd。

背景知识:

         FreeBSD: 一种 UNIX 操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支,它支持 x86 兼容(包括 Pentium ® 和 Athlon ™)、 amd 64 兼容(包括 Opteron ™、Athlon 64 和 EM64T)、 Alpha /AXP、IA-64、PC-98以及 UltraSPARC ® 架构的 计算机 。它运行在 Intel x86 family兼容 处理器 、DEC Alpha、 Sun 微系统的UltraSPARC、 Itanium (IA-64)和AMD64处理器上。针对 PowerPC 的支持正在开发中。它被普遍认为是相当可靠和稳定的。 苹果电脑 Mac OS X即以 Mach 为内核, 配合 FreeBSD 的驱动程序和实用工具为基础。FreeBSD 源于 BSD ── 美国 加州大学伯克利分校开发 UNIX® 版本它由来自世界各地的志愿者开发和维护.FreeBSD 为不同架构的计算机系统提供了不同程度的支持.

        ProFTPD: 一个Unix平台上或是类Unix平台上(如Linux, FreeBSD等)的FTP服务器程序,它是在自由软件基金会的版权声明(GPL)下开发、发布的免费软件,也就是说任何人只要遵守GPL版权声明,都可以随意修改源始码。

   ProFTPD设计目标是实现一个安全且易于设定的FTP Server。目前Unix或类Unix平台上 FTP Server十分有限,最常使用的恐怕就是wu-ftpd了。虽然wu-ftpd有着极佳的效能同时也是一套很好的软件,然而它却欠缺了许多Win32平 台上FTP Server的一些特色,同时wu-ftpd过去也有不少的安全漏洞陆续被发现。ProFTPD的原创者本身就曾经花非常多的时间寻找wu-ftpd 的漏洞加以改进并且增加许多功能。然而十分不幸的是,他很快地发现显然wu-ftpd需要全部重新的改写才能补足欠缺的设定能力以及缺乏的一些功能。 ProFTPD不是从其它FTP Server的既有原始码修改而产生的,相反的,它是完全独立而完整、重新改写的FTP Server。

 相关下载 : ProFTPD 1.32 RC1   Apache 2.2.9 HTTP Server   MySQl 5.1.23  php 5.2.6

安装配置步骤:

注意: 如果是续前一个FreeBSD+apache+php+mysql的ports安装,直接跳到第二步。

一、安装MySQL
#cd /usr/ports/databases/mysql51-server
#make install
系统会自动下载mysql的安装包mysql.....tar.gz,并完成编译和安装过程

注1:对于mysql的安装,需要说明几点要注意的地方,FreeBSD的Ports自动完成mysql安装后,还需要自己完成下面几件事情后才能正常使用
1、创建mysql用户和mysql用户组,并修改目录权限
#pw groupadd mysql -g 88
#pw adduser mysql -u 88 -g 88 -d /nonexistent -s /sbin/nologin
#chown -R mysql:mysql /var/db/mysql
#chown -R mysql:mysql /usr/local/share/mysql
2、创建mysql系统数据库
#/usr/local/bin/mysql_install_db
#/usr/lcoal/bin/mysql_create_system_tables
3、创建mysql自启动脚本
#cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/mysql-server.sh
4、创建mysql配置文件 my.cnf
#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf (有my-medium、small、large、huge等可选)

现在,你可以通过 /usr/local/etc/rc.d/mysql-server.sh start 或者重启系统来启动mysql了

二、安装proftpd
和mysql的安装很相似,使用ports安装
#cd /usr/ports/ftp/proftpd-mysql
#make install
安装的时候会要求选择proftpd要安装的模块,选择好mysql和quota,其他的根据情况选择
然后系统自动下载proftpd-1.3.0rc2.tar.bz2并完成编译和安装。


三、配置proftpd.conf
完成上面的安装,proftpd其实已经可以运行了,但是我们还需要根据自己的安装要求进行必要的配置,所以先备份默认的配置文件
#cp /usr/local/etc/proftpd.conf /usr/local/etc/proftpd.conf.sample

1、重新编写proftpd.conf,下面是Michael的文件,大家完全照抄就基本可以了

#基本配置
ServerName "Ftp Site"
ServerType standalone
DefaultServer on

#设置用户登陆时不显示ftp服务器版本信息
ServerIdent off

#设置ftp服务使用的端口,可以修改
Port 21

#设置ftp目录的权限
Umask 022

#设置系统各种超时时间和重试次数
MaxLoginAttempts 3
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600

#允许最大的同时连接用户数
MaxClients 10

#允许每个用户主机最大并发连接数
MaxClientsPerHost 3

AllowOverwrite no
AllowStoreRestart on
UseReverseDNS off

#如果shell为空时允许用户登录
RequireValidShell off

#将用户限制在自己的主目录下 ,这个设置很重要
DefaultRoot ~

#设置系统最大的进程数,防止dos攻击,默认是30
MaxInstances 10

#设置系统用于运行proftpd服务的用户和用户组(需要后面自己创建)
User FTPUSR
Group FTPGRP

#设置对全局的文件可以进行改写

   AllowOverwrite on


#设置系统运行日志和文件传输日志
SystemLog                       /var/log/proftpd.syslog  
TransferLog                     /var/log/proftpd.transferlog


######################## 下面是匿名登陆部分的设置 #################
#匿名用户登陆后访问的目录为 ftp用户的主目录

User ftp
Group ftpusers

#设置anonymous用户为系统实际用户ftp的别名
UserAlias anonymous ftp

#设置匿名用户同时在线最大用户数
#此用户数受限于前面的全局同时在线用户数
MaxClients 5

#设置welcome.msg文件作为用户登陆的提示信息文件
#.message文件作为用户每次进入的目录提示信息
DisplayLogin welcome.msg
DisplayFirstChdir .message

#设置一些特殊的权限,比如写文件和登陆限制等 (可以不用)

   DenyAll



   Order deny,allow
   Deny from 127.0.0.1/32
   Allow from all



######################## 完成匿名登陆的设置 #################


######################## 下面是磁盘限额Quota设置 ############
#启用磁盘限额
QuotaDirectoryTally on

SQLHomedirOnDemand on

#磁盘限额单位 b"|"Kb"|"Mb"|"Gb"
QuotaDisplayUnits "Mb"

QuotaEngine on

#磁盘限额日志记录
QuotaLog "/var/log/proftpd.quotalog"

#打开磁盘限额信息 "quote SITE QUOTA"命令
QuotaShowQuotas on
####################### 完成磁盘配额设置 ####################


####################### 下面是MySQL数据库部分设置 ###########
#数据库联接的信息
#FTP是数据库名,localhost是MySQL主机名,3306是mysql服务的端口号
#Michael是连接数据库的用户名,testpwd是密码(如果没有密码留空)
SQLConnectInfo FTP@localhost:3306 Michael testpwd

#数据库认证的类型
SQLAuthTypes Backend Plaintext

#指定用来做用户认证的表的有关信息。(将在后面创建)
SQLUserInfo FTPUSERS userid passwd uid gid homedir shell
SQLGroupInfo FTPGRPS groupname gid members

#数据库认证
SQLAuthenticate users groups usersetfast groupsetfast

#proftpd进行的mysql调用语句,别修改任何地方
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail,files_in_avail, files_out_avail, files_xfer_avail FROM quotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM quotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" quotatallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" quotatallies

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
至此,完成了proftpd.conf配置文件的编写

注 2:之前Michael按照网上的部分文档编写了最后部分的mysql调用语句,结果最后运行proftpd后,登陆时总是出现421 Service not available 的错误,后来发现是最后部分的语句有问题,上面的语句是Michael经过修改后的,将不会有问题。



四、完成MySQL数据库表配置
完成proftpd.conf配置文件后,需要进行数据库表的配置,包括创建表和插入数据
1、登陆mysql或者使用phpmyadmin工具创建数据库 FTP
#mysqladmin create FTP
2、运行下面的sql语句创建表和插入必要数据

 -- --------------------------------------------------------

--
-- 表的结构 `FTPGRPS`
--

CREATE TABLE `FTPGRPS` (
 `groupname` text NOT NULL,
 `gid` smallint(6) NOT NULL default '0',
 `members` text NOT NULL
) ENGINE=MyISAM;;

--
-- 导出表中的数据 `FTPGRPS`
--

INSERT INTO `FTPGRPS` VALUES ('FTPGRP', 1000, 'FTPUSR');
INSERT INTO `FTPGRPS` VALUES ('ftpusers', 1000, 'ftp');

-- --------------------------------------------------------

--
-- 表的结构 `FTPUSERS`
--

CREATE TABLE `FTPUSERS` (
 `userid` text NOT NULL,
 `passwd` text NOT NULL,
 `uid` int(11) NOT NULL default '0',
 `gid` int(11) NOT NULL default '0',
 `homedir` text,
 `shell` text
) ENGINE=MyISAM;;

--
-- 导出表中的数据 `FTPUSERS`
--

INSERT INTO `FTPUSERS` VALUES ('test', 'testftp', 1000, 1000, '/home/ftp', '');

-- --------------------------------------------------------

--
-- 表的结构 `quotalimits`
--

CREATE TABLE `quotalimits` (
 `name` varchar(30) default NULL,
 `quota_type` enum('user','group','class','all') NOT NULL default 'user',
 `per_session` enum('false','true') NOT NULL default 'false',
 `limit_type` enum('soft','hard') NOT NULL default 'soft',
 `bytes_in_avail` float NOT NULL default '0',
 `bytes_out_avail` float NOT NULL default '0',
 `bytes_xfer_avail` float NOT NULL default '0',
 `files_in_avail` int(10) unsigned NOT NULL default '0',
 `files_out_avail` int(10) unsigned NOT NULL default '0',
 `files_xfer_avail` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM;;

--
-- 导出表中的数据 `quotalimits`
--
-- 设置Michael用户,磁盘配额1G,可以上传下载流量2G,最多文件数10个
INSERT INTO `quotalimits` VALUES ('Michael', 'user', 'false', 'soft', 1.024e+09, 0, 2.048e+09, 10, 0, 0);

-- --------------------------------------------------------

--
-- 表的结构 `quotatallies`
--

CREATE TABLE `quotatallies` (
 `name` varchar(30) NOT NULL default '',
 `quota_type` enum('user','group','class','all') NOT NULL default 'user',
 `bytes_in_used` float NOT NULL default '0',
 `bytes_out_used` float NOT NULL default '0',
 `bytes_xfer_used` float NOT NULL default '0',
 `files_in_used` int(10) unsigned NOT NULL default '0',
 `files_out_used` int(10) unsigned NOT NULL default '0',
 `files_xfer_used` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM;;




如果你想设置quota,只要在ftpquotalimits表里设置一下就行了,这个表里的各个参数分别代表:

代码:
quotalimits表
name: - 用户帐号
quota type: - user, group, class, all (we use user)
per_session: - true or false (we use true)
limit_type: - 硬限制 or 软限制 (我们一般用硬限制)
bytes_in_avail: - 允许上传的字节数
bytes_out_avail: - 允许下载的字节数
bytes_xfer_avail: - 允许传输的字节数(包括上传/下载)
files_in_avail: - 允许上传的文件数
files_out_avail: - 允许下载的文件数
files_xfer_avail: - 允许传输的文件数(包括上传/下载)

五、完成最后的用户、用户组和目录设置
1、创建proftpd服务运行的用户和用户组
#pw groupadd FTPGRP -g 1000
#pw adduser FTPUSR -u 1000 -g 1000 -d /home/ftp -s /sbin/nologin

2、创建匿名登陆用户映射的系统用户和用户组
#pw groupadd ftpusers -g 1000
#pw adduser ftp -u 2002 -g 1000 -d /var/ftp/incoming -s /sbin/nologin

六、运行测试配置系统服务
1、运行proftpd服务
#/usr/local/sbin/proftpd

2、测试
在任何一台可以访问服务器的机器上测试ftp连接,使用Michael用户和testftp口令登陆,然后运行quote SITE QUOTA命令查看设置的磁盘限额信息
然后测试使用anonymous匿名用户登陆测试

3、监控和调试proftpd服务
#/usr/local/sbin/proftpd proftpd -n -d 5 -c /usr/local/etc/proftpd.conf
这样在测试和连接ftp的时候,可以在主机上看到所有的proftpd运行信息

4、日志监控
可以使用下面的命令查看系统日志、传送日志等
#tail -f /var/log/proftpd.syslog
#tail -f /var/log/proftpd.transferlog

5、配置系统自启动proftpd服务
#vi /etc/rc.conf
加入下面一行
proftpd_enable=”YES”
这样系统启动的时候会调用/usr/local/etc/rc.d/proftpd.sh脚本启动proftpd服务




分享到:
评论

相关推荐

    FreeBSD10.0下ports安装postgresql9.4-server

    总结以上步骤,FreeBSD系统下通过ports安装PostgreSQL 9.4-server涉及到系统软件包的编译安装、系统用户的创建和管理、数据库服务的启动和关闭、远程连接的配置以及系统启动时自动运行服务的设置。这些步骤涵盖了...

    FreeBSD 8.4安装指南

    FreeBSD的ports树允许你编译源代码来安装软件,提供了极大的灵活性。 8. 完成安装:确认所有设置无误后,开始安装过程。安装完成后,重启系统。 二、Panabit安装指南 Panabit是一款强大的网络行为管理系统,用于...

    FreeBSD11下安装phpMyAdmin

    在FreeBSD 11.0操作系统中安装phpMyAdmin是一个涉及多个步骤的过程,涉及到系统管理、包管理、网络服务配置等多个IT知识点。首先,我们来详细了解这个过程。 **1. 环境准备** 在开始安装之前,确保你的FreeBSD系统...

    FreeBSD11下安装Apache24

    FreeBSD11下安装Apache24的详细过程

    freebsd+nginx+php+mysql+zend系统优化防止ddos +傻瓜式ports安装

    MySQL是一个广泛使用的开源关系型数据库管理系统,在FreeBSD环境下安装MySQL同样非常简单。 - 进入MySQL服务器目录: ```bash cd /usr/ports/databases/mysql51-server ``` - 执行以下命令来配置并安装MySQL: ...

    FreeBSD_6.2安装指南

    你也可以选择直接从FreeBSD ports网站下载所需的ports源代码,然后按照指示编译和安装。 ### 5. 安装系统专用软件 接下来,我们将介绍几个特定的软件安装实例: #### A. 安装postgresql8.0数据库 ```sh cd /usr/...

    FreeBSD7.0邮件服务器安装向导

    Ports是FreeBSD中的一个软件包管理系统,通过它可以方便地安装和管理软件包。 1. **下载更新**:可以通过`portsnap fetch`命令来获取最新的Ports树。 2. **解压缩**:`portsnap extract`用于解压下载的Ports文件。 3...

    FreeBSD11下安装MySQL数据库

    以上就是在FreeBSD 11.0环境下安装MySQL数据库的详细步骤。在实际操作中,可能会遇到各种问题,如网络问题、权限问题等,需要根据错误提示进行解决。同时,记得定期备份数据,确保系统的安全性,以防止数据丢失。在...

    linux下简易Ftp服务器搭建:proftpd的安装与最简配置

    在Linux环境中,搭建一个FTP(File Transfer ...以上就是Linux环境下使用ProFTPD搭建简易FTP服务器的基本步骤。通过进一步的配置,你可以实现更复杂的设置,如SSL/TLS加密、用户隔离、多站点等,以满足不同需求。

    FreeBSD 8.1详细安装教程无桌面环境版

    "FreeBSD 8.1详细安装教程无桌面环境版" FreeBSD 8.1 是一个功能强大且可靠的操作系统,以下是 FreeBSD 8.1 安装教程无桌面环境版的详细步骤: Step 1: 进入 BIOS 设置 在安装 FreeBSD 之前,需要先进入 BIOS ...

    freebsd开发环境解决方案

    本文将详细探讨如何搭建一个基于FreeBSD的开发环境,并重点介绍其优势、安装过程以及配置方法。 #### 一、FreeBSD简介及优势 FreeBSD是一款开源的类Unix操作系统,它以其稳定性、安全性和高性能而著称。对于开发者...

    FreeBSD7 Apache2.2 PHP5 PostgreSQL8.3 Ports安装笔记

    在`/usr/ports/devel/ZendOptimizer`目录下执行`make install clean`来安装。 安装完成后,需要进行一些配置以确保所有组件能正常工作。首先,将`php.ini-dist`复制到正确的位置,即`/usr/local/etc/php.ini`。接着...

    VMWARE下安装FreeBSD

    这里主要介绍在VMware环境下安装FreeBSD 7.0的过程。 ##### (1)准备环境 - **安装VMware Workstation**:确保你的主机系统已安装VMware Workstation或类似虚拟机软件。 - **下载FreeBSD 7.0 ISO镜像**:访问...

    FREEBSD7.0 系统恢复安装图解

    《FREEBSD7.0系统恢复安装详解》 FREEBSD7.0系统遭遇更新问题,导致系统功能异常,如核心升级后出现奇怪结果,debug模式开启,fusefs-ntfs挂载NTFS硬盘出错,甚至最基本的ls命令都无法使用。面对这种情况,通常需要...

    FreeBSD11下安装PHP

    FreeBSD11下安装PHP的详细过程

    FreeBSD邮件服务器安装

    在ports目录下查找OpenWebMail并安装: ```sh cd /usr/ports/mail/openwebmail make install clean ``` #### 3.3 配置OpenWebMail 编辑OpenWebMail的相关配置文件,设置邮件账户的用户名、密码以及SMTP/IMAP...

    freebsd u盘安装 教程

    - **格式化方法**:如果U盘在Linux环境下无法自动挂载,可以按照以下步骤进行格式化: - 首先使用`sudo fdisk -l`命令找出U盘的设备名称(假设为`/dev/sdb`)。 - 使用`fdisk`工具创建新的分区。具体操作步骤如下...

    专题资料(2021-2022年)FreeBSD 8下如何最有效率的安装软件.doc

    【FreeBSD 8 下安装软件的有效方法】 FreeBSD 操作系统提供了一种高效且灵活的软件安装和升级机制,尤其以Ports系统著称。Ports集合了大量的软件源代码,用户可以根据需求构建和安装软件,而无需手动编译和配置。本...

    FreeBSD服务器安装步骤

    Step 2: FreeBSD 下的磁盘概念及硬盘分区 在安装 FreeBSD 之前,需要了解 FreeBSD 的磁盘概念和硬盘分区。FreeBSD 使用BSD磁盘标签来标识硬盘,硬盘被分为多个分区,例如 /、/usr、/var 等。您需要规划硬盘空间,...

Global site tag (gtag.js) - Google Analytics