2008-04-12

碰到 bind 地雷

今天突然發現到 synaptic 無法使用了,連帶的 sudo 也是如此。

出現的錯誤類似 uid 錯誤,其 uid 是 109,正確的應該是 0,也就是 root(root 的 uid 是0)。

看了看 /etc/sudoers 這個檔案的所有者,居然是 bind(uid 109),怪怪。想想這兩天的操作過程,原來是透過了 synaptic 安裝了 gbindadmin(一個使用 gtk 介面的 bind 管理程式),由於這個程式的問題,會使用到 chroot,而我將 /etc 設定成 chroot 的目錄,所以連帶著將 /etc 下所有的東東都改為 bind 這個 owner,而 sudo 的 uid 是 0 並非 bind 的 uid 109,所以 sudo 無法使用。

怎麼辦呢?當然是先將 /etc/sudoers 這個檔案的 owner 改回來,但由於無法 sudo 了,怎麼處理呢?

拿出 7.10 的 live-cd,由 live-cd 開機後,mount 原先的硬碟:

# sudo mount /dev/hda1 /mnt
# cd /mnt/etc
# sudo chown root:root sudoers

經過以上 steps,sudoers 的所有者就改為 root 了。

重新開機,再將 /etc/ 下所有的目錄及檔案 owner 改為 root 或相關 owner,這樣系統就應該正常了。

經過這次教訓,有兩個結論:

1. 裝一些系統管理用的軟體還是要小心些,不要以為透過 synaptic 安裝的軟體都很 "安全"

2. 對於 ubuntu 的 sudo 功能、內建無法以 root 直接操作有些微言,雖然可用 sudo su 轉換為 root 使用者,但像這次就無法轉換為 root 了,必需拿出 live-cd 來重新設定。

其實我對於 ubuntu 的 sudo 做法,長久以來,有點給它不以為然,why?

1. 換湯不換藥,唯一安全之處就是無法直接用 root 登入到系統內,不過還是可用間接方法進入,一點也不困難。別人若是使用一般密碼進入系統後,還是可以用 sudo 來破壞你的系統,因為一般使用者密破解了,sudo 說句實話,就沒啥用了。

2. ubuntu 這種 sudo 機制,對了解的人來說,或許還可體會其 "用心良苦",但對習慣於 windows 操作的使用者來說,就可說很難體會了,明明系統提示我要做些什麼事,但還要我輸入 password,不是很奇怪嗎?可能對 windows 的使用者說上兩個小時,他們也還是對 sudo 這個機制有點霧煞煞。

或許在未來,ubuntu 的這種機制可在 "安全" 及 "方便" 兩樣情中,取得一個協調吧,期昐著!

沒有留言 :

張貼留言