首页 »Unix/FreeBsd » proftpd:FreeBSD上Proftpd带匿名登陆和使用MySQL用户验.. »正文proftpd:FreeBSD上Proftpd带匿名登陆和使用MySQL用户验..来源: 发布时间:星期二, 2008年12月9日 浏览:2次 评论:0
一、安装MySQL
#cd /usr/ports/databases/mysql41-server #make install 系统会自动下载mysql的安装包mysql-4.1.14.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 "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 至此,完成了proftpd.conf配置文件的编写 注2:之前Michael按照网上的部分文档编写了最后部分的mysql调用语句,结果最后运行proftpd后,登陆时总是出现421 Service not available 的错误,后来发现是最后部分的语句有问题,上面的语句是Michael经过修改后的,将不会有问题。 ======================================================================================================= 收集整理 作者:toplee 自从在Yahoo工作后,对FreeBSD的喜欢是越来越强烈,这两年多几乎再也不用RedHat之类的Linux了,最近尝试了在FreeBSD 上配置了一个基于Proftpd的FTP服务器,要求使用MySQL数据库存放ftp用户信息,并在数据库内存放用户Quota磁盘限额信息,同时还支持 anonymous匿名用户登陆。 之前网上搜索到一些文章,好像都出自同一个朋友的手,到处都是转载或者稍微的修改。下面是Michael根据大家的经验和proftpd的MAN文档进行的实际安装手记。 本次Michael的FTP服务器使用的是FreeBSD 4.10 Release版本,Michael决定使用FreeBSD非常优秀的Ports系统进行所有软件的安装。以下的所有操作均是在Root用户或者sudo root的情况下完成。 0
相关文章
读者评论
发表评论 |