iT邦幫忙

0

因為有兩台ftp主機身處不同地方
OS是linux
預計是裝suse或fedora

希望可以達到說以其中一台為主要的
另一台為副
某一台更動了ftp的帳號
另一台就自動也跟著變動

因為有朋友建議說可以用ldap但是太複雜,短時間要做的起來不容易orz
想請問是否有除了ldap以外方式可以達成此目標?謝謝

在A(Fedora)已裝有 pure-ftpd
現要在B(archlinx)再裝一台:
1.安裝pure-ftpd
$ mkdir pure-ftpd
$ cd pure-ftpd/
$ wget http://aur.archlinux.org/packages/pure-ftpd/pure-ftpd/PKGBUILD
$ wget http://aur.archlinux.org/packages/pure-ftpd/pure-ftpd/pure-ftpd
$ makepkg -g >> PKGBUILD
$ makepkg -s
# pacman -U pure-ftpd-1.0.29-3-i686.pkg.tar.xz

2.設定與A相同的使用者家目錄
3.把 pure-ftpd.conf 裡的帳號密碼檔,
定義到一般使用者的家目錄中:
PureDB /etc/pureftpd.pdb
(也可能是 /etc/pure-ftpd/pureftpd.pdb,依系統預設而定,
以下提到相關檔案,自行對照實際情況)
3.複製A的帳號密碼檔到B,
做法是A以root的身份scp 到B的檔案所在
#scp /etc/pure-ftpd/pureftpd.pdb USER@SERVER_B:/USER_HOME/pureftpd.pdb
#scp /etc/pure-ftpd/pureftpd.passwd USER@SERVER_B:/USER_HOME/pureftpd.passwd

4.
cd /etc; ln -s /USER_HOME/pureftpd.passwd; ln -s /USER_HOME/pureftpd.pdb

5.在B啟動pure-ftpd
6.在A再產生一個ftp用的虛擬帳號
pure-pw useradd user2 -u ftp -d /data/DIRECTORY
pure-pw mkdb

7.再scp這新的pureftpd.passwd, pureftpd.pdb 檔scp到B
此動作同上述的3.的指令
8.這時ftp到B台機器,用user2可順利登入。
由此可知帳密檔複製過去,pureftpd免重新啟動。

而上述的3.或7.的scp的動作,是要輸入帳號密碼,
稍後我再說明怎麼免帳號密碼的方式,
就應完全達到您要的目的。
如何免帳密來同步兩機器的FTP虛擬帳密,
以另外來做分享,請參閱:
SSH免密碼連線的設定步驟
10
逮丸逮丸
iT邦大師 1 級 ‧ 2010-11-25 07:55:32
最佳解答

您在問題中,沒提及這些帳號是只為FTP用?
還是也會在Web、Mail等其他服務用?
在此以只是單單為FTP下載用的情境來回答:

在FTP服務裡,可採用 virtual user 虛擬帳號有幾個,
其中 Pure-FTPd 的設定算是最簡單。

詳細可參考:
http://download.pureftpd.org/pub/pure-ftpd/doc/README.Virtual-Users
http://forums.freebsd.org/showthread.php?t=591
裡的設定說明。

簡單的做法大概是這樣:
1.在 /etc/pure-ftpd/pure-ftpd.conf 裡
把這一行的 # 拿掉:
PureDB /etc/pure-ftpd/pureftpd.pdb
就會以 指定的帳號密碼檔 為身分驗證的機制。

2.執行:
pure-pw useradd 帳號 -u ftp -d /該帳號的家目錄
來產生虛擬帳號,
會產生
/etc/pure-ftpd/pureftpd.passwd
這帳號密碼檔,
然後再執行:
pure-pw mkdb
來產生程式會讀的密碼檔 /etc/pure-ftpd/pureftpd.pdb

3.此密碼檔同步的方式:
(1)做一script檔,在產生帳號後,
同時透過sync或scp等方式,
將 pureftpd.pdb 複製到另台機器,
並把另一台的 pure-ftpd 重新啟動。

(2)仍是用 2. 的方式產生帳密,
而在另外一台以 crontab 的方式,
定時以比對另台帳密檔是否與本機不同,
如果不同就複製過來,並重新啟動pure-ftpd

如果不用ldap、radius、MySQL等單一驗證機制的話,
就只能靠script來同步虛擬帳號的方式,
達到您的目的。

kevin7326 iT邦研究生 1 級 ‧ 2010-11-25 10:14:29 檢舉

那想請問一下pureftpd.pdb
這個檔是否可以透過具有ftp存取能力的同步軟體來做到覆蓋功能?
另外每次複製完都需要重新啟動?

kevin7326 iT邦研究生 1 級 ‧ 2010-11-25 11:31:59 檢舉

不好意思說
pureftpd.conf是唯讀檔
可以把他改成可寫入嗎?@@

有關:

kevin7326提到:
這個檔是否可以透過具有ftp存取能力的同步軟體來做到覆蓋功能?
另外每次複製完都需要重新啟動?

回覆在討論裡,
請參閱。
而 pureftpd.conf 用root就可改該內容,
改好之後,也不大會有機會需再修改。

8
chang0206
iT邦新手 1 級 ‧ 2010-11-25 09:37:19

用sync的方式,多少都還會存在一些時間差,建議還是透過LDAP去認證吧。

kevin7326 iT邦研究生 1 級 ‧ 2010-11-25 16:14:42 檢舉

時間差是沒關係
因為會設定成說每天晚上自動備份一次

4
csyu
iT邦高手 1 級 ‧ 2010-11-25 13:26:34

chang0206提到:
建議還是透過LDAP去認證吧

LDPA容易嗎?

chang0206 iT邦新手 1 級 ‧ 2010-11-26 09:51:22 檢舉

LDAP 很討厭,設定很不方便 = =

6
pluto
iT邦研究生 1 級 ‧ 2010-11-26 01:51:06

The FTP account file on the active system can be replicated to the same file on the passive system.

In general, the account file is in /etc/passwd file. You can use a replication tool to sync data between active and passive server, it is doable.

10
kivava
iT邦新手 4 級 ‧ 2010-11-27 02:38:42

除了使用LDAP或同步密碼檔之外,也可透過SQL DB的方式儲存帳戶資訊並進行認證。

Pure-FTPd本身就能支援MySQL,可自定SQL queries,因此AAA資訊均可儲存於MySQL中,使用彈性很高

User info can also be centralized in MySQL databases, with or without transactions. All queries are fully customizable, and requests can be built with user names, remote client addresses, local IP addresses and ports. That way, complex hosting rules can be easily implemented, even with multiple virtual servers on the same host, and multiple virtual domains with many users.

同時也能支援同時多重認證機制

Multiple authentication methods can be chained in any order. For instance, SQL accounts, LDAP directories and system accounts can be used at the same time.

另外一種解決方式則是可以透過PAM,例如透過PAM POP3或者是PAM_MySQL,使用彈性也不錯,端看您需要哪種機制。

使用script同步passwd file是種解決方式,但有時會會因為lock, 使用權限,多重複寫的問題,而讓整個服務掛掉,如非必要,盡量不要在兩台上線機器上使用。

chang0206 iT邦新手 1 級 ‧ 2010-12-09 12:05:19 檢舉

有AD的話,可以考慮改用PAM去向AD認證唷~

我要發表回答

立即登入回答