首页 运维 正文
用MySQL来管理Proftpd 的帐号

 2022-10-23    317  

  用MySQL来管理Proftpd 的帐号:Unix和Linux中,vsftpd是一款非常安全的FTP服务器。任何发行版本中的vsftpd都非常安全。像RedHat、Debian、GNU、GNOME、KDE 等等一些大型站点,都采用vsftpd作为它们的FTP服务器。本文将介绍用MySQL来管理Proftpd 的帐号。

  一般建 FTP 帐号, 都是直接在系统上直接开个使用者的帐号, 但是如果是要开帐号给安全观念不够的人, 还是另外找个方法来做.

用MySQL来管理Proftpd 的帐号

  所以想到的是, FTP 帐号独立出来, 让 MySQL 来管理 FTP 的帐号, 而且 FTP 顺便限制存取的范围, 至少会比较安全一点(另外就是上传后的程式执行问题, 就不在此讨论).

  在 Debian 上面跑 Proftpd, 使用 MySQL 来管理帐号已经有不少人做过这种事了~ 下述叁篇文章都有写, 在此主要是参考第叁篇:

  一、安装 MySQL Apache Proftpd 和 proftpd-mysql

  apt-get install mysql-server mysql-client libmysqlclient15-dev apache2 proftpd-mysql

  二、设定 FTP 使用的 User 和 Group

  groupadd -g 2001 ftpgroup

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

  三、建立 MySQL ftpuser For Proftpd

  因为要用 MySQL 来管理 Proftpd 的 User, 所以要建下面的 Table 来存放 User data.

  mysql-uroot-p 

  createdatabaseftp; 

  GRANTSELECT,INSERT,UPDATE,DELETEONftp.*TO'proftpd'@'localhost'IDENTIFIEDBY'ftp_password'; 

  GRANTSELECT,INSERT,UPDATE,DELETEONftp.*TO'proftpd'@'localhost.localdomain'IDENTIFIEDBY'ftp_password'; 

  FLUSHPRIVILEGES; 

  useftp; 

  CREATETABLEftpgroup( 

  groupnamevarchar(16)NOTNULLdefault'', 

  gidsmallint(6)NOTNULLdefault'5500', 

  membersvarchar(16)NOTNULLdefault'', 

  KEYgroupname(groupname) 

  )TYPE=MyISAMCOMMENT='ProFTPgrouptable'; 

  CREATETABLEftpuser( 

  idint(10)unsignedNOTNULLauto_increment, 

  useridvarchar(32)NOTNULLdefault'', 

  passwdvarchar(32)NOTNULLdefault'', 

  uidsmallint(6)NOTNULLdefault'5500', 

  gidsmallint(6)NOTNULLdefault'5500', 

  homedirvarchar(255)NOTNULLdefault'', 

  shellvarchar(16)NOTNULLdefault'/sbin/nologin', 

  countint(11)NOTNULLdefault'0', 

  accesseddatetimeNOTNULLdefault'0000-00-0000:00:00', 

  modifieddatetimeNOTNULLdefault'0000-00-0000:00:00', 

  PRIMARYKEY(id), 

  UNIQUEKEYuserid(userid) 

  )TYPE=MyISAMCOMMENT='ProFTPusertable'; 

  #这边是要建立一个Group和两个帐号 

  INSERTINTO`ftpgroup`(`groupname`,`gid`,`members`)VALUES('ftpgroup',2001,'ftpuser'); 

  INSERTINTO`ftpuser`(`id`,`userid`,`passwd`,`uid`,`gid`,`homedir`,`shell`,`count`,`accessed`,`modified`)VALUES(1,'USERNAME','PASSWORD',2001,2001,'/home/www.demo.com','/sbin/nologin',0,'',''); 

  INSERTINTO`ftpuser`(`id`,`userid`,`passwd`,`uid`,`gid`,`homedir`,`shell`,`count`,`accessed`,`modified`)VALUES(2,'USERNAME2','PASSWORD2',2002,2001,'/home/www.demo2.com','/sbin/nologin',0,'',''); 

  quit;#离开MySQL 

  四、建立使用者 FTP 登入后的目录环境

  mkdir/home/www.demo.com 

  mkdir/home/www.demo2.com 

  chownftpuser:ftpgroup/home/www.demo.com 

  chownftpuser:ftpgroup/home/www.demo2.com 

  五、修改 Proftpd 设定, 读取 MySQL 当帐号来源

  vim/etc/proftpd/proftpd.conf 

  UseIPv6on=>UseIPv6off 

  #不加这行,此帐号就存取到根目录的所有资源 

  DefaultRoot~ 

  RootLoginoff 

  RequireValidShelloff 

  #ThepasswordsinMySQLareencryptedusingCRYPT 

  SQLAuthTypesPlaintextCrypt 

  SQLAuthenticateusersgroups 

  SQLConnectInfoftp@localhostproftpdftp_password 

  SQLUserInfoftpuseruseridpasswduidgidhomedirshell 

  SQLGroupInfoftpgroupgroupnamegidmembers 

  SQLLogPASSupdatecount 

  SQLNamedQueryupdatecountUPDATE"countcount=count+1,accessed=now()WHEREuserid='%u'"ftpuser 

  SQLLogSTOR,DELEmodified 

  SQLNamedQuerymodifiedUPDATE"modified=now()WHEREuserid='%u'"ftpuser 

  #SQLLogFile/var/log/sql.log 

  #SQLMinID500 

  #如果使用这帐号的HomeDirectory不存在的话,会自动去建立 

  #SQLHomedirOnDemandon 

  六、设定 Proftpd 载入的模组

  vim/etc/proftpd/modules.conf 

  #LoadModulemod_sql_postgres.c#不用载入PostgreSQL的Module 

  七、重新启动 Proftpd 即完成

  /etc/init.d/proftpdrestart#重新启动Proftpd即可 

  八、快速 开帐号 的步骤

  INSERTINTO`ftpuser`(`id`,`userid`,`passwd`,`uid`,`gid`,`homedir`,`shell`,`count`,`accessed`,`modified`)VALUES(3,'USERNAME','PASSWORD',2003,2001,'/home/www.demo.com','/sbin/nologin',0,'',''); 

  (修改3,'USERNAME','PASSWORD',2003,'/home/www.demo.com'这些值即可.) 

  mkdir/home/www.demo.com#建目录 

  chownftpuser:ftpgroup/home/www.demo.com#改权限 

  这样子就完成啰~

  九、FTP 要限制使用容量(Quota)

  以下只是做笔记, 尚未测试.

  MySql 加这两个 Table 和

原文链接:https://77isp.com/post/8686.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。