MoinMoin 暴力法重設使用者帳號密碼

今天因為實驗室的 MoinMoin 有使用者忘記密碼, 但是透過 MoinMoin 自動寄回 encryption 過後的密碼串雖然可以登入, 但是看不到明碼還是不太方便, 要進行修改密碼時卻發生 exception, 因此想透過管理者權限修改使用者密碼. ( 其實後來發現是該使用者檔案的權限不知為何被設成 -rw-r-----, 一般的使用者權限是 -rw-rw----, 使得該使用者要重設密碼時, MoinMoin 的修改被系統擋了下來, 因此發生 exception. )

不過當時我沒有注意到這個原因, 直覺地想說利用 admin 去改應該很輕鬆, 結果找來找去, 不知道怎樣直接修改使用者密碼, MoinMoin 的使用者裡面只有詳細的說了 ACL 頁面存取設定, 其他使用者帳號的管理似乎沒有提供好用的介面.

一時衝動, 想說那我直接去改使用者 data 好了 XD

結果費了一番功夫, 不過也多知道了 MoinMoin 對於使用者資料方面是怎樣處理. 在 MoinMoin 下, 使用者資量是放在 instance/data/users (instance 要看當時創造 Wiki instance 時採用甚麼命名) 裡面, 透過特定的編碼方式形成以一連數字命名的檔案. 檔案名稱應該跟創造帳號時間有關, 但是詳細計算演算法未知.

而個別使用者得資料, 除了密碼之外, 其實是以明碼的方式, 紀錄在檔案中. 換句話說, 使用 cat 就可以輕鬆看到使用者資料, 而利用 vi 就可以進行編輯. 但是有一點很奇怪的是, 使用 vi 編輯時, 原本已經在檔案中的內容沒有辦法使用 backspace 刪掉, 只能新增內容進去.

另外注意的一點是, 密碼的 SHA 運算似乎跟帳號以及其他因素有關, 因此即便兩個帳號使用同樣的密碼, 得到的 encryption code 是不一樣的. 也因此我本來想把自己的帳號設定成某個 password, 再把 SHA encryption code 複製到密碼有問題的帳號這個想法最終是失敗.

最後採取的作法是, 修改密碼有問題帳號的 mail address ( 因為無法直接修改, 因此先利用 # 註解掉原來的, 然後加上新的一行 ), 讓我可以在自己的電腦上收到問題帳號的目前 encrypted password, 然後利用此 encrypted password 登入, 再進行密碼修改. 之後就是上面說的, 發現其實不能 reset password 是使用者檔案權限的問題, 所以修改權限後就 ok 了.

而修改後, MoinMoin 不是只有更新使用者檔案內的該項 properties 而已, 而是會將整個使用者檔案重寫, 因此前面註解起來的部份會被抹除.

簡單來說我就是繞了一大圈, 解了一些本來只要調整檔案權限就可以解的問題就是了 Orz

不過從機制看起來, MoinMoin 的使用者資料在系統管理內要很小心作權限控制, 一般使用者應該是連進行閱讀都必須被禁止才是.

0 意見:

Designed by Posicionamiento Web | Modified by seLain | Bloggerized by GosuBlogger | Blue Business Blogger