sudo sshfs $remoteuser@$remote:$remotedir /mnt/$remotedir -o sshfs_sync -o default_permissions,allow_other,kernel_cache,hard_remove
2009年12月28日 星期一
2009年12月11日 星期五
用sed解決SSH Key指紋不合
sed -i -e '5d' .ssh/known_hosts
2009年11月10日 星期二
Virtual Hosting With vsftpd And MySQL On Ubuntu server Koala
參考資料:
Virtual Hosting With vsftpd And MySQL On Debian Etch
簡單的說,拜PAM認證模組的福,所以可以把vsftp的帳號認證模組抽換給mysql資料庫處理。好處是,這樣不用在主機多開實體帳號才能使用ftp功能,畢竟每多一個實體帳號,就多一分風險。至於虛擬的帳號再怎麼胡搞,出事了就把對應的實體帳號封殺再善後,也多一份簡潔。ok,不廢話,第一步驟,把該裝得裝好
apt-get install vsftpd libpam-mysql mysql-server mysql-client
安裝到mysql-server就會叫你設定mysql root密碼,不知道這是啥,謝謝,再聯絡。
使用netstat –tl | grep mysql 檢查是否mysql已經上線。Howto建議把網域連線方式也先設定密碼
mysqladmin -h $server1.example.com -u root password $yourrootsqlpassword
我個人是打算用防火牆方式阻斷實體存取。
接下來順序我稍微跟Howto有點差異,先建構完vsftpd設定,再設定PAM,最後搞定SQL DB。
首先製造出這位專門替ftp背黑鍋的實體使用者vsftpd
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
然後修改/etc/vsftpd.conf
mv /etc/vsftpd.conf /etc/vsftpd.conf_orig
vi /etc/vsftpd.conf << EOF
i
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
^]
ZZ
EOF
重點設定值如上。然後做出針對個別使用者帳號的詳細設定檔存放的目錄
mkdir /etc/vsftpd_user_conf
接下來設定PAM,注意到$ftpdpass是等一下mysql裡存取vsftpd的密碼
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
vi /etc/pam.d/vsftpd << EOF
i
auth required pam_mysql.so user=vsftpd passwd=$ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=$ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
^]
ZZ
EOF
回到MySQL 設定,首先登入
mysql -u root -p
輸入完密碼,開始開資料庫內動作,先建立vsftpd
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY '$ftpdpass';GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY '$ftpdpass';
FLUSH PRIVILEGES;
接下來建立資料表
USE vsftpd;
CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
) ENGINE = MYISAM ;
然後塞一筆測試帳號看看
INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
quit;
重新啟動vsftpd
/etc/init.d/vsftpd restart
然後用ftp連線自己看看,測試可以就算ok囉。
2009年10月21日 星期三
2009年10月20日 星期二
2009年9月18日 星期五
ssh over autofs
SSHFS (Secure SHell FileSystem) is a file system for Linux (and other operating systems with a FUSE implementation, such as Mac OS X or FreeBSD) capable of operating on files on a remote computer using just a secure shell login on the remote computer. On the local computer where the SSHFS is mounted, the implementation makes use of the FUSE (Filesystem in Userspace) kernel module. The practical effect of this is that the end user can seamlessly interact with remote files being securely served over SSH just as if they were local files on his/her computer. On the remote computer the SFTP subsystem of SSH is used.先引用一下Man page省我一點口舌,SSHFS就是透過ssh連線把對方的檔案拉過來當自己檔案系統的一部分,好處是ssh連線是加密的,而且可以用金鑰認證省去每次打密碼的麻煩。
DESCRIPTION
autofs control the operation of the automount(8) daemons running on the Linux system. Usually autofs is invoked at system boot time with the start parameter and at shutdown time with the stop parameter. The autofs script can also manually be invoked by the system administrator to shutdown, restart or reload the automounters.再引用autofs的描述,就是一種技術,當你需要檔案系統某部份的時候,系統就會自動根據路徑去自動掛檔案系統(種類很多),讓你根本不用動用系統底層去處理掛載與卸載的問題,專注於你要做的事情之上。
兩者結合在一起,就可以達到安全存取遠端少量且重要的檔案的需求,瞬間拉進來就好像長在本地一樣。
第一步,用金鑰加速連線遠端主機(名$RmoteHost)省去認證
提示:設定$RemoteHost:/etc/ssh/sshd_config
PubkeyAuthentication yes將你的金鑰中公鑰放進去信任名單
AuthorizedKeysFile %h/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub $RemoteHost:\.ssh/authorized_keys如果沒有金鑰,你問題好大,麻煩去找鎖匠(man ssh-keygen)打一副再回來重練。
然後遠端設定就完成了(什麼?就這樣?),是的,對方只有設定完accept ssh public-key 就大致完成了,什麼連線要多久中斷之類還可以微調,不過不重要。本機機器設定以UBUNTU 9.04 為示範(本機$LocalHost,因為本人從BSD帶來的壞習慣,都是直接用root不用sudo)。
首先安裝套件sshfs autofs
apt-get install sshfs autofsautofs有autofs4、autofs5新舊版之分,可以試試看新版,應該不會導致系統爆炸。sshfs是依賴於系統核心fuse模組,因為UBUNTU 9.04是直接把它編在核心裡,不再放在外掛模組,所以也不用多加理會,把自己加進可以使用fuse的群組
adduser $USER fuse接下來只要設定autofs完成,就可以享受這成果了。
編輯/etc/autofs.master,加入sshfs設定
/mnt/ssh /etc/auto.sshfs uid=1001,gid=1001,--timeout=300,--ghost
/mnt/ssh就是autofs掛載起始點 設定掛進來給uid 1001 與 gid 1001的人用,不知道是誰就趕快翻翻/etc/passwd。設定過300秒就斷線。
然後繼續編寫/etc/auto.sshfs
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage
skb -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#$RemotUser@$RemoteHost\:
範例看得很清楚,此時只要你要求/mnt/ssh/skb下面檔案,就會自動通到$RemotUser@$RemoteHost,基本上就是他的家目錄,也就是你一開始拷鑰匙過去的人家,這時候天涯若比鄰,你家就是我家!!
對了,記得叫autofs開機自動跑
/etc/init.d/autofs start
參考資料:Totally Seamless SSHFS under Linux using Fuse and Autofs
2009年9月17日 星期四
VMware安裝 @ Ubuntu
近欠很多篇筆記喔 哈
首發就來這個在ubuntu 9.04上安裝VMware Server 的筆記。
為什麼這時候棄Virtual Box不用?很簡單,64 位元。首先去VMware 下載,Server 2免費的,不過要註冊,不用錢。
下載的時候,因為公司控管頻寬只能衝到450k,所以我決定在家裡遙控下載,可以衝到700k。本來是用lynx來下載,一樣可以https連線,登入存cookies,不過下載後搬到/var/tmp/lynx/$sessionxxx的鬼,靠~所以反正是實驗,就給她硬上Xorg與 firefox 3.5,然後遠端執行Firefox下載。
安裝的方法,rpm的方法不紀錄。VMware-server-$Version.tar.gz就是剛剛下載的tarball,就把它解開
tar xzvf VMVMware-server-*.x86_64.tar.gz
會得到vmware-server-distrib這目錄,執行裡面的vmware-install.pl就會開始文字介面的安裝VMware。因為這是現場編譯很多模組,因此有很多基本功夫要先打底,不然等一下被考倒重考很尷尬,我不甲意這種感覺。
apt-get install build-essential vmware-package
其中因為會用到核心的C headers,所以要抓來核心補完計畫。方法事先檢查現在用的核心是啥版本
uname –a
然後安裝你的對應版本
aptitude install linux-headers-2.6.$version
把它作個符號連結,偽裝成/usr/src/linux。
全部跑過以後,包含你腦袋清楚的設定完Bridge, NAT,Hostonly的網路組態後,我是用網路連線進去組態。直接打開瀏覽器,輸入http://$VMhost:8222就可直通到主控台,更神奇的是加裝外掛後,瀏覽器就可以直接開啟虛擬機器的主畫面,可以開始安裝。
2009年9月4日 星期五
[OpenBox] 隨著X啟動程式
話說拿著那個退役筆電當第二個監控螢幕,把它用最精簡的X裝法完成。但是我想讓它自己開機就會進入pcmanx 監控。以下就是簡述
因為監控程式moni是用4gl的程式,所以一定要使用pcmanx才能繪出畫面,所以第一步驟簡化就是前面用過得getty –l 自動登入技巧。
第二步驟,在.bash_profile寫入一個
if [ $TERM==linux ] ; then
startx
fi
這樣當tty登入,就會接著啟動x視窗。
自動啟動xinit後,本來查到的文件叫我直接寫~/.xsession或~/.xinitrc,不過我發現那太鳥了,因為她是在WindowManager前執行,所以就是醜醜的x加上你要開的程式…
OpenBox說,寫Autostart。執行程式的寫法是
( sleep 1 && Name_of_Program )&
最後,因為Ray會貼心的幫我關機省電,But這台老筆電沒有電源管理,所以按下開關,就真的斷電關機了。因此,我在root的cron table加入關機指令(ㄜ 如果你永遠可以準時下班 ),從此,這台筆電就真的「家電化」,按電源開!時間到關!Yes!!
2009年8月21日 星期五
Config a linux NAT
為了省錢,於是我決定將主機多插一張網卡,壓一條CrossOver的線來讓筆電上網,然後按部就班的完成了DHCPd的設定。
UBUNTU安裝dhcpd要裝dhcp3-server套件,然後編輯dhcpd.conf設定,非常簡單,所以不贅述。
BUT,讓我困惑了三天的事情是,設定完DHCP與route,怎麼著就是不通咧?
依照以前ccna的經驗,你只要有確定的Route,那就會通啊…結果,因為DHCP發給的是private ip,linux的預設動作是會discard掉,但是Cisco router才不管你是不是private ip,你就算設定一大堆10.0.0.0/24到172.16.0.0./24再去192.168.0.0/24,只要routing table裡面有,就送!所以可以用private IPs建立起很複雜的WAN與LAN共用。
linux建議,加用這條NAT轉址,才會把封包前進,假定我172.16.0.0/24是eth1(DHCPd),192.168.0.0/24是eth0
iptables –t nat –A POSTROUTING –s 172.16.0.0./24 –o eth0 –j MASQUERADE
做到這裡,令人想唱~~ ㄜ 我的憤怒,好像一把火,燃燒了整個沙漠~~太陽見到我,也要躲著我…
2009年8月18日 星期二
從Cron或AT啟動X window Client
#!/bin/sh
/usr/bin/xterm -display :0.0 -e "Name_Of_The_Client"
2009年7月24日 星期五
Flash Plugin 無法正確顯示中文
首先介紹如何安裝Adobe Flash Plugins
- 到ADOBE下載Tarball回來
- 把.so解壓縮到/usr/lib/firefox/plugins,或~/.mozilla/plugins。前者Firefox專用,後者使用者所有瀏覽器共用。
好啦,真是簡單。不過一開小狐狸,怎麼有些帶有中文字的flash都變成方塊字?雖然中文真的是方塊字,但不是很多方塊堆在一起就是中文…解決辦法拜眾家高手,求得如下:
編輯/etc/fonts/conf.d/49-sansserif.conf
找到
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>
替換為有中文的字型,比如說”文泉驛正黑”,這樣就ok。
2009年7月22日 星期三
Apache Module mod_dav
WebDAV,一個不常聽到的功能(因為不好管嗎?),名字是Web-based Distributed Authoring and Versioning,使用HTTP協定讓妳對Web server裡面的檔案上下其手。換句話說,Web Server上傳方式不再透過ftp,防火牆將不需要開放port 21。
分成兩方面來講,首先是FreeBSD平台的Apache( V2.2),打開httpd.conf LoadModule 確定幾樣東西都有一起出操:
LoadModule dav_module
LoadModule dav_fs_module
LoadModule auth_digest_module
FreeBSD的dav設定檔是用Incloud的
# Distributed authoring and versioning (WebDAV)
Include etc/apache22/extra/httpd-dav.conf
打開編輯,範例如
--------------------------------------------------------
DavLockDB "/opt/usr-local/var/DavLock"
#存放Lock狀態資料庫的位置
Alias / "/opt/usr-local/www/apache22/data"
#開放的語法
<Directory "/opt/usr-local/www/apache22/data">
Dav On
Order Allow,Deny
Allow from all
#認證方式
AuthType Digest
AuthName www
#認證完畢 登入系統的等效帳號是www
AuthUserFile "/usr/local/user.passwd"
AuthDigestProvider file
<LimitExcept GET OPTIONS>
require user admin
</LimitExcept>
</Directory>
---------------------------------------------------------
接下來,產生密碼檔
htdigest -c "/usr/local/user.passwd" www admin
第二部份,就是在Client的設定。Client有很多種,WebDrive、Gnome VFS都名列其中。不過這裡很簡單,最多本系學生用的應該是DreamWeaver,只需要在SiteManager指定WebDAV方式上傳,上傳位址是剛剛設定的網頁位址,上傳帳號admin,搞定。
ok,接下來為什麼很少有人這樣搞?原因很簡單,一般防火牆是從layer 3檢查ip封包來限制存取(主要在這裡,是要防止被寫入,免得首頁被改圖),http GET POST等方法必須要拆開封包檢查,不是layer3能解決的(或者說,這需要消耗運算資源、高檔防火牆),因為HTTP服務”一定”是對全世界服務(所以,不斷線就是可以用暴力攻擊)。第二重點,在檔案系統裡面讀寫權限要設定好,不然真的很容易就統統被人看光了不打緊,還被入侵。
比較好的想法是,在另一個port(如加SSL)跑另一個有DAV功能的apache(耶?沒想到吧!),就可以在layer 3檢查連線來源來限制。
2009年7月17日 星期五
誤闖非軍事管制區
DMZ (這不是表情符號,謝謝)
在電腦網絡中, DMZ (Demilitarized Zone) 為一個放於企業私人和互聯網之間作為緩衝地帶的電腦主機或小型網路。它防止了外來入侵者直接存取放有企業內部資料的伺服器。INTERNET使用者只可以存取 DMZ 中的電腦。一般 DMZ 都會有企業網站,供外界提查詢及使用。但不包括企業內部機密資料。如不幸外來入侵者侵入 DMZ 並令網站癱瘓,重要的企業資料仍不會外泄。
一般DMZ設置時會將ip規劃與後方NAT保護的ip是不同區段(防止layer 3的滲透)。
話說在公司用Outlook Express收信,自從某事件發生後,常常連不到郵件伺服器。直到方才靈光一閃,決定正式查一下。nslookup指出郵件伺服器ip是192.168.0.1。公司給電腦的ip是172.16.xx的Class B位址。為了讓更多設備一起上線(這ip寶貴的原因是,很多對外重要伺服器連線都是ACL鎖住這ip)所以我用一台Dlink 704UP做NAT。巧的是,Dlink 704UP的NAT一定是192.168.0/24的區段,所以再沒有通道或其他奇技淫巧之前,保證一輩子都收不到信。
Network File System Server
NFS在網路夠快(LAN)的時候,可以解決很多空間與同步的問題。不過也有一個問題,當其中一個出問題的,所有的nfs都會很有義氣的一起倒地不起,所以要當NFS,就要夠穩。
基礎概念就是三隻程式互相幫助,rpcbind在櫃台帶路、nfsd負責提供茶點餐、mountd送餐。(等等~這比喻遣詞用字怪怪的,誰做菜啊)。
FreeBSD做NFS很簡單,步驟不多,只要你沒有手殘在編kernel時拿掉NFS選項。
打開/etc/rc.conf加入
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
然後編輯/etc/exports說明本機開放分享的目錄為何。格式有三欄,與linux的格式略有不同(!!)。第一欄是目錄,同一個檔案系統只能寫一行。所以比如說/usr是一單獨分割的檔案系統,那麼/usr/src /usr/local就要寫在同一行。第二欄是參數,第三欄是分享對象。不同於linux可以寫在一起成為 對象(參數)。
然後把這三位喚醒,就有nfs服務了
# rpcbind
# nfsd -u -t -n 4
# mountd -r
如果有編輯/etc/exports設定,就叫mountd重新讀取
/etc/rc.d/mountd onereload
如果有要lock服務免得多人同時存取造成錯亂,就在/etc/rc.conf加入
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
接下來用showmount –e $host來檢查,是不是真的成功了。
ubuntu裝法也不難,就加兩個套件
apt-get install nfs-common nfs-kernel-server
然後編輯/etc/exports
一樣借用啟動程序
/etc/init.d/nfs-kernel-server start
ok,這樣就搞定了。
2009年7月14日 星期二
Ubuntu Linux Box – Serial Console
Origin : http://www.debuntu.org/how-to-set-up-a-serial-console-on-debian
首先確認你自己的系統上面有沒有ttyS0
$ dmesg | grep tty
[ 4.702353] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 4.702511] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 4.703397] 00:0e: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 4.703687] 00:12: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
這表示你的Serial Port可以衝到最高16500Bps的速率。當然,這前提是,你的box有顯示卡,或者,你可能已經正在用Serial Console,如果你只是先在別的環境下安裝系統,這指令可能沒啥幫助。
第一步驟,叫getty開始去監聽ttyS0,ubuntu新版作法是編輯/etc/event.d/ttyS0
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /sbin/getty -L 115200 ttyS0 vt102
或者,你也可以偷抄襲tty0。
較舊的Debian要修改inittab
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100
然後重起init
第二步驟,修改Grub啟動參數
首先讓grub認識ttyS0,加入下面介紹
# Enable console output via the serial port. unit 0 is /dev/ttyS0, unit 1 is /dev/ttyS1...
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=7 serial console
然後再核心啟動參數後面加上
console=ttyS0,115200n8 console=tty0
好啦,這樣就完成了。如果你發現你的老電腦居然沒有115200Bps HiSpeed,那,參數自己往下降到57600、38400試試看,重點是,Null Modem兩端協定要一樣,不然,亂碼看不懂。
Todo list 0714
開單啦
- Install and config the follow server With UBUNTU:
apache
samba
nfs
vsftpd
- Create croned Rsync between amule Incoming and samba
2009年7月10日 星期五
2009年7月9日 星期四
被dd-wrt擺道
話說昨晚嘗試把dd-wrt上SSH換port,讓port22空出來給後面主機直接使用。NAT也都設定好了,奇怪,怎麼連都還是只有進dd-wrt?是我錯了嗎?是我錯了嗎?是…我錯了
在最後Administration一頁裡面,SSH Remote Port還開在22(啊~有雷!!)等一覺睡醒,神清氣爽,回頭詳細檢查一遍,嗯,dd-wrt你好樣的…昨晚都是玩假的就對了
嗯,為什麼要把ssh 穿透給後面主機去做呢?因為理由很簡單啊,後面主機的ssh功能強、花樣多,又可以搭專員ssh-agent,又可以派警衛ssh-guard,幹麼要把router放在第一線給人破啊?
2009年7月8日 星期三
不怎麼先進的Jail換血
#!/bin/sh
export mroot2=/home/mroot2 # the New mroot
export mroot=/home/mroot # the Origin mroot
export opt=opt # The MountPoint to sew skel with mroot
if [ ! -d $mroot2 ]; then mkdir $mroot2 ; fi
cd /usr/src
make installworld DESTDIR=$mroot2
cd $mroot2
chflags 0 /home/mroot2/var
rm -rfv etc home root tmp var usr/local usr/X11R6 usr/ports
if [ ! -d $opt ]; then mkdir $mroot2/$opt ;fi
for dirs in etc home root tmp var
do
echo " ln -s /opt/$dirs $dirs"
ln -s $opt/$dirs $dirs
done
ln -s ../$opt/usr-local usr/local
ln -s ../$opt/usr-X11R6 usr/X11R6
ln -s ../$opt/usr-ports usr/ports
cd /
ls /var/run | grep jail | sed -e 's/jail_//g' -e 's/\.id//g' |xargs > /tmp/jlist$$
/etc/rc.d/jail stop `cat /tmp/jlist$$`
for mounted in `cat /etc/fstab | grep nullfs | grep -v ^# | awk '{print $2 }' | sort -r `
do
echo umount $mounted
umount $mounted
done
echo " You should make sure the FileSystem Umount properly."
cat /etc/fstab
echo " Now a Subshell for you th Umount Filesystem manually."
echo " If this fails too, you might take a reboot, "
echo " and Move mroot2 to mroot by hand."
/bin/sh
df
echo " You should have made sure the FileSystem Umounted properly."
echo " Or press [Ctrl C] to stop in 7 seconds"
sleep 8
mv $mroot $mroot.bak
mv $mroot2 $mroot
mount -a
/etc/rc.d/jail start `cat /tmp/jlist$$`
rm /tmp/jlist.$$
echo “ Take a check. “
2009年7月1日 星期三
ASUS WL-520GU 刷DD-WRT
終於狠下心,敗了台Wl-520GU,單純就是為了刷機(ㄜ...雖然說紐頓只賣1150,不過純粹了刷機實驗,就敗機器,也算是一絕),比起當年敗Apple Airport Extreme的哲學已經好很多了。(阿就是:就算她又貴功能又不多,至少到最後我知道她是美麗的。)
刷機是簡單的,不要害怕,跟著做就對了。首先拔掉插頭,然後按著Reset按鈕,插上插頭,直到電源LED指示為一閃一閃,這就是救援模式,然後就可以用公用程式裡面的Firmware Restoration刷進新的韌體。
520GU具有4MB的Flash,所以很多版本可以選擇,不過比起Mega就是斷手斷腳。有openvpn就沒有jffs,都有就拿掉snmp,最後我刷上NAS+FTP版,因為用ipkg安裝usb module一直失敗,很挫折啊~
2009年6月25日 星期四
Gmail uploader
很多人用電子郵件久了,都會覺得outlook收信好像跟男/女友一樣,用久了越來越痴肥、反應遲緩,想刪掉又覺得這分手一樣難抉擇,覺得礙眼又不得不。
現在你有新的選擇,把他們打入冷宮~喔,不是,送去給Google Gmail備份,下次只要用Gmail的搜尋法,連197x年的老郵件都會出來報到~不用的時候,開電腦裡面連屍體都沒有,高竿吧~
首先第一個步驟,我們要把郵件統統集中到outlook(or express),這件事情不需要找納粹SS親衛團。然後我們找到Gmail uploader來上傳信件,讓我們一起來消滅北極熊,一週颳一次颱風~(這梗不好懂,請點這裡)。
然後有人開始哀嚎『看不懂啊~為什麼他說我的Gmail帳號不接受?』,喔,是這樣的,這程式限定Google Apps用戶的帳號才能用。嗯?你還不是喔,不好意思啦,你要不請參照技術筆記前幾篇自己搞,要不叫個頭腦清醒的工程師幫你吧。
然後接下來你就會看到多年的心血有如東流水,離你遠去不回頭~抽刀斷水水更流~一路上傳到google~(對不起,這離題了 orz),經過幾個小時(ㄜ,我自己是六萬多封e-Mail,共20餘小時),你的舊信件就存在「宗旨為不邪惡」的Google全世界機房,即使你的辦公室突然有波音747飛進來撞壞電腦硬碟,你還是可以到別的地方(ㄜ,如果,你還活著沒被飛機撞死,或是地獄有網咖)透過Gmail找到幾年前那個賤人寫信用來跟你分手的超級爛理由,除非附件有毒,上傳過程被擋下來。
接下來,我本來想介紹一些Gmail的暴力外掛,比如把信件中圖片抽出來變搜尋相本之類的,”不過”我覺得這兒童不宜(喔,妳知道,有些照片…不太適宜,會造成部份器官不適與傷害),所以不能示範。
Google Apps
前一篇告訴大家,如何自行架設DNS,現在就開始應用DNS。有自己的DNS有什麼好處呢?簡單的比喻,自己開戶政事務所有什麼好處?還不夠明顯嗎?
Google Apps很久以前就出生了,不過礙於使用對象「中小企業」本身的IT技術不足(抱歉,我太含蓄了,應該說『不懂又不願意花錢懂』),光是解釋設定CNAME就榨乾一堆經理董事長的腦漿,誰還會聽你『免費!世界級大信箱附贈!行事曆、辦公軟體一切免費合法!』。
如果你想要玩Google Apps,首先你要取得一個網域Domain Name(或Domain),比如說bluesea.com.tw。然後根據google指示,開始加入一堆CNAME,將網域裡面的服務轉去google.com。現在就示範一下部份設定:
; DNS Servers
IN NS dns1
IN NS dns2
; MX Records
; Machine Names
dns1 IN A xxx.xxx.xxx.xxx
dns2 IN A xxx.xxx.xxx.xxx
; Aliases
googlebd78555971732a5c IN CNAME google.com.
mail IN CNAME ghs.google.com.
calendar IN CNAME ghs.google.com.
docs IN CNAME ghs.google.com.
sites IN CNAME ghs.google.com.
看到囉,首先是NS紀錄說明這網域負責戶政事務的叫做dns1跟dns2,然後A紀錄說明這兩個傢伙的真實IP。接下來就是Google告訴你的唯一驗證用字串(所以每個人都不一樣,不要亂抄)googlebd78555971732a5c 要這樣設定CNAME紀錄,下面幾筆是讓你網域裡面到時候只要連網頁去http://mail.bluesea.com.tw,耶?報告老闆,每個員工都有7GB的防毒Gmail服務及各項Google服務,我們企業現在再也不是綠色企業,因為我們跟Google一起害北極熊溺死~哈!
2009年6月23日 星期二
BIND 9 DNS server
經過幾天的努力(ㄜ~FreeBSD架設DNS真的很簡單,只是小弟天份低,不能即時參透這網路的大道理啊!),終於擠出一篇筆記了。
好吧,首先洋鬼子手冊裡面寫”FreeBSD本身就帶有chroot的bind版本”。嗯,信不信由你,不過你如果你喜歡嚐鮮,就來
cd /usr/ports/dns/bind9x; make install clean
勾選Replace_Base就會把系統帶來的BIND幹掉換新的(喔呵呵!舊的不去,新的不來~)
然後接下來到上層設定好你的dns指定,就是那個收了你錢的傢伙。基本上人家規定要填兩筆A record(一個正式、一個備援),不過,兩個寫一樣還是會通過檢查(靠~自己背靠背,金剛狼前傳裡劍齒虎跟他小弟的戰法就是這句:背靠背 back to back ! 但是他們沒有練瑜伽)。
然後首先設定一下BIND 9。”先進的”BIND 9已經揚棄ndc(8)這個工具(看縮寫就知道是NameD Control),改用rndc(8)來管理(看縮寫就知道是Remote NameD Control),所以可以從遠端來管理。要從遠端管理,首先連線就要有鑰匙,Here is the “key”.就算你說「沒有啊!我不要遠端管理,我都是到本機裡設定就好了」,抱歉了,孩子,你只剩下rndc陪伴你度過剩下的人生。還好手動加入key設定不難(真是不幸中的大幸)。
rndc-confgen
然後你就會看到rndc.key出現了,是的。如果你不滿意,多按幾次,key會一直更新,直到你停手為止。同時你會看到一份說明,上半部的藥單開給rndc.conf,剪貼進去。下半部的藥單開給named.conf,請分開剪貼進去,不要一起剪貼進去。
接下來編輯你買來的網域zone file。參考各大教學,你就會學到爛。簡單的說,named.conf加
zone “you.buy.me”{
type master;
file “your_zonefile.db”;
};
然後照規矩寫好your_zonefile.db,貼心的BIND 9還有檢查工具可以即時指正你的錯誤,記得先用named-checkconf(8)、named-checkzone(8)等工具,直到他們都沒得挑剔為止,常見錯誤如行末;沒有加上去、名字沒有用.結尾造成重複dn。NS先說明dn,跟著再說明dn的A record,不然又一堆咭咭歪歪地抱怨,不過你也會感謝他們,因為抱怨總比爆炸好。
準備首次啟動BIND 9(哇!好興奮喔!要倒數嗎?),有個偷懶的方法,就是從/etc/rc.d/named start啟動。如果一切如預想的順利,你的曲速引擎沒有爆炸的話,你應該上太空了。BIND 9最偉大的改進就是,她不喜歡你犯錯,所以如果你沒有上太空,你也不會上天堂,你只是還在原地,還有機會找把手槍服務一下自己,不是找機會服務一下自己手槍。
最後收工,把啟動服務放入rc.conf,以便開機自動執行
echo ‘named_enable=”YES”’ >> /etc/rc.conf
以上,就是很簡單的、用FreeBSD、BIND9架設DNS。接下來,我們可以嘗試複雜一點,用FreeBSD + jail + ipfilter + chroot BIND 9 + NAT…(消音中…)
2009年6月1日 星期一
如何讀取MAC OSX的格式
上次是偉功把整顆硬碟格式化成MAC HFS+,這次是小乖把隨身碟這麼做。不過這也不代表pc就不能讀取,只是用linux比想像中的簡單。
掛進來的指令是這樣(ubuntu):
mount -t hfsplus /dev/sd?? /mnt
通常你一看到會嚇一跳,因為MAC OSX居然把硬碟切成12塊,到底是??答案是,掛倒數第二個。比如說/dev/sda1 ~ sda11,就掛sda10。
2009年5月7日 星期四
AT –t `date +%m%e%H%M`
因為每次做緊急配信失敗重傳都容易忘記,所以現在決定用at排程自動執行:
tfmd> at -t 05072235
rsh TIA1 -l tfm "/u1/tfm/comm/shell/recalldxq.sh X"
echo `date +%m%e%H%M` $status " TIA1 recalldxq.sh" >> taskX.log
<Ctrl D>
Job tfm.1241706900.a will be run at Thu May 7 22:35:00 TAIST 2009.
解釋一下,用at –t $time指定時間執行指令,下一行就是指令內容,然後用$status取得執行是否成功( 0 ) 寫入紀錄檔taskX.log,最後鍵入Ctrl + D結束這段 at指令稿
tfmd> at -t 05072335
rsh TIA1 -l tfm "/u1/tfm/comm/shell/recalldxq.sh X"
echo `date +%m%e%H%M` $status " TIA1 recalldxq.sh" >> taskX.log
echo "-------------------------------------" >> taskX.log
<Ctrl D>
Job tfm.1241710500.a will be run at Thu May 7 23:35:00 TAIST 2009.
tfmd> at -t 05072340
rsh TIA1 -l tfm "/u1/tfm/comm/shell/backupcall.sh X"
echo `date +%m%e%H%M` $status " TIA1 backupcall.sh X" >> taskX.log
rsh TIA1 -l tfm "tail -n 10 /u1/tfm/Logfile/Demand.log" >> taskX.log
Job tfm.1241710800.a will be run at Thu May 7 23:40:00 TAIST 2009.
這個大同小異,只是指令內容變成備份的指令,這樣我就再也不會忘記做緊急配信了。因為寫完,ㄜ,基本上機器就會去做。
2009年4月22日 星期三
2009年4月9日 星期四
苦難的終結?
把封存的紅茶店重新拖出來解封,然後改用SATA硬碟,中間經過一個IDE2SATA的轉接版。結果第一天測試,主機無法啟動。清除bios也無效。奇怪,明明有成功開機的beep,怎麼畫面就當掉了?好吧,那就使出最小核心開機法。從最簡單的配備開始累加,看看是誰掛掉系統。說也奇怪,這樣測就立刻恢復正常了﹍
可是IDE2SATA的轉接似乎不順,可以有名字,可是開機一定掛點。好吧,趁著上班前再去買塊新的測測。每次這樣測試,畫面總是慘不忍睹,大部分的配件都會被開腸剖肚,屍體疊在一起然後通電﹍聽起來好像科學怪人的實驗室。
測了大半天,包含安裝完系統開機當掉,kernel panic的訊息終於讓我駑鈍的腦袋有了個概念:主機板上IDE0 Master那個插槽是壞的。不是全然壞的,是時好時壞的那種壞法。
若是這假設為事實,就可以完全充分解釋這幾天連續發生的一切狀況,硬碟偵測時當機、光碟無法開機等等光怪陸奇的現象。沒有人會想到是主機板上的插槽在做怪。
頓時之間,我很想罵髒話。喔~妳玩我喔~玩我不打緊,可是被我發現了~妳死定了!關鍵就是跳過master。
2009年3月18日 星期三
amule over freebsd
基本上用ports裡面stable版就可以了。安裝方式
cd /usr/ports/net-p2p/amule
make install clean
啟動時使用/usr/local/rc.d/amuled start 就可以了。
使用rc.conf的開機啟動方式是
amuled_enable="YES"
amuled_user="amule_username"
amuled_home="amule_user_home"
我用adduser方式,新增一個amule的帳號作為amule專用。
再來$HOME/.aMule裡面要設定好amule.conf與遙控用的remote.conf。因為我是從ubuntu將原來舊的amule設定檔搬過來沿用,所以只有密碼要更改,產生MD5密碼的方式是
echo "Your_Password" | md5
amuled的ec使用tcp 4712,然後amuleweb再用tcp 4711連過去amuled。
因此amule.conf設定檔就會像這樣:
.....
[ExternalConnect]
UseSrcSeeds=0
ShowPercent=1
ShowProgressBar=1
AcceptExternalConnections=1
ECAddress=
ECPort=4712
ECPassword=e8c8290466a68dcfca77892de133d661[WebServer]
Enabled=1
Port=4711
PageRefreshTime=60
UseGzip=1
UseLowRightsUser=0
Password=e8c8290466a68dcfca77892de133d661
PasswordLow=e8c8290466a68dcfca77892de133d661
Template=
而remote.conf用amuleweb -w產生後修改就會像:
Locale=zh_TW.UTF-8
[EC]
Host=
Port=4712
Password=d8ade3c53d42aeecdc5b38f0cb97770a
[Webserver]
Port=-1
Template=php-default
UseGzip=0
AllowGuest=1
AdminPassword=d8ade3c53d42aeecdc5b38f0cb97770a
GuestPassword=29ae15264bcf14cd41a7be377a1a9226
假設你防火牆設定正確,接下來你就可以啟動amuled(連帶啟動amuleweb),然後用瀏覽器連線http://your_ip:4711/ 就會進入web介面騎驢。
本文接下來摘錄我新增的ipfilter / ipnat規則
ipfilter:
pass in quick proto udp from any to any port = 4665
pass in quick proto udp from any to any port = 4672
pass in quick proto tcp from any to any port = 4712 keep state
pass in quick proto tcp from any to any port = 4711 keep state
pass out quick proto tcp from any to any port = 4712 flags S keep state
pass out quick proto tcp from any to any port = 4711 flags S keep state
pass out quick proto tcp from any to any port = 4662 flags S keep state
pass out quick proto udp from any to any port = 4665
pass out quick proto udp from any to any port = 4672
ipnat:
map vr0 172.16.64.0/24 -> 0/32 portmap tcp/udp 10000:60000
rdr vr0 0.0.0.0/0 port 4662 -> 172.16.64.9 port 4662
rdr vr0 0.0.0.0/0 port 4665 -> 172.16.64.9 port 4665
rdr vr0 0.0.0.0/0 port 4672 -> 172.16.64.9 port 4672
rdr vr0 0.0.0.0/0 port 4711 -> 172.16.64.9 port 4711
由此可以看出我是用jail隔離amule的環境。
2009年3月17日 星期二
0317 TODO list
PS(1)
Milktea cannot `mv /usr/bin/flex /usr/bin/flex.old`,
the /usr/bin is under read-only filesystem.
take shell script swich flex if /opt/usr-local/bin/flex exist
I moved the $PATH veriables sequences. Make sure /usr/local/bin is front of /usr/bin ( /etc/login.conf is under part of read-write filesystem.)
Add an user amule. Mount the explicated slice to /home/amule
with nullfs.(it looks too ugly in fstab)
Install GD:
cd /usr/ports/graphics/gd
make install clean
Install GeoIP:
cd /usr/ports/net/GeoIP/
make install clean
Download the aMule 2.2.2 source code here.
tar -zxvf aMule-2.2.2.tar.bz2
cd aMule-2.2.2/
You need to edit the file src/Scanner.l and after the line:
#include <wx/string.h>
Add the line:
#include "Scanner.h.in"
Then start the compilation:
export CPPFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib"
./configure --prefix=/home/user/aMule-2.2.2/ \
--with-wx-config=/usr/local/bin/wxgtk2u-2.8-config --with-crypto-prefix=/usr/local/ \
--disable-debug --with-curl-config=/usr/local/bin/curl-config --enable-webserver \
--enable-optimize --with-included-gettext --enable-amule-daemon --enable-amulecmd \
--enable-cas --enable-alcc --enable-geoip
NOTE: Check configure. Also, change user for your user name.
gmake
gmake install
And start it:
./amule-2.2.2/bin/amule &
一些簡單的備份檔 2
/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/ad1s1b none swap sw 0 0
/dev/ad1s1a / ufs rw 1 1
/dev/ad1s2d /home ufs rw 2 2
/dev/ad1s2e /opt ufs rw 2 2
/dev/ad1s1e /usr ufs rw 2 2
/dev/ad1s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
/dev/ad1s3c /media/alita ufs rw 2 2
proc /proc procfs rw 0 0
/home/mroot /srv/blacktea nullfs ro 0 0
/home/mroot /srv/milktea nullfs ro 0 0
/opt/blacktea /srv/blacktea/opt nullfs rw 0 0
/opt/milktea /srv/milktea/opt nullfs rw 0 0
#/home/skel /opt/blacktea/opt nullfs rw 0 0
#proc /srv/blacktea/proc procfs rw 0 0
#proc /srv/milktea/proc procfs rw 0 0
dev /srv/blacktea/dev devfs rw 0 0
dev /srv/milktea/dev devfs rw 0 0
一些簡單的備份檔 1
/etc/ipnat.rules
map vr0 172.16.64.0/24 -> 0/32 portmap tcp/udp 10000:60000
rdr vr0 0.0.0.0/0 port 80 -> 172.16.64.10 port 80
rdr vr0 0.0.0.0/0 port 22 -> 172.16.64.10 port 22
rdr vr0 0.0.0.0/0 port 21 -> 172.16.64.10 port 21
rdr vr0 0.0.0.0/0 port 333 -> 172.16.64.9 port 22
rdr vr0 0.0.0.0/0 port 4662 -> 172.16.64.9 port 4662
rdr vr0 0.0.0.0/0 port 4665 -> 172.16.64.9 port 4665
rdr vr0 0.0.0.0/0 port 4672 -> 172.16.64.9 port 4672
/etc/rc.conf
hostname="alita"
ifconfig_vr0="DHCP"
ifconfig_vr0_alias0="inet 172.16.64.10 netmask 0xfffffff0"
ifconfig_vr0_alias1="inet 172.16.64.9 netmask 0xfffffff0"
sshd_enable="YES"
syslogd_flags="-ss"
ntpdate_enable="NO" #Not working now
ntpdate_flags="tick.stdtime.gov.tw" #Reset the URL
portmap_enable="NO" # Run the portmapper service (or NO).
sendmail_enable="NO" # Run the sendmail daemon (or NO).
sendmail_flags="-bd"
sendmail_profile="/var/spool/postfix/pid/master.pid"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
enable_quotas="NO" # turn on quotas on startup (or NO).
check_quotas="NO" # Check quotas on startup (or NO).
clear_tmp_enable="NO" # Clear /tmp at startup.
apache2_enable="NO"
mysql_enable="NO"
tcp_extensions="YES" # Set to YES to turn on RFC1323 extensions.
log_in_vain="NO" # YES to log connects to ports w/o listeners.
tcp_keepalive="YES" # Enable stale TCP connection timeout (or NO).
tcp_drop_synfin="YES" # Set to YES to drop TCP packets with SYN+FIN
# NOTE: this violates the TCP specification
icmp_drop_redirect="YES" # Set to YES to ignore ICMP REDIRECT packets
icmp_log_redirect="YES" # Set to YES to log ICMP REDIRECT packets
##############################################################
### IP Filter NAT Configuration ##############################
##############################################################
ipfilter_enable="YES" # Start ipf firewall
ipfilter_rules="/etc/ipf.rules" # loads rules definition text file
ipmon_enable="YES" # Start IP monitor log
ipmon_flags="-Ds" # D = start as daemon
# s = log to syslog
# v = log tcp window, ack, seq
# n = map IP & port to names
gateway_enable="YES" # Enable as LAN gateway
ipnat_enable="YES" # Start ipnat function
ipnat_rules="/etc/ipnat.rules" # rules definition file for ipnat
##############################################################
### Jail Configuration #######################################
##############################################################
jail_enable="YES" # Set to NO to disable starting of any jails
jail_list="blacktea milktea"
# Space separated list of names of jails
jail_set_hostname_allow="NO"
# Allow root user in a jail to change its hostname
jail_socket_unixiproute_only="YES"
# Route only TCP/IP within a jail
jail_sysvipc_allow="NO" # Allow SystemV IPC use from within a jail
#
# To use rc's built-in jail infrastructure create entries for
# each jail, specified in jail_list, with the following variables.
# NOTES:
# global jail variables if you don't specify a jail name
# (ie. jail_interface).
# First Jail Blacktea ==================== #####
jail_blacktea_rootdir="/srv/blacktea" # Jail's root directory
jail_blacktea_hostname="blacktea" # Jail's hostname
jail_blacktea_ip="172.16.64.10" # Jail's IP number
jail_blacktea_interface="vr0" # Interface to create the IP alias on
jail_blacktea_exec_start="/bin/sh /etc/rc"
# command to execute in jail for starting
jail_blacktea_exec_stop="/bin/sh /etc/rc.shutdown"
# command to execute in jail for stopping
jail_blacktea_devfs_enable="YES" # mount devfs in the jail
#jail_blacktea_fdescfs_enable="NO" # mount fdescfs in the jail
jail_blacktea_procfs_enable="YES" # mount procfs in jail
#jail_blacktea_mount_enable="NO" #mount/umount jail's fs
#jail_blacktea_devfs_ruleset="ruleset_name" # devfs ruleset to apply to jail
#jail_blacktea_fstab="" # fstab(5) for mount/umount
jail_blacktea_flags="-l -U root" # flags for jail(8)
# First Jail Milktea ==================== #####
jail_milktea_rootdir="/srv/milktea" # Jail's root directory
jail_milktea_hostname="milktea" # Jail's hostname
jail_milktea_ip="172.16.64.9" # Jail's IP number
jail_milktea_interface="vr0" # Interface to create the IP alias on
jail_milktea_exec_start="/bin/sh /etc/rc"
# command to execute in jail for starting
jail_milktea_exec_stop="/bin/sh /etc/rc.shutdown"
# command to execute in jail for stopping
jail_milktea_devfs_enable="YES" # mount devfs in the jail
#jail_blacktea_fdescfs_enable="NO" # mount fdescfs in the jail
jail_milktea_procfs_enable="YES" # mount procfs in jail
#jail_milktea_mount_enable="NO" #mount/umount jail's fs
#jail_milktea_devfs_ruleset="ruleset_name" # devfs ruleset to apply to jail
#jail_milktea_fstab="" # fstab(5) for mount/umount
jail_milktea_flags="-l -U root" # flags for jail(8)
2009年3月15日 星期日
2009年3月6日 星期五
FreeBSD的watch
先提一下玩linux時watch的用法,watch指令會將後面跟著的指令每隔一段時間就重新執行,因此比如說你先前丟個下載工作在背景,可是又沒看到進度,於是就叫watch ls -l $Filename,這樣就等於有個緊張兮兮的小跟班一直盯著下載進度。但是FreeBSD沒有這種用法,因為Watch是用來監視的。(原文FreeBSD無linux watch)
首先核心會自動載入snp.ko,然後你可以用watch ttyv0指令來監看ttyv0登入的使用者的動作。嗯,然後我們來黑暗界看看,當使用者aaa登入bbs,使用的終端機是ttyp7,此時使用watch ttyp7,嗯哼~aaa正在看信件,你也是....
不過這還不夠進階,我們可以使用-W參數,開始寫入該終端機,然後你按鍵的動作就開始進入該終端機的輸入(......),好吧,我們回到正常的光明世界,因為平常使用連線的方式到主機下指令,常常會擔心因為timeout斷線而停止動作,一般有前輩建議使用screen程式,不過在FreeBSD,你撿到了。你只要用watch -W ttyv{0~7}就有好幾個螢幕可以控制,而要退出watch,只需要按Ctrl + G 。
2009年2月16日 星期一
2009年2月4日 星期三
貨幣戰爭 vs 一個投機者的告白
一個投機者的告白
投資者只要在某處聞到火藥味,就不會投資股票。這時候每個人都會希望自己的保險箱裡面有黃金這類的有形資產。當戰爭發生時,股票不再有用,因為股票在收容 難民的國家裡賣不掉,而且該國也會有外匯管制,所以帶過去的的貨幣也沒有用。只有國際通用的貨幣或某個未捲入戰爭的國家的貨幣,或是黃金才會有用。幾十年來,以黃金為基礎的貨幣制度,也就是金本位制,阻礙了充分的貨幣供給。
金本位制是種在經濟體制中平衡供需的貨幣機制,每種貨幣都需要用黃金定價。而每個中央銀行就有義務對流通的貨幣保有多少的黃金儲備。
如果有一個國家在貿易結算或是國際收支出現赤字,導致貨幣在國外供給量過大,該國中央銀行就有義務用黃金把過量的貨幣購回。而為了平衡赤字又不減少該國的黃金儲備,中央銀行必須提高利率、減少開支、縮減貸款以及提高稅收,增加資金流入。
總而言之,這極端的貨幣緊縮政策會造成嚴重的後果,掏空消費者與企業家口袋裡的錢,減少消費需求。然後失業率就會居高不下,這都是為了保有黃金儲備(金本位制)。反之如果情形相反,該國貿易出現盈餘,貨幣需求增加,黃金儲備上升,利率與稅收降低,貨幣流入市場,就業率增加,經濟成長。這才是讓國家財政正常 運轉的金本位制。事實上,金本位制從來沒有發生作用,因為沒有哪個政府願意按照該體制要求,推行極端的貨幣緊縮,因為這樣的負面效果將會導致該政府垮台。
1932年,德國推行極端貨幣緊縮政策,學者讚嘆說,雖然出現嚴重經濟危機,黃金儲備依然增加了。一年後希特勒奪取了政權。
支持金本位制的人相信,某種貨幣的品質決定於其守護者(中央銀行的黃金儲備),然而這完全是胡說八道。一個國家的經濟實力和國家財政管理制度,才是構成貨幣強勢或劣勢的主因;就像健康的身體不會因為一次感冒就倒下,而有病的人不會因為醫生一次治療,就馬上恢復健康。
曼海姆(Fritz Mannheimer)與卡斯提裘尼(Camillo Castiglioni)在1918年戰爭結束後,利用徹底貶值的德國馬克發了財。卡斯提裘尼在奧地利以貸款方式購買有形資產,不管價格,不管行業,然後用一文不值的鈔票來償還這筆債務。
在通貨膨脹時,人們的投資標的就會變成有形資產:名畫、舊家具、瓷器、鑽石黃金。只有自己經營的有形資產才適合投資。因為投資者通常都是在高點買進,從來都是沒有那麼幸運。
貨幣戰爭-4 IMF
當1971年尼克森宣佈終止黃金與美元的兌換關係後,國際貨幣基金組織與世界銀行的歷史使命就已經終結了。不過很快他們就有新定位:「幫助」發展中國家進行「全球化」。
史迪格里茲(Joseph Stiglitz)身為世界銀行的前首席經濟學家,被解雇前拿到大量機密檔案顯示IMF要求接受緊急援助的國家簽署多達111項秘密條款,其中包括出售受 援國家的核心資產:自來水、電力、天然氣、通信、鐵路、石油、銀行等;受援國必須採取極端破壞性的經濟措施,如果拒絕這些條件,他們將無法在國際金融市場 借得緊急貸款。
所有的國家都有同一類藥方等著他們:
- 第一帖藥:私有化。更精準的說,賄賂。受援國領導人只要同意賤價出讓國有資產,他們將得到10%的佣金,全部付到瑞士的秘密帳戶,那將是數十億美元的鉅款。
- 第二帖藥:資本市場自由化。理論上資本自由的流進與流出。可是亞洲金融風暴與巴西金融危機的實際情形卻是資本自由的流入,炒爆了房地產、股市與匯市。而危 機來臨時,資本只是自由的流出,再流出。受災國的外匯存底將瞬間被吸乾。而IMF的救援條件包括緊縮銀根,將利率提升到30%的荒謬程度的荒謬程度。這樣 的利息只會摧毀房地產、工業生產能力。
- 第三帖藥:市場定價。IMF將要求對食品、飲用水、天然氣等日常生活用品大幅提價,這只會造成大量的示威與暴動,稱為社會動盪(Social Unrest),然後資金將四散逃逸,留下大片賤價的資產待賣給銀行家抵債。
- 第四帖藥:縮減貧困策略─自由貿易。加入WTO。史迪格里茲尤其對知識產權條款憤慨,以這樣高的知識產權和關稅來支付西方國家製藥廠的品牌藥品,無異於將當地人民詛咒致死。
柏金斯(John Perkins)的工作就是畫出一個不可能的經濟發展藍圖(如每年電力需求將成長20%),遊說發展中國家向世界銀行大量舉債,直到債務無法清償時,就會前去索取那所欠的一磅肉 。如果經濟殺手不見效,則派中情局的豺狗(Jackal)去刺殺國家領導人。如果這也失敗,那就啟動軍事機器,發動戰爭。
2009年2月2日 星期一
貨幣戰爭-3
在金本位體制下,銀行家堅決反對通貨膨脹,因為這樣相對的造成貨幣貶值會直接傷害到銀行家的利息實際收入。然而法定貨幣(Fiat Money)徹底擺脫了黃金與白銀對於貸款總量的剛性制約,也就是說銀行家可以無限制的增加貨幣供應來獲得利益,而且比起通貨膨脹造成的損失來的大。
由於增發紙幣造成的通膨(Currency Inflation)的概念,在現代完全被價格上漲的通膨(Price Inflation)理論所淹沒。凱恩斯就通貨膨脹的評價一針見血:「用這個辦法,政府可以秘密地和難以察覺的沒收人民的財富。壹百萬人中也很難有一個人 能夠發現這種偷竊行為。」。
因為通貨膨脹會產生兩大後果,貨幣購買力下降與財富重新分配。
錢印多了東西自然會漲價,凡是經歷過1944年蔣介石轉進台灣前在上海發行金圓卷的人都明白這道理。然而通膨造成的財富重新分配卻不是那麼直觀。簡單的比喻,就像是印假鈔票。
最先拿假鈔的人到五星級餐廳大吃大喝,此時物價水平還沒上漲。餐廳老闆娘收假鈔後去精品店買衣服鞋子包包,物價還不太有波動。但是只要越來越多假鈔流進市場,市場將慢慢發覺,物價就漸漸上漲。
所以離假鈔製造機越近的人越佔便宜,如房地產業距離銀行比較近;而離假鈔越遠的人越倒楣,如靠養老金生活的榮民或老老實實儲蓄的人。
超級通貨膨脹從來都是超級財富收割機。
通貨膨脹最嚴重的道德崩潰發生在1923年的德國(可參考一個投機者的告白),美元與英鎊的購買力被成千上萬倍的放大,任何一個手上有一些美元或英鎊的人都可以在德國生活的像國王,外國人蜂湧至德國以便宜的難以置信的低價搶購德國人的家庭財富、不動產、珠寶與藝術品。
貨幣戰爭-2
如果美國人民最終讓私有銀行控制了國家貨幣的發行權,那麼這些銀行家將先是透過通貨膨脹,然後是通貨緊縮來剝奪人民的財產。直到有一天,當他們的孩子一醒來時,發現自己已經失去家園和父執輩曾經開拓過的土地。
蒼蠅不叮沒縫的的雞蛋。與1837,1857,1873,1884,1893年一樣,銀行家們早就瞧出經濟過熱發展中出現 的嚴重泡沫現象,這也是他們不斷放鬆銀根所導致的必然結果。整個過程形象的說就像銀行加在魚塘裡養魚,當銀行家向魚塘裡放水時就是在放鬆銀根,向經濟體注 入大量貨幣。各行各業的人在得到大量金錢後就會日夜苦幹,努力創造財富(與通貨膨脹),這整個過程就像水塘裡的魚兒開始使勁的吸收各種養分,越長越肥。等 銀行家看到收穫的時機成熟時,就會突然收緊銀根(造成通貨緊縮),從魚塘裡開始抽水,這時候魚塘裡的多數魚兒就只有絕望的等著被(銀行)捕獲的命運,而且 不是每條魚都可以得到救贖(想想雷曼與花旗)。
什麼時候開始抽水撈魚,只有幾個最大的銀行寡頭知道。當一個國家建立起私有的中央銀行制度後,銀行寡頭們對抽水與放水就更加得心應手,收穫也更精確。經濟的發展與衰退,財富的累積與蒸發都成為銀行家「科學飼養」的必然結果。
貨幣戰爭
《貨幣戰爭》將18世紀以來全球重大金融事件背後的黑手曝光出來,出版以來曾在國內外引發「證據不足」的質疑及諸多論戰。不過,2007年底美國爆發次級 房貸風暴,經由金融投資輸出殃及全球,許多讀者不約而同聯想到宋鴻兵在書中以「具體統計數字」及「科學邏輯推理」提出的具體預警,從而讓此書的價值逐漸顯 現,相關內容獲得重視。
宋 鴻 兵
現職:中國北京宏源證券結構融資部總經理
學歷:American University碩士學位,長期關注、研究美國歷史和世界金融史。經歷:曾任職美國媒體遊說公司、醫療業、電信業、資訊安全、聯邦政府及著名金融機構,並擔任房利美和房地美諮詢顧問。
部落格:www.caogen.com/blog/index.aspx?ID=21
著作:《貨幣戰爭》
貨幣戰爭-1
1694年,英王威廉一世頒發英格蘭銀行的皇家特許執照(Royal Charter),第一個現代銀行誕生。
英格蘭銀行的核心概念,就是將國王與王室成員的私人債務轉化為國家的永久債務,用全民的稅收做為抵押,再由英格蘭銀行發行基於債務的國家貨幣。
這個設計將國家貨幣的發行和永久國債鎖死在一起。要增加貨幣,就要增加國債。要是還清了國債,貨幣也就不存在。債務的利息落入銀行家的口袋,支付利息的是人民的稅收。
Mayer Amschel Rothschild(生於1744)到1800除了成為法蘭克福區最有錢的猶太家族外,還獲得神聖羅馬帝國授予「帝國皇家代理」,通行於帝國各區,免除 家在其他猶太人的稅負,公司人員還可以武裝。1812年,M. A. Rothschild死前遺囑:
- 家族銀行的要職絕不用外人,而且由男性家族成員參加家族內商業活動。
- 家族通婚必須在表親之間進行。
- 絕不對外公佈財產情況。
- 財產繼承上不允許律師介入。
- 每家都由長子做首領,除非家族一致同意次子接班。
- 違反遺囑者失去一切財產繼承權。
2004年Rothschild家族宣佈退出倫敦黃金定價系統。
2009年1月13日 星期二
gcc-4.3: Kernel build fails
CC [M] drivers/net/virtio_net.o
LD drivers/net/built-in.o
LD drivers/built-in.o
GEN .version
CHK include/linux/compile.h
UPD include/linux/compile.h
CC init/version.o
LD init/built-in.o
LD .tmp_vmlinux1
kernel/built-in.o: In function `getnstimeofday': (.text+0x248cb): undefined reference to `__umoddi3'
kernel/built-in.o: In function `getnstimeofday': (.text+0x248ee): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday': (.text+0x24a10): undefined reference to `__udivdi3'
kernel/built-in.o: In function `do_gettimeofday': (.text+0x24a2e): undefined reference to `__umoddi3'
kernel/built-in.o: In function `timekeeping_resume': timekeeping.c:(.text+0x24c46): undefined reference to `__umoddi3' timekeeping.c:(.text+0x24c66): undefined reference to `__udivdi3'
kernel/built-in.o: In function `update_wall_time': (.text+0x250aa): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time': (.text+0x250ca): undefined reference to `__udivdi3' kernel/built-in.o: In function `update_wall_time': (.text+0x25546): undefined reference to `__umoddi3'
kernel/built-in.o: In function `update_wall_time': (.text+0x25566): undefined reference to `__udivdi3' make: *** [.tmp_vmlinux1] Error 1
CFLAGS_KERNEL = -fno-tree-scev-cprop
或
KBULID_CFLAGS = -fno-tree-scev-cprop