2011年7月30日

Xcode 4.0 如何建立 Distrubution profile 並上傳至 app store

這篇講得很詳細,不然我還真不知道 Xcode v4.0 要怎麼上傳哩
這裡

2011年7月26日

MySQL 設定密碼

首次安裝 MySQL 設定新密碼
# mysqladmin -u root password 新密碼

設定以後要更改密碼,指令為:
# mysqladmin -u root -p password 新密碼

2011年7月25日

讓 Apache 不顯示 Parent Directory

修改 httpd.conf
在 IndexIgnore 後面加上 ..

例: IndexIgnore ..

然後再重啟 Apache
service httpd restart

完成!

PHP 執行外部命令問題集

利用 PHP 來執行 Linux shell command, 例如

<?php
$result = `sudo /usr/bin/chage -l username`;
echo "$result";
?>

結果顯示不出結果, 查了 /etc/httpd/logs/error_log, 顯示
chage: Permission denied.
表示我的 user 沒有權限執行這個指令, 而 web 的 user 是 apache 這個名字
解法: 執行 visudo, 新增一行
apache ALL=(ALL) NOPASSWD:/usr/bin/chage
讓 apache 這個使用者能夠不用輸入 sudo 密碼就可以執行 chage 指令

改完後還是顯示不出結果, 查了 /etc/httpd/logs/error_log, 顯示
sudo: sorry, you must have a tty to run sudo apache

解法: visudo 修改裡面的 Defaults requiretty 把它用 # 註解起來, 再度執行, 終於可以在網頁上顯示使用者帳戶資訊了

2011年7月21日

Apache 顯示目錄不要帶太多系統內容

本來顯示目錄後在最下方會顯示出 Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 這樣類似的內容有的還會把 CentOS v6.0 等 OS 的名稱版本都顯示出來,很容易被有心人進行攻擊的參考資訊,我們可以修改 httpd.conf 讓隱藏訊息

1. vim /etc/httpd/conf/httpd.conf
2. 找到 ServerTokes 字串, 預設應該是 OS, 把它改成 Prod, 詳細的參數可參考這裡
3. service httpd restart

再顯示應該只有 Apache Server at IP Port 80 了~

Apache Web 網頁使用 Linux 系統帳號作權限認證

原本是要採用 mod_auth_pam,但是他的版本太舊了,只能支援 Apachehttp://www.blogger.com/img/blank.gif v1.3 跟 2.0,所以我們改採用 mod_auth_shadow 來做
1. 先下載 mod_auth_shadow-2.3 下來
2. 解壓縮後,切換成 root 然後進入目錄執行 make all
3. make install
4. 檢查 /etc/httpd/conf/httpd.conf 是不是有多一行 LoadModule auth_shadow_module /usr/lib64/httpd/modules/mod_auth_shadow.so (我是用CentOS 64bits 所以會在 lib64)
5. 檢查在 <Directory "/var/www/html"> 裡面有沒有
AllowOverride AuthConfig
Order allow,deny
Allow from all
6. chmod 400 /etc/shadow
7. chmod 4755 /usr/local/sbin/validate (新增 owner 的 suid 這樣 apache 才能去讀 /etc/shadow)
8. service httpd restart
9. 設定 /var/www/html/.htaccess 內容如下
AuthShadow on
AuthType Basic
AuthName "Input username and password"
require valid-user
10. 開啟瀏覽器測試,輸入使用者在 Linux 系統上的帳密,就可以登入受管控的網頁了!

P.S. mod_auth_shadow 也支援 require user 或 require group 等強大的授權功能

2011年7月19日

[Linux] 將 big5 編碼的文字檔轉換成 utf8

原本的 Linux 裡面的 LANG 是設定成 zh.TW.big5,但是新的主機是設定成 UTF-8,所以原本存的中文文字檔到新的主機就變亂碼,所以必須進行轉檔

利用 iconv 指令,用法如下:
iconv -f big5 -t utf8 source_filename -o dest_filename

搞定!

2011年7月13日

2011年7月4日

[Linux] 去除空白行

以下每種方法都可行~

$ grep -v '^$' file
$ grep '.' file
$ sed '/^$/d' file
$ sed -n '/^$/!p' file
$ awk NF file
$ awk '/./' file