首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

PureFTPd 整合 MySQL 實現虛擬用戶認證:安裝編譯、數據庫表結構、配置文件詳解、FACL 權限控制與測試驗證

     編輯:MySQL 綜合教學

PureFTPd 整合 MySQL 實現虛擬用戶認證:安裝編譯、數據庫表結構、配置文件詳解、FACL 權限控制與測試驗證

PureFTPd 支持 MySQL 後端認證,實現 FTP 用戶集中管理、配額限制、帶寬控制。本文記錄源碼編譯安裝(含中文支持)、MySQL 認證表結構、主/認證配置文件參數、系統用戶/目錄權限規劃、FACL 精細權限控制、服務啟動與測試全流程。

1. 編譯安裝 PureFTPd(含 MySQL 支持)

./configure --prefix=/usr/local/pureftpd \
  --with-mysql=/usr/local/mysql \
  --with-language=simplified-chinese \
  --with-cookie --with-throttling --with-ratios --with-quotas \
  --with-sysquotas --with-uploadscript --with-virtualhosts \
  --with-virtualchroot --with-diraliases --with-peruserlimits \
  --with-paranoidmsg --with-altlog
make && make check && make install

複製配置模板:

mkdir -m 777 /usr/local/pureftpd/etc
cp pureftpd-mysql.conf /usr/local/pureftpd/etc/
cp configuration-file/pure-ftpd.conf /usr/local/pureftpd/etc/
cp configuration-file/pure-config.pl /usr/local/pureftpd/bin/

註冊 SystemV 服務:修改 /etc/init.d/pureftpd 路徑指向 /usr/local/pureftpd,chkconfig --add pureftpd。

2. MySQL 認證表結構

CREATE DATABASE pureftpd;
GRANT ALL ON pureftpd.* TO pureftpd@localhost IDENTIFIED BY 'pureftpd';
USE pureftpd;
CREATE TABLE `users` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `User` VARCHAR(16) NOT NULL DEFAULT '',
  `Password` VARCHAR(64) NOT NULL DEFAULT '',
  `Uid` VARCHAR(11) NOT NULL DEFAULT '-1',
  `Gid` VARCHAR(11) NOT NULL DEFAULT '-1',
  `Dir` VARCHAR(128) NOT NULL DEFAULT '',
  `QuotaSize` SMALLINT(5) NOT NULL DEFAULT '0',
  `QuotaFiles` INT(11) NOT NULL DEFAULT '0',
  `ULBandwidth` SMALLINT(5) NOT NULL DEFAULT '0',
  `DLBandwidth` SMALLINT(5) NOT NULL DEFAULT '0',
  `ULRatio` SMALLINT(6) NOT NULL DEFAULT '0',
  `DLRatio` SMALLINT(6) NOT NULL DEFAULT '0',
  `comment` TINYTEXT NOT NULL,
  `ipaccess` VARCHAR(15) NOT NULL DEFAULT '*',
  `status` ENUM('0','1') NOT NULL DEFAULT '0',
  `create_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  `modify_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`,`User`), UNIQUE KEY `User` (`User`)
) ENGINE=MyISAM;

3. 系統用戶與目錄權限規劃

# 上傳用戶(寫權限)
groupadd upload -g 2001; useradd -u 2001 -g upload -s /sbin/nologin upload
# 下載用戶(讀權限)
groupadd download -g 2000; useradd -u 2000 -g download -s /sbin/nologin download
# FTP 根目錄
mkdir /ftproot
chown -R upload /ftproot
chgrp -R download /ftproot
chmod 750 /ftproot  # upload rwx, download r-x, other ---

4. 核心配置文件

pure-ftpd.conf 關鍵項:

ChrootEveryone yes
NoAnonymous yes
CreateHomeDir yes
MaxClientsNumber 50
MaxClientsPerIP 8
PassivePortRange 30000 50000
# 防火牆放行 21, 30000-50000

pureftpd-mysql.conf:

MYSQLServer 127.0.0.1
MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword pureftpd
MYSQLDatabase pureftpd
MYSQLCrypt cleartext
MYSQLGetPW SELECT Password FROM users WHERE User='\L'
MYSQLGetUID SELECT Uid FROM users WHERE User='\L'
MYSQLGetGID SELECT Gid FROM users WHERE User='\L'
MYSQLGetDir SELECT Dir FROM users WHERE User='\L'
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User='\L'
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User='\L'

5. 啟動測試

插入測試用戶(映射系統 Uid/Gid):

INSERT INTO users VALUES (1,'upload','upload','2001','2001','/ftproot',0,0,0,0,0,0,'','*',1,NOW(),NOW());
INSERT INTO users VALUES (2,'download','download','2000','2000','/ftproot',0,0,0,0,0,0,'','*',1,NOW(),NOW());

啟動:/usr/local/pureftpd/bin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf。
瀏覽器訪問 ftp://ServerIP:21 驗證上傳/下載權限。

6. FACL 實現同目錄不同用戶不同權限

setfacl -R -d -m u:download:rx /ftproot   # 默認 ACL:新建文件繼承 download 讀執行
setfacl -R -m u:download:rx /ftproot      # 當前文件生效

上傳用戶擁有完整權限,下載用戶僅讀,無需系統級用戶切換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved