越简单越好!

FreeBSD8.2配置内部共享samba+ftp访问proftpd

发表于 2011-12-09 16:43 | 1396次阅读 0次点赞   Freebsd

1. 安装samba

#cd /usr/ports/net/samba34/

#make install clean

 

2. 配置samba

#vi /usr/local/etc/smb.conf

在[global]里增加,为了使ftp和samba编码统一不出现乱码

dos charset=cp936

unix charset=cp936

 

增加共享目录

[share]

    comment = Yuqing Share

    path = /data/share

    public = yes

    writable = yes

    create mask = 0777

 

3. 启动samba

#vi /etc/rc.conf

增加

samba_enable="YES"

nmbd_enable="YES"

smbd_enable="YES"

 

#/usr/local/etc/rc.d/samba start

测试看是否可以了。

 

4. 安装proftpd

#cd /usr/ports/ftp/proftpd

#make install clean

 

5. 配置proftpd

#vi /usr/local/etc/proftpd.conf

#基本配置

ServerName "Michael's 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 

 

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

<Directory /> 

    AllowOverwrite on 

</Directory> 

 

#设置系统运行日志和文件传输日志

SystemLog                       /var/log/proftpd.syslog  

TransferLog                     /var/log/proftpd.transferlog 

 

 

######################## 下面是匿名登陆部分的设置 #################

#匿名用户登陆后访问的目录为 ftp用户的主目录

<Anonymous ~ftp> 

User ftp 

Group ftpusers 

 

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

UserAlias anonymous ftp 

 

#设置匿名用户同时在线最大用户数

#此用户数受限于前面的全局同时在线用户数

MaxClients 5

 

#设置welcome.msg文件作为用户登陆的提示信息文件

#.message文件作为用户每次进入的目录提示信息

DisplayLogin welcome.msg 

DisplayFirstChdir .message 

 

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

<Limit WRITE> 

    DenyAll 

</Limit> 

 

<Limit LOGIN>

    Order deny,allow

    Deny from 61.101.201.0/32 

    Allow from all

</Limit>

 

</Anonymous> 

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

 

 

######################## 下面是磁盘限额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

 

6. 配置mysql

-- 

-- 表的结构 `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', 2001, 'FTPUSR');

INSERT INTO `FTPGRPS` VALUES ('ftpusers', 2002, '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', 'test', 2001, 2001, '/data/share', '');

 

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

 

-- 

-- 表的结构 `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: - 允许传输的文件数(包括上传/下载)

 

7. 添加用户

创建proftpd服务运行的用户和用户组

#pw groupadd FTPGRP -g 2001

#pw adduser FTPUSR -u 2001 -g 2001 -d /var/ftp/incoming -s /sbin/nologin

创建匿名登陆用户映射的系统用户和用户组

#pw groupadd ftpusers -g 2002

#pw adduser ftp -u 2002 -g 2001 -d /var/ftp/incoming -s /sbin/nologin

 

8. 启动proftpd

#vi /etc/rc.conf

加入下面一行

proftpd_enable=”YES”

#/usr/local/etc/rc.d/proftpd start

 

9. 配置完成

用test 密码 test 登陆测试。


返回顶部 ^