我們學校的 server 跑的是 FreeBSD , FTP 用的是內建的 ftpd ,一般使用者有 chroot,所以透過 FTP 無法切換到個人空間以外的目錄。同事測試發現,如果使用 CuteFTP , FFFTP 或是 Windows 內建的 FTP client 程式連線後,看到的檔案時間是有問題的(慢八個小時),但是使用 FileZilla 卻正常,也發現 FileZilla 還可以在設定裡面自訂要差多少時間。觀察了一下 FileZilla 的訊息,原來它會偵測 server 和 client 的時間,並自動修正,顯示正確的時間。這個工作應該是 server 上的服務程式應該要做的,可見是 server 端出了問題。
有了方向,上網用「freebsd chroot ftp timezone」拜了一下 google 大神,看了很多的文章,雖然沒有看到一樣的問題,但是在 OpenBSD 的一篇 FAQ 裡看到有關 Apache httpd chroot 寫到:
Timezone: httpd(8) inside the chroot(2) will NOT be able to use the system /etc/localtime. If you require localtime logging of events, you will need to copy (not link) the corresponding timezone from /usr/share/zoneinfo/ under /var/www/etc/localtime.這讓我想起以前在 FreeBSD 3.x 上架設供匿名使用的 FTP server 時曾經遇過,FTP client 連線以後看不到任何檔案清單,因為 chroot 以後,ftpd 找不到查看目錄的指令 /bin/ls ,當時解決的方法是手動為匿名 FTP 的服務目錄中建了一個 bin 的目錄並複製一份 /bin/ls 到該目錄中,才解決看不到檔案的問題。
這一次碰到的是時區的問題,因上 OpenBSD 上的那個 httpd 問題可能發生在 FreeBSD 的 ftpd 上。
試試看,用自己的帳號遠端登入主機後,執行底下的指令:
mkdir ~/etc也就是在個人的 HOME 底下建一個名為 etc 的目錄,並且將系統的時區資料檔案 /etc/localtime 複製一份到個人空間下的 etc 目錄。
cp /etc/localtime ~/etc/
檔案加完以後,再以 FTP client 程式去連線,問題解決了,收工!
解決了我帳號下的問題,那其它使用者呢?當然是得如法泡製囉!誰來做?哈!這應該是不管 servers 的好處(其實寫個 script 跑一下,應該也很快可以解決)。
如果您管的 server 也有同樣的情形,建議可以在 /usr/share/skel 目錄底下建一個 etc 的目錄,並複製一份 /etc/localtime 放到裡面。這樣,新建立的使用者會自動將該檔案帶到新帳號下。
沒有留言:
張貼留言