星期四, 9月 25, 2014

在 MAC 中開啓 Linux 裡的 X 視窗

在 Windows 中,我們可以透過 Xming 來叫起 Linux 或 Unix 上的 X 視窗。但是,最近換了 MAC Book Pro 後,突然想到那 MAC 該怎麼處理?

於是,我就上網找找看解決方案。後來找到 XQuartz 這個工具,他是蘋果電腦在 MAC OS 上對於 X Window 的實作。

當我們在 MAC OS 上安裝了 XQuartz 後,可以透過下列指令,來啟動 Linux 上的 X 視窗應用程式:

ssh -X user@servername
xeyes

執行完上面的指令,應該可以看到下列這個眼睛!這就代表設定完成了。





參考資料

1. XQuartz 維基百科, http://zh.wikipedia.org/wiki/XQuartz



JBoss 4.2.3 JSP page cache


這兩天遇到一個棘手的問題。因為,某些因素我需要去修改某個產品的登入程式,讓他支援二次驗證。理論上,我修改 JSP 的程式後,不需要重啟 Server,該 Server 可以自動生效。

不過,神奇的事情就發生在我完成整合後,要丟給客戶看時,確一直看到舊的 JSP (就算我把那個檔案刪掉了,也是一樣)。

然後,我就重開 JBoss Server,看到的還是舊的 JSP!(這真是見鬼了)

一直重開,我還是看到舊的 JSP!

後來,我才想到,JBoss 的 Redeploy 的驅動點好像是檔案的時間。

所以,我就把檔案動一下再存檔,以更新檔案的最後存取時間。

結果,這招果然奏效了。不然,在那邊換檔案換半天就是沒有效。

讓客戶在旁邊看笑話了。

星期二, 9月 23, 2014

CentOS command line install Tomcat

最近突然有一個需求,就是在 Linux 上安裝 Tomcat。但是,因為使用 VM 的關係,GUI 的操作不是很靈敏,又沒有弄 Xming,所以只好用指令來完成安裝啦!也順被把這樣的程序整理起來。


安裝 JDK 7 Update 67

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz"
下載回來後,檔名為:
jdk-7u67-linux-x64.tar.gz?AuthParam=1411398968_5826ae3ee1898fbb3d1e25e9de936e9d

此時,將該檔案檔名修改為「jdk-7u67-linux-x64.tar.gz」。再執行下列指令,進行解壓縮的工作。
tar xzf jdk-7u67-linux-x64.tar.gz
接著,使用 alternatives 指令進行 java 安裝,指令如下:

cd /opt/jdk1.7.0_67/
alternatives --install /usr/bin/java java /opt/jdk1.7.0_67/bin/java 2
# alternatives --config java (如果該機器中有多個 java 環境,可利用此指令進行篩選)
設定 JAVA_HOME 及 PATH 等環境變數,將 .bash_profile 設定修改如下 (紅字部分為增加之設定)

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/opt/jdk1.7.0_67
PATH=$PATH:$HOME/bin:/opt/jdk1.7.0_67/bin
export PATH
unset USERNAME



安裝 Apache Tomcat

執行下列指令,進行 tomcat 下載 (本範例下載到 /usr/Apache 目錄底下)
wget http://apache.stu.edu.tw/tomcat/tomcat-7/v7.0.55/bin/apache-tomcat-7.0.55.zip
執行下列指令,將下載回來的 Tomcat Server 檔案解壓縮

unzip apache-tomcat-7.0.55.zip
至 apache-tomcat-7.0.55 目錄底下的 bin,執行下列指令,啟動 Tomcat Server

./startup.sh
接著可以使用 http://serverip:8080/ 測試 Tomcat 伺服器是否正常運作。



星期五, 9月 12, 2014

Sencha Touch 入門 - 環境建置 for MAC (1)


隨著行動應用的發展,App 開發的專案越來越多。最近,IBM Worklight 的詢問度似乎有提高的趨勢。面對 Hybrid App 的開發,大家通常提出來的第一個問題就是「效能會不會很差」。為了,能夠推廣 Hybrid App 的開發,我們當然要很努力地扭轉這樣的局面。

所謂,Hybrid App 指的就是利用 HTML5 + JavaScript + CSS3 來開發行動應用 App。當然,利用這樣的技術來製作 App 效能是比寫 Objective-C 或 Java 來得差。但是,使用者真的需要那麼快的 UI 響應嗎?

開發 Hybrid App 時,處理程式邏輯最重要的部分非 JavaScript 莫屬。在現今許多Framework並起的時代,以 Sencha Touch 的平台效能響應最快。因此,我們就開始 Sencha Touch 的 Survey 了!

這篇文章,算是個起頭!先交代如何建立 Sencha Touch 的環境。後面,再寫幾篇文章來說明我們實驗的過程。

安裝 Sencha Cmd

首先,把下載回來的檔案「SenchaCmd-5.0.1.231-osx.app.zip」解壓縮。解壓縮後可以看到「SenchaCmd-5.0.1.231-osx」檔案。點選該檔案後,開始進行 Sencha Cmd 的安裝。


在上述畫面,點選「打開」後,開始進行 Sencha Cmd 的安裝工作。在下列畫面中,點選下一步,進行 Sencha Cmd 的安裝工作。


在 License Agreement 的畫面上,選擇「I accept the agreement」後,點選「Next」繼續進行安裝工作。


選擇 installation Directory (可以採用預設的建議目錄),點選「Next」


在 Ready to Install 畫面上,點選「Next」 開始進行安裝程序


等待安裝程序完成!


點選 Finish 完成安裝!


開啓「終端機」,輸入「sencha」可以看到下列畫面,代表 Sencha Cmd 已經安裝完成了!


Sencha Touch 2.4 


  1. 將下載回來的「touch-2.4.0-commercial.zip」檔案解壓縮
  2. 將終端機中的路徑,切換到「touch-2.4.0-commercial.zip」 解壓縮的位址
  3. 輸入下列畫面中的指令,來建立 Sencha Touch 專案

成功建立 Sencha Touch 專案後,可以看到上列畫面。接著,執行下列指令打開 Chrome 瀏覽器「open /Applications/Google\ Chrome.app/ --args --disable-web-security」。然後再從檔案中選到 index.html 後即可看到預設的範例程式。
到了這一步,表示基本環境已經建置完成。


參考資料:

下載 Sencha Touch : http://www.sencha.com/products/touch/
下載 Sencha Cmd: http://www.sencha.com/products/sencha-cmd/download



星期四, 9月 11, 2014

修改 CentOS 的 MAC Address

有很多地方是透過電腦的 MAC Address 來管理一個設備是否可以上網。然而,有時候要跟系統或網管人員申請 MAC 的轉換又很麻煩。所以,如果我們可以自己修改 MAC Address 的話,就不用透過這道手續。

會去找 CentOS 如何修改 MAC Address 的方法,主要是我本來用一台 Windows Server 在做一些測試。然後,因為某些專案的因素,我又需要有一部 Linux 的測試環境。但是,網管人員只給我一組 IP,而且是綁定 Windows Server 的 MAC Address。

此時,如果懶得驚動網管人員,最佳的解決方案就是替這部 Linux 修改 MAC Address,並且設定相對應的 IP。於是,我先從 Linux 的 GUI 界面探索是否有可以設定的地方。

首先,我從「Administration」/「Network」中找到下列設定畫面:

選擇 eth0 的 Device 後,按下「Edit」按鈕,就可以出現該網卡的設定畫面。

選擇「Hardware Device」的 Tab 就可以看到有一個「Bind to MAC address」的地方可以進行設定。


設定後,按下確認鈕,並且重啟該網卡。突然遇到了「Device eth0 has different MAC Address than expected, ignoring」的錯誤訊息。於是找好再打開 Google 檢查一下還有哪邊需要設定,但是看來看去都是指向 「/etc/sysconfig/network-scripts/ifcfg-eth0」的檔案要修改。

這個檔案中,有一個屬性「HWADDR」看起來就是我設定的哪個 MAC Address。不過怎麼改好像都沒用!後來,我又找到一篇文章「How to change MAC address on CentOS Linux」。這篇文章中寫的屬性是「MACADDR」,於是我將 HWADDR 修改成 MACADDR 後,網卡就可以正常運作了!







星期二, 9月 09, 2014

特權帳號管理

大概是在三四年前,因為和 CA 的配合,我開始接觸到「特權帳號管理」這一塊領域。

一般來說,我們的系統大致上可以把使用者的帳號切割成兩個部分:
1. 一般使用者帳號
2. 系統管理者帳號

通常,我們在公司裡面談的資訊安全,有80%是針對「一般使用者」來進行管理,但是對於特權帳號這部分卻疏於管控。

為什麼會說疏於管控?我經常到客戶那邊協助處理 IT 的問題 (不管是系統類的或是應用程式開發類的錯誤),我總是需要一組擁有「足夠權限」的帳號,讓我進行問題的診斷。

這時候該如何取得該帳號與密碼來登入系統?通常就是直接問承辦人,然後他就會跟你講帳號密碼(還好我是個善良的人,不然這些系統啟不落入我的掌控之中!)。接著,我就可以使用這組帳號密碼登入系統,胡作非為。

近年來,這些安全的意識高漲,所以到客戶那邊要取得這些帳號密碼的資料也變的比較麻煩了。以我們公司最大的客戶來講,現在你去維護他們家的系統,帳號密碼由他們敲,你在操作的同時他們的員工必須陪同在旁邊,跟你 pair programming (就是監視你是不是有真的胡作非為)。

如果他們是以學習的角度,來觀察我做了什麼,那對於他們可能是有價值的。如果,只是來監視我,那這樣就顯得很浪費資源。

談到這裡,有一些IT的需求就逐漸浮現:
1. 企業不希望外部的維護工程師知道我系統管理者的帳號密碼,所以要有人幫我管理密碼或者是幫我敲密碼
2. 當他人登入我的系統時,我們可以監控其一舉一動,了解登入者進入系統中做了哪些操作

在這上面,CA 使用 ControlMinder 的 Shared Account Management 模組,就是針對上述需求而設計的產品。

該產品讓使用者透過入口網站,來控管共用使用者(系統管理者)的管理權限,也提供使用者自動登入 (資料庫,作業系統,網路設備等)機制,防止密碼外洩。針對臨時的存取者,該產品也提供申請,審核的機制。

針對應用程式中常見的 Shared Account Management 問題,例如:程式碼中將資料庫的密碼寫死在設定檔或應用程式伺服器上。導致開發人員知道資料庫系統的帳號密碼,使資料庫內的資料暴露在可能被取走的風險中。因此,CA ControlMinder 模組也提供各種與既有程式整合的方式,包括 .NET, Java 等 (我也處理過 C++, PHP, ASP, VB, CScript 等程式語言的整合案例)。藉由上述方式,可以解決第 1 項需求。

而第 2 項需求的部分,則由 ControlMinder 產品整合 ObserveIT 來解決。透過整合 ObserveIT 的套件,當使用者使用 ControlMinder 上的自動登入功能時,就可以啟動錄影功能,將使用者登入系統後所做的事情錄製下來。

很多人看完這個功能後的問題就是那不是會耗費很大量的磁碟空間?ObserveIT 使採用差異化錄影的技術來節省錄製檔案的空間。所謂的差異化錄影,就是說當我們有進行動作時,畫面才會被存下來。如果登入後,讓畫面停在那邊不動,則 ObserveIT 僅會儲存一個畫面,藉此降低影像儲存的資料量。

透過上述軟體系統的協助,可以解決特權帳號管理的問題,並能確實留下他人進入系統的操作記錄,作為後續稽核及問題追蹤的重要證據。

星期二, 9月 02, 2014

CentOS 上設定 FTP


因為工作上的需求,有時後得用 Linux 模擬客戶端的環境。通常是模擬 Linux or Unix,使得自己到現場的時候能拿出更專業的表現。

這時候,我通常會在機器上建立起 Linux 的 VM。會安裝這個 VM 主要是為了進行一些軟體的安裝驗證。所以,通常需要從自己的 Windows host copy 檔案到 Linux 中。

這時,我通常會使用 FTP。

在 CentOS 底下,可以使用【yum install vsftpd】進行 FTP 軟體的安裝。

安裝完成後,可以透過【service vsftpd start】來啟動 FTP 的服務。

另外,我們可能希望檔案可以上傳到 Home Directory。
此時,因為 Linux 上一些預設的限制,要達成此條件的話,要執行下列指令:

/usr/sbin/setsebool -P ftp_home_dir 1

如此應該就可以正常運作。當然,如果你要使用的是 root 帳號,還要設定下列檔案:

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

必須將 root 帳號從排除清單中移除,才可以用 root 登入。