本发明涉及密码重置技术领域,特别是一种基于linux的密码重置方法与系统。
背景技术
linux系统中,若用户忘记密码后,或者通过不断回忆反复尝试,或者需要通过光盘救援模式,或者修改grub内核启动参数进入shell界面进行密码重置的复杂操作,修改grub内核启动参数,需要经过9个步骤才能完成密码重置操作。
修改grub内核启动参数具体操作如下:
在启动grub菜单中,选择编辑选项启动;系统启动到grub界面时,按e键进入编辑界面,在linux16的行结尾输入rd.break,按ctrl+x启动系统;在启动后的shell界面中,重新挂载文件系统以便读写;设置根目录;修改root密码;更新selinux策略;退出chroot模式;恢复系统初始化界面;重新启动。
从上述操作可以看出,现有技术中对于密码重置,操作过于繁琐,实用性差,从而大大降低了用户体验。
技术实现要素:
本发明的目的是提供一种基于linux的密码重置方法与系统,旨在解决现有技术中对于密码重置存在操作过于繁琐,实用性差的问题,实现简易操作即可进行密码重置,简化操作,提高用户体验。
为达到上述技术目的,本发明提供了一种基于linux的密码重置方法,包括以下步骤:
s1、将移动设备的盘符挂载到/mnt;
s2、向所述移动设备中写入grub;
s3、将密码重置脚本写入initramfs.img文件中,生成新的initramfs.img文件;
s4、将包含密码重置脚本的initramfs.img文件拷入移动设备。
s5、修改移动设备中grub.cfg文件的initramfs引导文件为新生成的initramfs.img文件。
优选地,所述步骤s3具体操作为:
s301、解压initramfs.img文件;
s302、将密码重置脚本拷至/lib/systemd/system目录下;
s303、重新打包initramfs.img,生成新的initramfs.img文件。
优选地,所述移动设备包括u盘、移动硬盘。
优选地,所述方法还包括:
判断linux版本,并执行相应的密码重置脚本。
优选地,所述linux版本包括centos、rhel、ubuntu、sles、debian。
本发明还提供了一种基于linux的密码重置系统,所述系统包括
盘符挂载模块,用于将移动设备的盘符挂载到/mnt;
grub写入模块,用于向所述移动设备中写入grub;
引导文件重新生成模块,用于将密码重置脚本写入initramfs.img文件中,生成新的initramfs.img文件;
引导文件拷贝模块,用于将包含密码重置脚本的initramfs.img文件拷入移动设备。
引导文件重定向模块,用于修改移动设备中grub.cfg文件的initramfs引导文件为新生成的initramfs.img文件。
优选地,所述引导文件重新生成模块包括:
解压单元,用于解压initramfs.img文件;
脚本拷贝单元,用于将密码重置脚本拷至/lib/systemd/system目录下;
重新打包单元,用于重新打包initramfs.img,生成新的initramfs.img文件。
优选地,所述移动设备包括u盘、移动硬盘。
优选地,所述系统还包括:
版本判别模块,用于判断linux版本,并执行相应的密码重置脚本。
优选地,所述linux版本包括centos、rhel、ubuntu、sles、debian。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
与现有技术相比,本发明通过将密码重置脚本内置于u盘等移动设备中,当用户忘记系统密码需要重置密码时,在系统启动时按f11键选择启动设备,选择从该u盘移动设备引导启动,启动后内置的密码重置脚本自动开始运行,即可进行密码重置。通过本申请,用户不需要回忆反复尝试或通过修改grub内核启动参数进入shell界面进行密码重置的复杂操作,只需要从预设的u盘移动设备启动重置即可,减轻了用户的记忆负担,简化了重置密码的过程,方便用户重置密码。
附图说明
图1为本发明实施例中所提供的一种基于linux的密码重置方法流程图;
图2为本发明实施例中所提供的一种基于linux的密码重置系统结构框图。
具体实施方式
为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
下面结合附图对本发明实施例所提供的一种基于linux的密码重置方法与系统进行详细说明。
如图1所示,本发明实施例公开了一种基于linux的密码重置方法,包括以下步骤:
s1、将移动设备的盘符挂载到/mnt;
s2、向所述移动设备中写入grub;
s3、将密码重置脚本写入initramfs.img文件中,生成新的initramfs.img文件;
s4、将包含密码重置脚本的initramfs.img文件拷入移动设备;
s5、修改移动设备中grub.cfg文件的initramfs引导文件为新生成的initramfs.img文件。
在系统下通过fdisk-1查看移动设备的盘符,例如盘符为sdb4,将该盘符挂载到/mnt:
#mount/dev/sdb4/mnt
向所述移动设备中写入grub:
#grub2-install--root-directory=/mnt--no-floppy/dev/sdb
#cp/boot/grub2/grub.cfg/mnt/boot/grub2/grub.cfg
将密码重置脚本写入initramfs.img文件中:
首先解压initramfs.img文件:
#mkdir/tmp&cd/tmp
#/usr/lib/dracut/skipcpio/boot/initramfs-`uname-r`.img|gunzip-c|cpio-i–d
然后将密码重置脚本resetpwd.sh拷至/lib/systemd/system目录下:
#cpresetpwd.sh/lib/systemd/system
最后重新打包initramfs.img:
#find.2>/dev/null|cpio--quiet-c-o|xz-9--format=lzma>"new_initramfs.img"
将包含密码重置脚本的initramfs.img文件拷入移动设备中:
#cp/tmp/new_initramfs.img/mnt/boot
修改移动设备中grub.cfg文件的initramfs引导文件为新生成的new_initramfs.img:
#vim/mnt/boot/grub2/grub.cfg
在服务器上插入预置重置密码脚本的移动设备,在启动时选择启动项,使服务器从移动设备引导启动,进入initramfs中,执行密码重置脚本resetpwd.sh,当密码重置脚本运行后,自动判断linux版本并执行相应的密码重置脚本,密码重置完成后自动重启,使用预设密码登陆即可完成密码重置。
所述移动设备包括u盘、移动硬盘等。
密码重置脚本运行时,由于linux版本有很多,如centos、rhel、ubuntu、sles、debian等,其密码重置方式也有所不同,脚本需要判断linux版本并执行相应的密码重置脚本。
本发明实施例通过将密码重置脚本内置于u盘等移动设备中,当用户忘记系统密码需要重置密码时,在系统启动时按f11键选择启动设备,选择从该u盘移动设备引导启动,启动后内置的密码重置脚本自动开始运行,即可进行密码重置。用户不需要回忆反复尝试或通过修改grub内核启动参数进入shell界面进行密码重置的复杂操作,只需要从预设的u盘移动设备启动重置即可,减轻了用户的记忆负担,简化了重置密码的过程,方便用户重置密码。
如图2所示,本发明实施例还公开了一种基于linux的密码重置系统,所述系统包括:
盘符挂载模块,用于将移动设备的盘符挂载到/mnt;
grub写入模块,用于向所述移动设备中写入grub;
引导文件重新生成模块,用于将密码重置脚本写入initramfs.img文件中,生成新的initramfs.img文件;
引导文件拷贝模块,用于将包含密码重置脚本的initramfs.img文件拷入移动设备。
引导文件重定向模块,用于修改移动设备中grub.cfg文件的initramfs引导文件为新生成的initramfs.img文件。
所述引导文件重新生成模块包括:
解压单元,用于解压initramfs.img文件;
脚本拷贝单元,用于将密码重置脚本拷至/lib/systemd/system目录下;
重新打包单元,用于重新打包initramfs.img,生成新的initramfs.img文件。
所述移动设备包括u盘、移动硬盘。
所述系统还包括:
版本判别模块,用于判断linux版本,并执行相应的密码重置脚本;所述linux版本包括centos、rhel、ubuntu、sles、debian。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。