出于系統安全考慮,需要把Luci登入和SSH登入的賬戶做隔離。
其實就是在系統原有基礎上,增加一個隻能通路Luci的非root賬戶。
(一)首先需要增加一個root權限的admin使用者,我是用手動修改檔案的方式添加,還可以使用useradd指令添加。
1、建立使用者 package\base-files\files\etc\passwd (系統中路徑 \etc\passwd )
root:x:0:0:root:/root:/bin/ash
+ admin:x:0:0:admin:/root:/bin/false
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
注意:需要将登入Shell改為false,這樣就不可以用admin使用者登入SSH和序列槽。
2、設定密碼 package\base-files\files\etc\shadow (系統中路徑 \etc\shadow )
root:$1$zQwaOOzF$h8DoCAuWFGJB1uCd6l11x1:18096:0:99999:7:::
+ admin:$1$Fm5h2QN9$jq.LJZWpFtt/bFaEKqKoh.:18096:0:99999:7:::
daemon:*:0:0:99999:7:::
ftp:*:0:0:99999:7:::
network:*:0:0:99999:7:::
這一步其實是先編輯 /etc/shadow 檔案,方法是複制 root 的那行資訊出來,然後改名為 admin,接着再 passwd admin 指令修改密碼。
(二)修改Luci頁面檔案
1、feeds/luci/modules/luci-base/luasrc/controller/admin/index.lua (系統中路徑 /usr/lib/lua/luci/controller/admin/index.lua )
- page.sysauth = "root"
+ page.sysauth = "admin"
2、feeds/luci/modules/luci-mod-system/luasrc/controller/admin/system.lua
(系統中路徑 /usr/lib/lua/luci/controller/admin/system.lua )
- luci.http.write_json({ code = luci.sys.user.setpasswd("root", password) })
+ luci.http.write_json({ code = luci.sys.user.setpasswd("admin", password) })
這一步很重要,否則 LUCI 會允許你用這個建立的使用者修改了 root 的密碼(在 system->administration 這裡操作)。
3、/usr/lib/lua/luci/controller/admin/servicectl.lua 有些版本可能需要修改這個檔案
entry({"servicectl"}, alias("servicectl", "status")).sysauth = "root"
改為:
entry({"servicectl"}, alias("servicectl", "status")).sysauth = {"admin"}
這麼做則允許 LUCI 可以儲存并且激活所做的設定。
(三)rpcd
package\system\rpcd\files\rpcd.config (系統中路徑 /etc/config/rpcd)
+ config login
+ option username 'admin'
+ option password '$p$admin'
+ list read '*'
+ list write '*'
rpcd和Luci的關系:rpcd被uhttpd(luci頁面的web伺服器)調用,網頁修改配置後 ,由rpcd通知procd調用相應的服務。
是以這裡要給新增加的使用者,增權重限吧。
本文參考以下文章:
http://www.groad.net/bbs/forum.php?mod=viewthread&tid=8847
https://forum.openwrt.org/t/solved-luci-add-support-user-in-addition-to-root/17402
https://blog.csdn.net/wdsfup/article/details/70786602