sudo: must be setuid root

為了跟桌面系統環境切割乾淨, 開發環境以 chroot 進入.

進入後, 會為使用者自動建立 account, 這樣在開發時大部份時間以 non-privilege user 進行, 必要時以 sudo 執行特定命令以減少問題的發生.

先前發生了一個問題困擾了我很多天. 在公司可以用的 chroot 環境 (放在一顆獨立的 SATA HDD 中), 拿到家中使用居然就不能執行 sudo 了, 怎麼回事?

網上看了不少文章, 都是讓人確認

  1. /bin/usr/sudo 的 owner 以及 group 都是 root (root:root)

  2. /bin/usr/sudo 的 owner 的 setuid bit 要設定 (至少是 4111)

想當然, 在公司能用, 回到家沒法用, 上面的設定一定是沒問題的.

後來想到, 在公司 mount 是以 /etc/fstab 進行, 但在家中是用 gnome 的 nautilus mount 上, 啊哈! 原來, 差異在這.

Nautilus 為了安全性, 在 mount file system 時加上 nosuid 參數, 所以裡面的 setuid bit 都無效了, sudo 自然也就沒法成功. 解法? 應該不用我說了吧!