Linux麒麟系統(tǒng)(V10)rc.local開機(jī)不啟動
此現(xiàn)象原因很多,我碰到的是其中一種,分享出來參考一下
?( ′???` )
問題:
系統(tǒng)啟動后,rc.local文件不自啟,導(dǎo)致里面的腳本不執(zhí)行。
結(jié)論:
rc.local 文件不啟動的根本原因就是“麒麟安全授權(quán)認(rèn)證”機(jī)制開啟,而rc.local文件的安全標(biāo)記為 /etc/rc.local:none:none:unknown,導(dǎo)致無法開機(jī)自啟。此認(rèn)證機(jī)制默認(rèn)都是關(guān)閉狀態(tài)。
解決方案:使用“sudo? kysec_set? -n? exectl? -v? original? /etc/rc.local“?? ?//將執(zhí)行安全標(biāo)記修改為 original 即可。
分析過程:
使用“systemctl status rc-local.service”可以看到此服務(wù)的狀態(tài)是:
...
Active: failed
...
... rc-local.service: Failed to execute command: Permission denied
... rc-local.service: Failed at step EXEC spawning /ect/rc.local: Permission denied
... rc-local.service: Control process exited, code=exited, status=203/EXEC
... rc-local.service: Failed with result 'exit-code'
... Failed to start /etc/tc.local Compatibility
...
可以看出腳本啟動了,但是啟動失敗了。
使用 "systemctl restart rc-local.service" 重啟服務(wù)會報(bào)錯,報(bào)錯內(nèi)容:
Warning: The unit file , source configurate file or drop-ins of rc-local.service changed on disk . Run 'systemcrl daemon-reload' ro reload units. Job rc-local.service failed because the control process exited with error code.
See "systemctl status rc-local.service" and "journalctl -xe" for details.
直接使用"/etc/rc.local"執(zhí)行rc.local文件,偶然發(fā)現(xiàn)彈出一個彈窗(正常情況下不會有這個彈窗),彈窗內(nèi)容為:
...
麒麟安全授權(quán)認(rèn)證(調(diào)用者:bash) (作為超級用戶)
檢測到未認(rèn)證程序試圖執(zhí)行,是否允許?
程序:rc.local
路徑:/etc/rc.local
三個按鈕: "禁止" "允許" "本次允許"
...
點(diǎn)擊允許后,rc.local里面配置正常執(zhí)行。再次使用 "systemctl restart rc-local.service" 重啟服務(wù)無報(bào)錯。重啟機(jī)器后,rc.local正常執(zhí)行。結(jié)合服務(wù)報(bào)錯信息"Permission denied"來看大概是因?yàn)檫@個認(rèn)證程序開啟了,導(dǎo)致rc.local沒有權(quán)限而導(dǎo)致啟動失敗;
經(jīng)過查詢這個認(rèn)證機(jī)制后發(fā)現(xiàn):.
此時(shí)我旁邊有幾臺正常電腦,使用 "kysec_get /etc/rc.local" 可以看到系統(tǒng)上面此認(rèn)證程序是沒有開啟的,B上面開啟了.
故障機(jī)器B上:/etc/rc.local:none:none:verified
正常機(jī)器A上:Kysec is Disabled
正常機(jī)器C上:/etc/rc.local:none:none:original
KySec有三種安全模式:① 強(qiáng)制模式(Normal):出現(xiàn)違規(guī)操作時(shí),不止會審計(jì)記錄該操作,還會阻止該操作的運(yùn)行;② 警告模式(Warning):出現(xiàn)違規(guī)操作時(shí),會彈出麒麟安全授權(quán)認(rèn)證框進(jìn)行授權(quán)(在上面2023.3.18問題中提到的彈窗);③ 軟模式(Softmode):出現(xiàn)違規(guī)操作時(shí),只會審計(jì)該操作,而不會阻止該操作的運(yùn)行。
安全標(biāo)記說明:
(1)文件身份標(biāo)記(userid),用于對執(zhí)行文件的用戶進(jìn)行限制;三個標(biāo)記符號:① secadm? 文件屬于安全管理員,只能由安全管理執(zhí)行? ② audadm? 文件屬于審計(jì)管理員,只能由審計(jì)管理員執(zhí)行? ③ 無身份標(biāo)記,所有用戶都能執(zhí)行
(2)文件保護(hù)標(biāo)記(protect),用于對文件進(jìn)行保護(hù)和檢測;三個標(biāo)記符號:① verify? 執(zhí)行前檢查文件是否發(fā)生變化,如果發(fā)生變化,禁止執(zhí)行 ② readonly? 文件只讀 ③ 無文件保護(hù)標(biāo)記。
(3)執(zhí)行控制標(biāo)記(exectl),用于對文件的是否可執(zhí)行進(jìn)行控制;五個標(biāo)記符號:① unknown? 未知文件標(biāo)記,該標(biāo)記不可執(zhí)行? ② original? 系統(tǒng)原始文件標(biāo)記,該標(biāo)記可以執(zhí)行 ③ verified? 第三方可執(zhí)行標(biāo)記,該標(biāo)記可執(zhí)行 ④ kysoft? 可信安全腳本標(biāo)記,該標(biāo)記可執(zhí)行 ⑤ trusted? 可信文件標(biāo)記,擁有該標(biāo)記的程序?qū)ξ募M(jìn)行修改時(shí),文件標(biāo)記不變,該標(biāo)記可執(zhí)行。
使用 “kysec_get? /etc/rc.local”可以查看安全標(biāo)記,例如:
/etc/rc.local:none:none:unknown
使用 “getstatus” 查看kysec相關(guān)安全狀態(tài), 例如:
"""
KySec status: enabled?? ?// 表示當(dāng)前為強(qiáng)制模式
exec control?? ?: warning?? ?// 表示當(dāng)前執(zhí)行控制功能為警告
net control? ??? ?: off?? ?// 表示當(dāng)前網(wǎng)絡(luò)控制功能關(guān)閉
file protect?? ?: on?? ?// 表示當(dāng)前文件保護(hù)功能為開啟 (只有當(dāng)相應(yīng)功能的狀態(tài)為(on)的時(shí)候,其所控制的功能配置才能生效)
kmod protect?? ?: on?? ?// 表示當(dāng)前內(nèi)核模塊保護(hù)功能為開啟
three admin?? ?: off?? ?// 表示當(dāng)前三權(quán)分立狀態(tài)為關(guān)
process protect?? ?: off?? ?// 表示當(dāng)前進(jìn)程保護(hù)功能為開啟
"""
修改當(dāng)前Kysec的相關(guān)安全狀態(tài):
sudo setstatus softmode/normal?? ?// 設(shè)置kysec安全狀態(tài)為軟/強(qiáng)制模式
sudo setstatus -f exectl off/on?? ??? ?// 開啟/關(guān)閉 執(zhí)行控制功能
sudo setstatus -f kmod off/on?? ??? ?// 開啟/關(guān)閉 內(nèi)核模塊保護(hù)功能
sudo setstatus -f fpro off/on?? ??? ?// 開啟/關(guān)閉 文件保護(hù)功能