我的低潮

•十二月 27, 2010 • 發表迴響

窮困潦倒

•十二月 16, 2010 • 發表迴響

未曾如此失望與無助過…

我的一切做法 都不曾對過

前前後後 該怎麼走

Proftpd(MySQL+Quotas)

•十二月 9, 2008 • 發表迴響

1、什麼是ProFTPD;ProFTPD 是一個FTP服務器程序,和vsftpd、wuftp 類似的FTP服務器,他們最終實現功能和目的都是一樣的,都是為了傳輸檔案;
2、ProFTPD的下載
proftpd-1.2.9.tar.gz
proftpd-mod-quotatab-1.2.11.tar.gz
(注意:如果你的mysql是自編譯安裝的,請先別忙著安裝,請至本文最後,看完補充再裝也不遲)

3、ProFTPD的編譯和安裝;
tar zvxf proftpd-1.2.9.tar.gz
tar zvxf proftpd-mod-quotatab-1.2.11.tar.gz
cp mod_quotatab/*.c proftpd-1.2.9/contrib/
cp mod_quotatab/*.h proftpd-1.2.9/contrib/
cd proftpd-1.2.9
./configure
–prefix=/usr/local/proftpd
–with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio
–with-includes=/usr/include/mysql
–with-libraries=/usr/lib/mysql
make
make install

說明:
–with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql
這句是讓編譯ProFTPD 支援MySQL的模塊,並有磁碟限額支援;
–with-includes=
這是來指定MySQL服務器includes所在的位置;在這裡我設置的是/usr/include/mysql,因為我的MySQL服務器的includes的確在這個目錄;你可以根據自己的機器環境來調整;
–with-libraries=
這是來指定MySQL服務器libraries所在的位置;在這裡我設置的是/usr/lib/mysql,因為我的MySQL服務器的libraries的確在這個目錄;你可以根據自己的機器環境來調整;
–prefix=
這是用來指定要把ProFTPD安裝在哪個位置,在這裡我把ProFTPD安裝在了 /usr/local/proftpd 目錄下,您不必自己建目錄 /usr/local/proftpd ,在安裝的時候這個目錄會自動生成;當然您也可以自己來指定ProFTPD的安裝位置;當我們不需要proftpd的時候,就可以直接刪除proftpd目錄;這樣做好像是有點方便;

創建Proftpd啟動腳本
cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd
vi /etc/rc.d/init.d/proftpd
找到PATH=』$PATH:/usr/local/sbin』這一句
將它改成PATH=』$PATH:/usr/local/proftpd/sbin』
chmod 755 /etc/rc.d/init.d/proftpd

4.建立相應的用戶和用戶組
groupadd -g 5500 ftpgroup
adduser -u 5500 -s /bin/false -d /bin/null -c 『proftpd user』 -g ftpgroup ftpuser

5、ProFTPD認證中的MySQL資料庫

QUOTE:
mysql -uroot -ppassword
create database ftpdb;
grant select、update on ftpdb.* to proftpd@localhost identified by ‘password’;
use ftpdb;

CREATE TABLE `ftpgroup` (
`groupname` varchar(16) NOT NULL default 』,
`gid` smallint(6) NOT NULL default ’5500′,
`members` varchar(16) NOT NULL default 』,
KEY `groupname` (`groupname`)
) TYPE=MyISAM COMMENT=’ProFTP group table’;

INSERT INTO `ftpgroup` VALUES (‘ftpgroup’、5500、’ftpuser’);

CREATE TABLE `ftpquotalimits` (
`name` varchar(30) default NULL,
`quota_type` enum(‘user’,'group’,'class’,'all’) NOT NULL default ‘user’,
`per_session` enum(‘false’,'true’) NOT NULL default ‘false’,
`limit_type` enum(‘soft’,'hard’) NOT NULL default ‘soft’,
`bytes_in_avail` float NOT NULL default ’0′,
`bytes_out_avail` float NOT NULL default ’0′,
`bytes_xfer_avail` float NOT NULL default ’0′,
`files_in_avail` int(10) unsigned NOT NULL default ’0′,
`files_out_avail` int(10) unsigned NOT NULL default ’0′,
`files_xfer_avail` int(10) unsigned NOT NULL default ’0′
) TYPE=MyISAM;

CREATE TABLE `ftpquotatallies` (
`name` varchar(30) NOT NULL default 』、
`quota_type` enum(‘user’,'group’,'class’,'all’) NOT NULL default ‘user’,
`bytes_in_used` float NOT NULL default ’0′,
`bytes_out_used` float NOT NULL default ’0′,
`bytes_xfer_used` float NOT NULL default ’0′,
`files_in_used` int(10) unsigned NOT NULL default ’0′,
`files_out_used` int(10) unsigned NOT NULL default ’0′,
`files_xfer_used` int(10) unsigned NOT NULL default ’0′
) TYPE=MyISAM;

CREATE TABLE `ftpuser` (
`id` int(10) unsigned NOT NULL auto_increment,
`userid` varchar(32) NOT NULL default 』,
`passwd` varchar(32) NOT NULL default 』,
`uid` smallint(6) NOT NULL default ’5500′,
`gid` smallint(6) NOT NULL default ’5500′,
`homedir` varchar(255) NOT NULL default 』,
`shell` varchar(16) NOT NULL default ‘/sbin/nologin’,
`count` int(11) NOT NULL default ’0′,
`host` varchar(30) NOT NULL default ’000-000-000-000′,
`lastlogin` datetime NOT NULL default ’0000-00-00 00:00:00′,
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT=’ProFTP user table’;

6.ProFTPD的配置檔案proftpd.conf
vi /usr/local/proftpd/etc/proftpd.conf

QUOTE:
ServerName      』ProFTPD Default Installation』
ServerType      standalone
ServerAdmin                     myunix@hotmail.com
DefaultServer      on
Port        21
Umask        022
# 注最多30個ip同時登錄使用ftp;
MaxInstances      30
# 設置最大的嘗試登陸的次數,如果超過自動斷開連接
MaxLoginAttempts                5
# 設置運行Proftpd服務的系統用戶和組
User        nobody
Group        nobody
# 匿名用戶 這裡不使用,前面加』#』注消
#
#   User        ftp
#   Group        ftp
# 刪除了anonymous登錄的設置

AllowOverwrite on

# 最大的用戶數
MaxClients      100
# 服務器的歡迎信息
DisplayLogin      welcome.msg
DisplayFirstChdir    .message
# 連接時的MSG
DisplayConnect /usr/local/proftpd/etc/connect.msg
DisplayGoAway /usr/local/proftpd/etc/goway.msg
# 輸入quit命令後的MSG
DisplayQuit /usr/local/proftpd/etc/quit.msg
MaxHostsPerUser 1
MaxClientsPerUser 2
# 對不起,一個IP只允許一個連接
MaxClientsPerHost 1

RootLogin off
RequireValidShell off
UseReverseDNS     off
IdentLookups      off
TimeoutStalled    600
TimeoutLogin      900
TimeoutIdle       600
TimeoutNoTransfer 600
# 讓proftp支援現在流行的FXP傳輸方式,預設是不支援的
AllowForeignAddress on
# 連接埠也可自己指定
PassivePorts 49152 65534
# 允許斷點續傳是預設支援的,不用設置
# 這裡有一個技巧,你可以控制FTP中任一個目錄有』斷點續傳』的功能,請設置下面一行,(例:)

AllowStoreRestart      on
AllowRetrieveRestart   on

# 屏蔽服務器版本信息
ServerIdent off
# 設置ftpuser組只能訪問自己的目錄
DefaultRoot ~ ftpgroup

#——– load sql.mod for mysql authoritative ——–#
# Backend表示用戶認證方式為MySQL資料庫的認證方式
# Plaintext表示明文認證方式,排在最前面的為最先使用的方式
SQLAuthTypes Backend Plaintext
# 資料庫的鑒別
SQLAuthenticate users* groups*
# 資料庫聯接的信息
# ftpdb是資料庫名,localhost是主機名
# proftpd是連接資料庫的用戶名,password是密碼
#(如果沒有密碼留空)
SQLConnectInfo ftpdb@localhost proftpd password
# 指定用來做用戶認證的表的有關信息
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
# 如果用戶主目錄不存在,則系統會根據此用戶在用戶資料表中的homedir字段的值新建一個目錄
SQLHomedirOnDemand on
SQLNegativeCache   on
# Update count every time user logs in
SQLLogFile /var/log/proftpd.sql.log
SQLNamedQuery getcount SELECT 『count from ftpuser where userid=’%u’』
SQLNamedQuery getlastlogin SELECT 『lastlogin from ftpuser where userid=’%u’』
SQLNamedQuery updatelogininfo UPDATE 『count=count+1,host=’%h’,lastlogin=current_timestamp() WHERE userid=’%u’』 ftpuser
SQLShowInfo PASS 『230″ 『You’ve logged on %{getcount} times、last login at %{getlastlogin}』
SQLLog PASS updatelogininfo
#——– load sql.mod for mysql authoritative ——–#

#——– load qudes.mod for Quota limit ——–#
#打開磁碟限額引擎
QuotaEngine on
# 設置磁碟限額
QuotaDirectoryTally on
# 設置磁碟容量顯示時的單位
QuotaDisplayUnits Mb
# 允許顯示磁碟限額信息,ftp登錄後可執行quote site quota命令查看當前磁碟使用情況
QuotaShowQuotas on
# 設置磁碟限額日誌檔案
QuotaLog 『/var/log/proftpd.quota.log』
# 指定磁碟限額模塊使用的資料庫信息
SQLNamedQuery get-quota-limit SELECT 『name、quota_type、per_session、limit_type、bytes_in_avail、\
bytes_out_avail、bytes_xfer_avail、files_in_avail、files_out_avail、files_xfer_avail FROM ftpquotalimits \
WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’』
SQLNamedQuery get-quota-tally SELECT 『name、quota_type、bytes_in_used、bytes_out_used、\
bytes_xfer_used、files_in_used、files_out_used、files_xfer_used FROM ftpquotatallies \
WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’』
SQLNamedQuery update-quota-tally UPDATE 『bytes_in_used = bytes_in_used + %{0}、\
bytes_out_used = bytes_out_used + %{1}、bytes_xfer_used = bytes_xfer_used + %{2}、\
files_in_used = files_in_used + %{3}、files_out_used = files_out_used + %{4}、\
files_xfer_used = files_xfer_used + %{5} \
WHERE name = ‘%{6}’ AND quota_type = ‘%{7}’』 ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT 『%{0}、%{1}、%{2}、%{3}、%{4}、%{5}、%{6}、%{7}』 ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
#——— load qudes.mod for Quota limit ——–#
# Logging options
# Debug Level
# emerg、alert、crit (empfohlen)、error、warn. notice、info、debug
#
SyslogLevel emerg
SystemLog /var/log/proftpd.system.log
TransferLog /var/log/proftpd.xferlog
# Some logging formats
#
LogFormat default 『%h %l %u %t 『%r』 %s %b』
LogFormat auth 『%v [%P] %h %t 『%r』 %s』
LogFormat write 『%h %l %u %t 『%r』 %s %b』
# Log file/dir access
# ExtendedLog /var/log/proftpd.access_log WRITE,READ write
# Record all logins
ExtendedLog /var/log/proftpd.auth_log AUTH auth
# Paranoia logging level….
ExtendedLog /var/log/proftpd.paranoid_log ALL default

service proftpd restart

QUOTE:
mysql> DESCRIBE quotalimits;
+——————+————————————+——+—–+———+——-+
| Field            | Type                               | Null | Key | Default | Extra |
+——————+————————————+——+—–+———+——-+
| name             | varchar(30)                        | YES  |     | NULL    |       |
| quota_type       | enum(‘user’,'group’,'class’,'all’) |      |     | user    |       |
| per_session      | enum(‘false’,'true’)               |      |     | false   |       |
| limit_type       | enum(‘soft’,'hard’)                |      |     | soft    |       |
| bytes_in_avail   | float                              |      |     | 0       |       |
| bytes_out_avail  | float                              |      |     | 0       |       |
| bytes_xfer_avail | float                              |      |     | 0       |       |
| files_in_avail   | int(10) unsigned                   |      |     | 0       |       |
| files_out_avail  | int(10) unsigned                   |      |     | 0       |       |
| files_xfer_avail | int(10) unsigned                   |      |     | 0       |       |
+——————+————————————+——+—–+———+——-+

這個表裡的各個參數分別代表:
name 應該這樣理解,既能表示單個用戶,也能表示用戶組名;如果我們在quota_type(限額類型)中使用group來認證的話,那就得在這裡設置組名,這樣整組都具有統一的磁碟限額的特性;當然您要在ftpgroups表中插入組紀錄;並且在member字段中得把用戶一個一個的列進去,這是後話了;先自己研究一下,只是插入紀錄的事;我們只說最簡單的單個用戶的磁碟限額;預設值可以為空NULL,如果為空則針對所在有quota_type中設置的類型,比如在quota_type中設置為user ,就是針對所有ftpusers 中的用戶起作用;如果是group名,也是對ftpgroups 所有組作用;
quota_type 磁碟限額類型,可以設置為用戶,也可以設置為用戶組group ;如果您的name寫的是用戶組,那在這裡就得設置為group來認定;預設為user認證;
per_session 預設為false;
limit_type 預設為soft;
bytes_in_avail 用戶佔用空間大小,也就是家目錄的空間最大可以讓用戶佔用多少,單位是byte;預設為0,0是不受限制,以下同理;
bytes_out_avail 注;所有下載檔案的總和,預設為0;
bytes_xfer_avail 注;一個用戶上傳下載流量總和,預設為0
files_in_avail 註:限制上傳檔案總數,預設為0;
files_out_avail 注;限制下載檔案個數總計,預設為0
files_xfer_avail 註:允許下載和上傳的檔案總和我,預設為0;

在資料庫ftpuser添加一個虛擬用戶』test』,
mysql> insert into ftpuser (id,userid,passwd,uid,gid,homedir,shell) values (’1′、’test’,'test’,’5500′,’5500′,’/home/test’,'/sbin/nologin’);

如果想刪除一個用戶,您可以用 MySQL的delete 指令;比如我想刪除test這個用戶;
mysql> delete from ftpusers WHERE userid=』test』;

如果想更新一條用戶紀錄,比如test用戶密碼字段;
mysql> update ftpuser set passwd=』123456″ where userid=』test』;

如果你想設置quota,只要在ftpquotalimits表裡設置一下就行了
我們比如想讓test用戶,約束空間大小為100M,其它不受限制;則可用下面的mysql命令添加;
insert into ftpquotalimits (name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail) values (‘test’、’user’、’true’、’soft’、’104857600′、’0′,’0′,’0′,’0′,’0′);

運算公式:
1Kb=1024 byte
1M=1024 Kb
100M=100×1024 Kb= 100x1024x1024 byte=104857600 byte
注意:磁碟限額生效,必須讓FTP用戶重新登錄才有效;比如test用戶正在ftp上,這時要先退出,然後再登錄,這是磁碟限額就有效了;

7.設置ftp登陸歡迎信息檔案:
%T 目前的時間
%F 所在硬碟剩下的容量
%C 目前所在的目錄
%R Client 端的主機名稱
%L Server 端的主機名稱
%U 使用者帳戶名稱
%M 最大允許連接人數
%N 目前的服務器連接人數
%E FTP服務器管理員的 email
%i 本次上傳的檔案數量
%o 本次下載的檔案數量
%t 本次上傳+下載的檔案數量

vi /home/test/welcome.msg

引用
歡迎您%U,這是Frank的測試FTP服務器;
目前時間是:%T;
本服務器最多允許%M個用戶連接數;
目前服務器上已有%N個用戶連接數;
目前你所在的目錄是%C;
目錄所在的硬碟還剩下%F字節。

如果你的mysql是自編譯的,需要按照以下補充,解決問題

QUOTE:
補充:
第3步前修改「/etc/ld.so.conf」
vi /etc/ld.so.conf
找到:/usr/lib/mysql
改成:/usr/local/mysql/lib/mysql
如果沒有這一行,直接當一行
然後方可安裝第3步

請重新指定mysql的lib及includes目錄(例:我的mysql是安裝在:/usr/local/mysql)
./configure \
–prefix=/usr/local/proftpd \
–with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio \
–with-includes=/usr/local/mysql/include/mysql \
–with-libraries=/usr/local/mysql/lib/mysql

以下列出安裝mysql的三個錯誤,請對症下藥
1.
make[1]: *** [mod_sql_mysql.o] Error 1
make[1]: Leaving directory `/usr/local/file/proftpd-1.2.9/modules’
make: *** [modules] Error 2

vi contrib/mod_sql_mysql.c
找到:#include
改成:#include

2.如果按上面的方法修改仍然有同樣的錯誤,需修改
make[1]: *** [mod_sql_mysql.o] Error 1
make[1]: Leaving directory `/usr/local/file/proftpd-1.2.9/modules’
make: *** [modules] Error 2

vi contrib/mod_sql_mysql.c
找到:1293行
把:make_scrambled_password(scrambled、c_clear、1、NULL);
改成:make_scrambled_password(scrambled、c_clear);

3.
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [proftpd] Error 1

cp /usr/local/mysql/lib/* /usr/lib/

Windows和Linux應用程式對照表

•十一月 1, 2008 • 發表迴響

      Windows            Linux
      ——-            —–
Microsoft Office    OpenOffice, StarOffice
Microsoft Word      Abiword
FrameMaker          Kword
PageMaker           Scribus
PhotoShop           The GIMP
Visio               Dia
Acrobat Distiller   OpenOffice
Acrobat Reader      Acrobat Reader, gv, xpdf
Front Page          amaya, Netscape, Mozilla, bluefish
DocBook             DocBook
Adobe Type Manager  type1inst, xfs, xfstt
StarTeam            cvs

輕視

•十月 15, 2008 • 發表迴響

我無意再忍受下去

我一直記得三星期前 陳怡伶的態度

讓我失望又憤怒

無所謂了….. 我不需要瞧不起我的朋友

但我仍感覺一絲的悲哀

過敏

•十月 15, 2008 • 發表迴響

這2年來..我的身體開始對氣候與環境開始有了過敏的反應

這樣的情況比我想的還糟

也衍生出..輕微氣喘的毛病  應該是不致命

但醫生說我是先天性氣喘 當然過敏與氣喘是有相關的

很困擾 很沮喪

心發毛

•七月 28, 2008 • 發表迴響

颱風天
傍晚跟朋友聊MSN,她突然說』不然待會兒我下班我們去淡水觀浪』
我回答』好啊』

晚上七點多 我朋友已經開車到我住處附近
我要出門時卻開始下大雨….
很狼狽的坐上朋友的車一路往淡水方向開過去
一路上風雨並不大
到了淡水一起吃了一點東西後 又往前繼續開

淡水往三芝有段路有樹有緩坡
過了這段路之後 左手邊遠處就是海了
若是在白天也可以清楚的看見

再往前開…就是中間有分隔島的雙向濱海公路
往左前方看過去有一塊空地 空地再左邊就是海了
但其實那邊都是石頭 不過已經可以清楚的看見海浪
白白的泡沫浪花 一波波的被推了過來

再往浪花源頭看過去 也只盡是一片黑
朋友把車停妥之後..並沒有熄火 且 車內小燈是亮著的
整個位於公路下方的停車場只有我們
僅管車外的風勢熱鬧的很….
我拉開車門把…風勢很強 似乎以想把車門扯下的力量 吹開了車門
若沒有把持著 或許門栓就壞了

當下與朋友頂著強風觀浪
我感覺到有點不一樣
我有著怕朋友車被』誰』開走的隱憂
風還是很大 我覺得越來越冷
向著岸邊的浪花依然一波波的被海水往這邊推
我覺得海中深處的黑.. 一直在看著我
風還是很大 除了冷 我開始覺得抖
我問了朋友 『妳車 熄火了嘛』
我的眼角餘光 讓我覺得有』誰』在車上 但我不想正視 不願證實
整個停車場 空蕩蕩
朋友走回車旁打開車門
『沒熄火啊』
風一直很大 除了更冷 還有更抖 我整個人毛了
我對朋友說 『如果妳不想多停留 想走就走人吧』
『還好啦 只是有一種很怕的感覺』
『很怕浪會突然 打過來』
我是怕浪花的泡沫消散之後 會讓什麼顯露了出來
我不想讓朋友知道我現在的感覺
因為她好像也在怕什麼 但不知道我更怕 且一下車後沒多久就怕了
她終於說..我們走吧
回到車上 我像是離開了冷凍庫一樣
快離開吧 我心中這麼想
朋友卻把卡帶從音響裏退出來 且不急不徐的轉身到後座 從箱子裏再選另一塊

我很急 卻不能說
終於 我們開上了回程的道路
只是我才正開始要』退冰』
到了淡水之後..我感覺才逐漸和緩

可能是整晚的情緒都太過緊崩 導致我現在脖子很痠
希望晚上能睡的好

為惡

•七月 25, 2008 • 發表迴響

我一直有個想法

我想在這兒,把我對她的感想,完整且赤裸的描述出來

用她的真名 …

蠢啊……  她都知道我是oceanyen了

我若真的這麼做,我覺得她可能會告我

我倒是希望她告我,坐牢的滋味坦白講我蠻想試試的

只是..若她沒有對我採取一些治裁手段的話

那我就會更喜歡她了 (我現在有喜歡她嘛… 只有一點點吧 因為 我還是覺得她那張臉很假)

翱翔

•六月 16, 2008 • 發表迴響

待我背部的骨骼 衍生出一對翅膀

我就能夠翱翔

但也帶來巨痛的傷

•四月 24, 2008 • 發表迴響

怠惰至死

 
Follow

Get every new post delivered to your Inbox.