注意:我在这里询问了有关这些捆绑软件第6版的类似问题。请注意,有7个使用systemd,并且可能具有不同的实现
在极少数情况下,例如由于不当关机或启动时强制fsck-check失败而阻止RHEL或CentOS 7系统启动时,控制台将提示用户输入root密码。
如何禁用密码检查并将其直接放到root shell中?
不可接受的答案:
init
在内核命令行上覆盖(即,grub)Systemd正在处理服务和目标。目标相当于运行级别,服务相当于初始化脚本。大多数systemd配置位于中/usr/lib/systemd
,而标准init位于中/etc/{init.d,rc*.d,inittab}
。
当在启动过程中的问题踢(默认是getty.target或graphical.target,你可以让他们用systemctl get-default
)systemd被切换到emergency.target。
该“紧急”目标将依次加载文件emergency.service
。该服务包含多行,其中包括:
...
[Service]
Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again\\nto boot into default mode.'
ExecStart=-/bin/sh -c "/sbin/sulogin; /usr/bin/systemctl --fail --no-block default"
...
我们只需要将调用替换为/sbin/sulogin
:
ExecStart=-/bin/sh -c "/sbin/sushell; /usr/bin/systemctl --fail --no-block default"
然后,我们将直接放置到shell中,而不是通过sulogin提示输入密码。(我们可以使用/bin/sh
,但/sbin/sushell
与CentOS6 / RHEL6的答案一致。实际上,sushell
简单的exec的$SUSHELL
默认值是/bin/bash
。)
要使此更改“永久”(即不受yum
更新影响),请对该文件的副本进行更改并将其放置在中/etc/systemd/system/
。另外,要使“救援模式”以相同的方式工作,请替换中的同一行rescue.service
。这是一个shell / sed脚本,可以简化该过程:
for SERVICE in rescue emergency ; do
sed '/^ExecStart=/ s%"/sbin/sulogin;%"/sbin/sushell;%' /usr/lib/systemd/system/$SERVICE.service > /etc/systemd/system/$SERVICE.service
done
要对此进行测试,请确保不使用该系统,并告诉systemd
切换到rescue
目标:
systemctl rescue
这将关闭网络连接并在控制台上打开外壳。您可以对emergency
目标进行测试,但这并不能完全正常地工作(出于某种原因),并且可能需要完全重新启动。
您也可以从引导菜单(grub)中进行测试。要测试紧急模式,这很容易。启动,然后在获得菜单时,单击“ e”进行编辑,然后使用D-pad导航到以“ linux16
append”开头和CTRL-A
结尾的行(单击以到达该行的结尾)emergency
:
linux16 ... emergency
要测试救援模式,与上述步骤相同,但您必须更加明确:
linux16 ... systemd.unit=rescue.target
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句