2022-10-23 367
用MySQL来管理Proftpd 的帐号:Unix和Linux中,vsftpd是一款非常安全的FTP服务器。任何发行版本中的vsftpd都非常安全。像RedHat、Debian、GNU、GNOME、KDE 等等一些大型站点,都采用vsftpd作为它们的FTP服务器。本文将介绍用MySQL来管理Proftpd 的帐号。
一般建 FTP 帐号, 都是直接在系统上直接开个使用者的帐号, 但是如果是要开帐号给安全观念不够的人, 还是另外找个方法来做.
所以想到的是, 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/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态