http://os.51cto.com/art/201102/245850.htm

Debian所系统目前采用的是 Linux 内核。Debian 支持内核的工作也正在进行。最主要的就是 Hurd,Hurd 是一组在微内核 (例如 Mach) 上运行的提供各种不同功能的守护进程。本文讲述的是Debian中proftpd+mysql+虚拟用户+匿名用户+磁盘限额的配置。

用惯了proftpd,本来打算用pureftpd的,后来想想算了。proftpd虚拟用户的配置其实很早就解决了,只是虚拟用户和本地用户同时登录,一直没有解决。于是趁这个机会仔细研究了下。依然是debian下面的配置。

安装mysql和phpmyadmin,其中phpmyadmin不是必需的

  1. apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2

为mysql设置root密码

  1. mysqladmin -u root password yourrootsqlpassword

如果需要其他人访问本机的mysql,同样需要设置密码

  1. mysqladmin -h server1.example.com -u root password yourrootsqlpassword

安装带mysql支持的proftpd,注意选择proftpd工作在standalone模式

  1. apt-get install proftpd-mysql

建立虚拟用户组,这个是为了把proftpd用户虚拟到本机的一个用户上。注意下面的2001修改为自定义的。

  1. groupadd -g 2001 ftpgroup
  2. useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser

建立proftpd使用的mysql数据库,并创建数据表。

  1. bt:~# mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 18
  5. Server version: 5.0.32-Debian_7etch1-log Debian etch distribution
  6. Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  7. mysql> create database ftp;
  8. Query OK, 1 row affected (0.00 sec)
  9. mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
  10. Query OK, 0 rows affected (0.00 sec)
  11. mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
  12. Query OK, 0 rows affected (0.00 sec)
  13. mysql> USE ftp;
  14. Database changed
  15. mysql> CREATE TABLE ftpgroup (groupname varchar(16) NOT NULL default '',gid smallint(6) NOT NULL default '5500',members varchar(16) NOT NULL default '',KEY groupname (groupname)) TYPE=MyISAM COMMENT='ProFTP group table';
  16. Query OK, 0 rows affected, 1 warning (0.06 sec)
  17. mysql> CREATE TABLE ftpquotalimits (
  18. -> name varchar(30) default NULL,
  19. -> quota_type enum('user','group','class','all') NOT NULL default 'user',
  20. -> per_session enum('false','true') NOT NULL default 'false',
  21. -> limit_type enum('soft','hard') NOT NULL default 'soft',
  22. -> bytes_in_avail int(10) unsigned NOT NULL default '0',
  23. -> bytes_out_avail int(10) unsigned NOT NULL default '0',
  24. -> bytes_xfer_avail int(10) unsigned NOT NULL default '0',
  25. -> files_in_avail int(10) unsigned NOT NULL default '0',
  26. -> files_out_avail int(10) unsigned NOT NULL default '0',
  27. -> files_xfer_avail int(10) unsigned NOT NULL default '0'
  28. -> ) TYPE=MyISAM;
  29. Query OK, 0 rows affected, 1 warning (0.03 sec)
  30. mysql> CREATE TABLE ftpquotatallies (
  31. -> name varchar(30) NOT NULL default '',
  32. -> quota_type enum('user','group','class','all') NOT NULL default 'user',
  33. -> bytes_in_used int(10) unsigned NOT NULL default '0',
  34. -> bytes_out_used int(10) unsigned NOT NULL default '0',
  35. -> bytes_xfer_used int(10) unsigned NOT NULL default '0',
  36. -> files_in_used int(10) unsigned NOT NULL default '0',
  37. -> files_out_used int(10) unsigned NOT NULL default '0',
  38. -> files_xfer_used int(10) unsigned NOT NULL default '0'
  39. -> ) TYPE=MyISAM;
  40. Query OK, 0 rows affected, 1 warning (0.03 sec)
  41. mysql> CREATE TABLE ftpuser (
  42. -> id int(10) unsigned NOT NULL auto_increment,
  43. -> userid varchar(32) NOT NULL default '',
  44. -> passwd varchar(32) NOT NULL default '',
  45. -> uid smallint(6) NOT NULL default '5500',
  46. -> gid smallint(6) NOT NULL default '5500',
  47. -> homedir varchar(255) NOT NULL default '',
  48. -> shell varchar(16) NOT NULL default '/sbin/nologin',
  49. -> count int(11) NOT NULL default '0',
  50. -> accessed datetime NOT NULL default '0000-00-00 00:00:00',
  51. -> modified datetime NOT NULL default '0000-00-00 00:00:00',
  52. -> PRIMARY KEY (id),
  53. -> UNIQUE KEY userid (userid)
  54. -> ) TYPE=MyISAM COMMENT='ProFTP user table';
  55. Query OK, 0 rows affected, 1 warning (0.03 sec)
  56. mysql> quit;
  57. Bye

然后就是修改proftpd的配置文件了,nano /etc/proftpd/proftpc.conf

首先关闭对ipv6支持

UseIPv6 off

然后增加对mysql的验证支持

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

  1. DefaultRoot ~
  2. # The passwords in MySQL are encrypted using CRYPT
  3. SQLAuthTypes Plaintext Crypt
  4. SQLAuthenticate users groups
  5. # used to connect to the database
  6. # databasename@host database_user user_password
  7. SQLConnectInfo ftp@localhost proftpd password
  8. # Here we tell ProFTPd the names of the database columns in the "usertable"
  9. # we want it to interact with. Match the names with those in the db
  10. SQLUserInfo ftpuser userid passwd uid gid homedir shell
  11. # Here we tell ProFTPd the names of the database columns in the "grouptable"
  12. # we want it to interact with. Again the names match with those in the db
  13. SQLGroupInfo ftpgroup groupname gid members
  14. # set min UID and GID - otherwise these are 999 each
  15. SQLMinID 500
  16. # create a user's home directory on demand if it doesn't exist
  17. SQLHomedirOnDemand on
  18. # Update count every time user logs in
  19. SQLLog PASS updatecount
  20. SQLNamedQuery updatecount UPDATE "countcount=count+1, accessed=now() WHERE userid='%u'" ftpuser
  21. # Update modified everytime user uploads or deletes a file
  22. SQLLog STOR,DELE modified
  23. SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
  24. # User quotas
  25. # ===========
  26. QuotaEngine on
  27. QuotaDirectoryTally on
  28. QuotaDisplayUnits Mb
  29. QuotaShowQuotas on
  30. 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 ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
  31. 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 ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
  32. SQLNamedQuery update-quota-tally UPDATE "bytes_in_usedbytes_in_used = bytes_in_used + %{0}, bytes_out_usedbytes_out_used = bytes_out_used + %{1}, bytes_xfer_usedbytes_xfer_used = bytes_xfer_used + %{2}, files_in_usedfiles_in_used = files_in_used + %{3}, files_out_usedfiles_out_used = files_out_used + %{4}, files_xfer_usedfiles_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
  33. SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
  34. QuotaLimitTable sql:/get-quota-limit
  35. QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
  36. RootLogin off
  37. RequireValidShell off

然后nano /etc/proftpd/modules.conf,注释掉没用的部分,然后重新启动proftpd

#LoadModule mod_sql_postgres.c

/etc/init.d/proftpd restart

建立数据库并测试,强烈推荐这些通过phpmyadmin来进行操作

  1. mysql -u root -p
  2. USE ftp;
  3. INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
  4. INSERT INTO `ftpquotalimits` (`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`) VALUES ('exampleuser', 'user', 'true', 'hard', 15728640, 0, 0, 0, 0, 0);
  5. INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES (1, 'exampleuser', 'secret', 2001, 2001, '/home/www.example.com', '/sbin/nologin', 0, '', '');
  6. quit;

下面是配置匿名用户登录

依然是增加一个用户组

  1. groupadd -g 2002 anonymous_ftp
  2. useradd -u 2002 -s /bin/false -d /home/anonymous_ftp -m -c "Anonymous FTP User" -g anonymous_ftp anonymous_ftp

建立登录文件夹,如果想匿名用户和虚拟用户登录到同一个地方,这一步可以略过,在proftpd的配置文件中指定就行了

  1. mkdir /home/anonymous_ftp/incoming
  2. chown anonymous_ftp:nogroup /home/anonymous_ftp/incoming

然后编辑proftpd的配置文件,增加下面部分,然后重新启动。配置文件具体含义不说了

 

  1.  
  2. User anonymous_ftp
  3. Group nogroup
  4. # We want clients to be able to login with "anonymous" as well as "ftp"
  5. UserAlias anonymous anonymous_ftp
  6. # Cosmetic changes, all files belongs to ftp user
  7. DirFakeUser on anonymous_ftp
  8. DirFakeGroup on anonymous_ftp
  9. RequireValidShell off
  10. # Limit the maximum number of anonymous logins
  11. MaxClients 10
  12. # We want 'welcome.msg' displayed at login, and '.message' displayed
  13. # in each newly chdired directory.
  14. DisplayLogin welcome.msg
  15. DisplayFirstChdir .message
  16. # Limit WRITE everywhere in the anonymous chroot
  17. DenyAll
  18. # Uncomment this if you're brave.
  19. # Umask 022 is a good standard umask to prevent new files and dirs
  20. # (second parm) from being group and world writable.
  21. Umask 022 022
  22. DenyAll
  23. AllowAll

这样配置Debian中proftpd+mysql+虚拟用户+匿名用户+磁盘限额的配置 就ok了。

转载于:https://blog.51cto.com/redhatdebian/728265

Debian中proftpd+mysql+虚拟用户+匿名用户+磁盘限额的配置相关推荐

  1. myftpadmin+proftpd+mysql架设ftp服务器_[教程]在CentOS7上配置 FTP服务器 Proftpd 支持 MySQL 虚拟用户加密认证以及磁盘限额(Quota)...

    有一些很古老的教程,一般都是走编译安装路线的,本文是教你不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击.利用 Proftpd 现成的配置以及设置好 ...

  2. proftpd mysql_ProFTPD支持MySQL添加虚拟用户认证及磁盘限额

    --prefix=这是用来指定要把ProFTPD安装在哪个位置,在这里我把ProFTPD安装在了 /opt/proftpd 目录下,您不必自己建目录 /opt/proftpd ,在安装的时候这个目录会 ...

  3. Linux中搭建FTP服务器,匿名用户访问、本地用户访问、虚拟用户访问(详细解答安装配置步骤)

    对于Linux搭建服务器步骤详解:可以基于匿名访问.本地用户访问.虚拟用户访问 FTP服务访问可分为三种 匿名用户:用户名为ftp或者anonymous,提供任意密码或无密码访问即可. 本地用户:要求 ...

  4. ftp匿名用户匿名用户本地用户设置

    ftp匿名用户的设置 (1)anonymous_enable=YES/NO 是否启用匿名用户访问 (2)anon_root=/opt 匿名用户登入的FTP根目录 (3)anon_umask=022 匿 ...

  5. rhel6系统中,mysql 5.6复制新特性下主从复制配置[基于GTID]

    1.mysql5.6在复制方面的新特性: (1).支持多线程复制:事实上是针对每个database开启相应的独立线程,即每个库有一个单独的(sql thread).针对这样的改进,如果我们想实现多线程 ...

  6. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...

  7. linux ftp mysql_linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 被动模式,运行在随机端口 数据传输模式(自动模式):有二进制(mp3,jpg等)和文本(html)两种传输模式 ft ...

  8. (转)petshop4.0中的Profile理解(匿名用户身份)

    当未经过登陆而在PetShop中浏览时,持有和使用的是匿名用户身份.这种用户身份的用户名是一个GUID字符串.可以通过用户迁移方法的重载将匿名用户转变为审核用户,实际上是为匿名用户生成Profile和 ...

  9. FTP服务(一)--匿名用户于系统用户

    一.FTP简介 FTP(File Transfer Protocol) 早期的三个应用级协议之一,是基于C/S架构. FTP的主要特性主要有以下几点: 双通道协议:数据通道和命令连接通道,数据通道和命 ...

最新文章

  1. 不使用任何框架实现CNN网络
  2. Android之自定义AlertDialog无法监听控件
  3. 石川es6课程---1-2、ES6简介
  4. [Spring cloud 一步步实现广告系统] 20. 系统运行测试
  5. Django日志信息路径的设置
  6. vs 2012,vs 2013问题系列
  7. ActiveMQ Cannot send, channel has already failed: tcp:127.0.0.1:8161
  8. 网络通信程序写起来很难专业课没问题
  9. mysql快捷键设置_MySQL快捷命令
  10. 6种java垃圾回收算法_学习java垃圾回收
  11. ORCU浅析之安装和作用
  12. php 递归函数 示例,php递归使用示例(php递归函数)
  13. 音频属性采样率、通道数、位数、比特率、帧等
  14. Fabric官方教程(release 2.2)翻译及总结——使用CouchDB
  15. 第7周编程题在线测试
  16. 迷宫(深度优先搜索)
  17. csgo 一键配置cfg、道具图、练枪图、连跳图
  18. Jenkins - cannot find symbol
  19. EventBus 最简易的使用方式
  20. 安装cnpm后运行报cnpm :无法加载文件 C:\Users\29038\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。

热门文章

  1. android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...
  2. linux生成ssl申请文件,Shell脚本实现生成SSL自签署证书
  3. java 多列 统计_java – 如何计算多列(colspan)HTML表的宽度?
  4. java程序设计_Java程序设计-类和对象(笔记)
  5. 华农2012年java答案_2012年计算机二级Java应用章节练习题及答案
  6. 关于聚类分析、判别分析、主成分分析、因子分析等多元统计分析方法
  7. python selenium 下拉列表_Selenium+Python之下拉菜单的定位
  8. concatenation java,Java:StringBufferConcatenation
  9. mysql索引的创建和删除吗_MySQL索引的创建、删除和查看
  10. 2012.4.19总结(二)