欢迎光临散文网 会员登陆 & 注册

Linux麒麟系统(V10)rc.local开机不启动

2023-04-02 22:32 作者:Rookie白小黑  | 我要投稿

此现象原因很多,我碰到的是其中一种,分享出来参考一下

ღ( ´・ᴗ・` )


问题:
系统启动后,rc.local文件不自启,导致里面的脚本不执行。

结论:
rc.local 文件不启动的根本原因就是“麒麟安全授权认证”机制开启,而rc.local文件的安全标记为 /etc/rc.local:none:none:unknown,导致无法开机自启。此认证机制默认都是关闭状态。

解决方案:使用“sudo  kysec_set  -n  exectl  -v  original  /etc/rc.local“    //将执行安全标记修改为 original 即可。


分析过程:

使用“systemctl status rc-local.service”可以看到此服务的状态是:
...
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" 重启服务会报错,报错内容:
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"执行rc.local文件,偶然发现弹出一个弹窗(正常情况下不会有这个弹窗),弹窗内容为:
...
麒麟安全授权认证(调用者:bash) (作为超级用户)
检测到未认证程序试图执行,是否允许?
程序:rc.local
路径:/etc/rc.local
三个按钮: "禁止" "允许" "本次允许"
...
点击允许后,rc.local里面配置正常执行。再次使用 "systemctl restart rc-local.service" 重启服务无报错。重启机器后,rc.local正常执行。结合服务报错信息"Permission denied"来看大概是因为这个认证程序开启了,导致rc.local没有权限而导致启动失败;



经过查询这个认证机制后发现:.

此时我旁边有几台正常电脑,使用 "kysec_get /etc/rc.local" 可以看到系统上面此认证程序是没有开启的,B上面开启了.
故障机器B上:/etc/rc.local:none:none:verified
正常机器A上:Kysec is Disabled
正常机器C上:/etc/rc.local:none:none:original

KySec有三种安全模式:① 强制模式(Normal):出现违规操作时,不止会审计记录该操作,还会阻止该操作的运行;② 警告模式(Warning):出现违规操作时,会弹出麒麟安全授权认证框进行授权(在上面2023.3.18问题中提到的弹窗);③ 软模式(Softmode):出现违规操作时,只会审计该操作,而不会阻止该操作的运行。

安全标记说明:
(1)文件身份标记(userid),用于对执行文件的用户进行限制;三个标记符号:① secadm  文件属于安全管理员,只能由安全管理执行  ② audadm  文件属于审计管理员,只能由审计管理员执行  ③ 无身份标记,所有用户都能执行
(2)文件保护标记(protect),用于对文件进行保护和检测;三个标记符号:① verify  执行前检查文件是否发生变化,如果发生变化,禁止执行 ② readonly  文件只读 ③ 无文件保护标记。
(3)执行控制标记(exectl),用于对文件的是否可执行进行控制;五个标记符号:① unknown  未知文件标记,该标记不可执行  ② original  系统原始文件标记,该标记可以执行 ③ verified  第三方可执行标记,该标记可执行 ④ kysoft  可信安全脚本标记,该标记可执行 ⑤ trusted  可信文件标记,拥有该标记的程序对文件进行修改时,文件标记不变,该标记可执行。

使用 “kysec_get  /etc/rc.local”可以查看安全标记,例如:
/etc/rc.local:none:none:unknown

使用 “getstatus” 查看kysec相关安全状态, 例如:
"""
KySec status: enabled    // 表示当前为强制模式

exec control    : warning    // 表示当前执行控制功能为警告
net control       : off    // 表示当前网络控制功能关闭
file protect    : on    // 表示当前文件保护功能为开启 (只有当相应功能的状态为(on)的时候,其所控制的功能配置才能生效)
kmod protect    : on    // 表示当前内核模块保护功能为开启
three admin    : off    // 表示当前三权分立状态为关
process protect    : off    // 表示当前进程保护功能为开启
"""

修改当前Kysec的相关安全状态:
sudo setstatus softmode/normal    // 设置kysec安全状态为软/强制模式
sudo setstatus -f exectl off/on        // 开启/关闭 执行控制功能
sudo setstatus -f kmod off/on        // 开启/关闭 内核模块保护功能
sudo setstatus -f fpro off/on        // 开启/关闭 文件保护功能





























Linux麒麟系统(V10)rc.local开机不启动的评论 (共 条)

分享到微博请遵守国家法律