最近做OpenWrt,需要設計一個多級用戶模塊,毫無頭緒,在百度中搜索到一篇博客,但其中的代碼有一些問題,而且連續不到博主,於是作罷。
在谷歌中搜索到了一個LuCI開源項目,並一直維護到現在。
該項目實現的主要功能如下:
①通過LuCI UI添加、刪除用戶;
②設置SSH登陸權限、訪問menus權限
③新創建用戶的密碼默認爲openwrt,用戶登陸系統後可以在System->Administration中修改自己的密碼
目前該項目一直在更新中,在更新過程中創建了多個版本,因爲該項目使用了一些自定義函數如get_user(),luci-app-multi-user不能單獨編譯安裝,需要在自己的編譯環境中編譯整個LuCI,hnyman說可以在make menuconfig中將luci-app-multi-user、luci等相關模塊選擇成module,編譯成ipk安裝,但是博主嘗試了一整天都沒有實現,最後將app-multi-user、luci...編譯到固件中,方實現多用戶功能。
Hnyman維護的項目git源地址:https://github.com/hnyman/luci/tree/multi3(最新banch是multi4-clean,支持trunk、LEDE版本)
源碼獲取方式:
cd feeds/luci
git checkout -b multiuser
git remote add hnyman https://github.com/hnyman/luci.git
git pull hnyman multi3 # 最新banch是multi4-clean
git log --oneline
git pull過程中會出現文件合併衝突,提示讓手動修改,此時可以執行:
git reset --hard origin/multi3 #異味丟棄本地分支,保留遠端multi3分支
遇到合併衝突時,不要自己盲目亂操作(如果對git不熟悉),多查多看是王道。
執行完上述命令後,更新feed:
./scripts/feeds install -a
執行完install後,向上翻看,查看luci-app-multi-user包有沒有安裝成功
執行make menuconfig, 選擇multi-user等相關模塊
執行make V=99編譯固件,在編譯過程中可能會出現:
Error: Cannot create regular file /bin/po2lmo: Permission denied
解決方法:
修改/trunk/feeds/luci/modules/luci-base/Makefile
define Host/Install
$(INSTALL_DIR) $(STAGING_DIR_HOST)/bin
$(INSTALL_BIN) src/po2lmo $(STAGING_DIR_HOST)/bin/po2lmo
$(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/LuaSrcDiet.lua $(STAGING_DIR_HOST)/bin/LuaSrcDiet
論壇:
https://github.com/openwrt/luci/issues/623
https://forum.openwrt.org/viewtopic.php?pid=357891#p357891
動手做之前先仔細閱讀上面這兩個討論區,大有裨益。