proftp+mysql認證實現
安裝 redhat
或者solaris
注
solaris
要求自己有c編譯器等工具
我們這裡不提供安裝方法
具體可以取下載gcc包安裝
停止缺省的 wu
ftpd服務器
在 ntsysv 裡將 wu
ftpd 前的 * 去了
然後保存
然後將 /etc/rc
d/init
d 目錄下的 wu
ftpd 的啟動腳本刪除了
Solaris可以去/etc/services和/etc/nf注銷
不過最好是不要安裝那個東西
它的安全問題很多!
安裝 MYSQL
在 Redhat 的光盤上有的
將 MYSQL 的程序和庫都裝上
(如果安裝 Redhat 時已經 選裝了這步就不用了
當然
如果是solaris的話就沒什麼用了
用源代碼包自己編譯吧)
rpm
ivh mysql
i
rpm
rpm
ivh mysql
devel
i
rpm
rpm
ivh mysql
server
i
rpm
也可以源代碼安裝
tar –zxvf mysql
tar
gz
cd mysql
/configure –prefix=/usr/local/mysql
make
make install
cd /usr/local/mysql/bin
/ mysql_install_db #初始化
/safe_mysqld –uroot & #啟動mysql
下載 proftpd
tar
gz
不知道哪兒有下載?FAINT
在搜索引擎上用
proftpd
tar
gz 下載
在找
至少命中
個可以下載的站點
准備開始安裝 proftpd
為 proftpd 建立專用的用戶;加一個ftpuser組 id為
;加一個ftpuser用戶
用戶id為
組id為
在MYSQL下為 proftpd 建數據庫和表
#mysql
p
PASSWORD:****** (自己的口令自己知道)
然後用下列命令
直接拷進去吧
CREATE DATABASE proftpftp;
USE proftp;
CREATE TABLE users (
userid VARCHAR(
) NOT NULL
# 用戶名
uid INT UNSIGNED
# 用戶ID
gid INT UNSIGNED
# 組ID
passwd VARCHAR(
) NOT NULL
# 密碼
shell VARCHAR(
)
# SHELL
homedir VARCHAR(
)
# 用戶目錄
count INT UNSIGNED NOT NULL # 登錄計數
) comment =
用戶表
;
#這個地方可能沒法輸入漢字
可改成英文!
CREATE TABLE groups (
groupname VARCHAR(
) NOT NULL
# 組名
gid INT NOT NULL
# 組ID
members VARCHAR(
) # 組成員
) comment =
組表
;
#把
組表
改為英文吧
設置權限
在 MYSQL 下 GRANT 一個可以存取這個表的用戶(要 select
update 權限)
grant select
update
delete
insert on proftp
*
to yourmysqlid@
%
identified by
passwd
;
tar
zxvf proftpd
tar
gz
cd proftpd
/configure
with
modules=mod_sql:mod_sql_mysql
with
includes=/usr/include
with
libraries=/usr/lib/mysql
(這裡的 MYSQL 是用 RPM 安裝時的庫路徑
你可以在根下用 locate 命令找到自己機 器上 MYSQL 庫的路徑)
如果是源代碼安裝的
一定要注意了
/configure
prefix=/usr/local/proftpd
with
modules=mod_sql:mod_sql_mysql
with
includes=/usr/local/mysql/include
with
libraries=/usr/local/mysql/lib/mysql
這個地方也要多多注意
我就是這裡出了錯誤的
make 並 make install
編輯 /usr/local/etc/nf
加上下面的話(須修改一下再加)
#先改其它參數
文件本來就有注解的
然後加上下面的
#用戶不能訪問比自己登錄目錄更高級別的目錄
DefaultRoot ~
#數據庫情況
剛剛的GRANT時要是用了IP這裡要寫 proftp@xxx
xxx
xxx
xxx
#用機器名也一樣
只有GRANT時用localhost時可以省略@ xxx
xxx
xxx
xxx
SQLConnectInfo proftp 用戶名 口令
#密碼方式為明文
可以為空
#(要是想用 MD
也可以
手冊上講了好多種加密支持)
SQLAuthTypes Plaintext Empty
#是否不允其它認證方式
#(注意
其它文章裡的這個參數是講錯的
小樂就上當過
)
SQLAuthoritative on
#不用講了吧
SQLDefaultGID
SQLDefaultUID
#用戶認證
SQLDoAuth on
#組有效
SQLDoGroupAuth on
#下面的就不用講了吧
一眼就明白了
根據你數據表情況寫
SQLUserTable users
SQLUsernameField userid
SQLUidField uid
SQLGidField gid
SQLPasswordField passwd
SQLShellField shell
SQLHomedirField homedir
SQLLoginCountField count
SQLGroupTable groups
SQLGroupGIDField gid
SQLGroupMembersField members
SQLGroupnameField groupname
SQLHomedirOnDemand on
cp
/usr/local/mysql/lib/mysql/libmysqlclient
so
/usr/lib
(重要
我是花了好久時間才弄明白的
否則啟動不了!!!)
測試
先在 MYSQL 裡加用戶組
用戶
密碼留空也可
反正是測試
運行 /usr/local/proftpd/sbin/proftpd ftp localhost
用新加的用戶一試
哈哈是不是成了
題外話
要是想把 PROFTPD 放在 ntsysv 裡邊控制
呵呵加下面的腳本吧
建立 /etc/rc
d/init
d/proftpd 內容是
#!/bin/sh
case
$
in
start
)
echo
Starting professional ftp daemon: [OK]
/usr/local/proftpd/sbin/proftpd
d
touch /var/lock/subsys/proftpd
;;
stop
)
echo
n
Restarting professional ftp daemon: All Proftpd Process
rm
f /var/lock/subsys/proftpd
killall proftpd
;;
*)
echo
Usage: $
{ start | stop }
;;
esac
exit
可以用 /etc/rc
d/init
d/proftpd stop 來殺所有 proftpd 守護進程
用 /etc/rc
d/init
d/proftpd start 啟動一個進程
要是你不小心啟運了兩次就用一次 STOP 就可以了
From:http://tw.wingwit.com/Article/program/Oracle/201311/18445.html