当Solaris系统root密码不幸遗忘时,该如何找回访问权限?
通常需要根据系统状况分为两类场景:一类是工作站仅存在root账户,没有其他用户;另一类是除root外还有普通用户账号。两种情况的处理方式差异明显,值得分开详细说明。
情况一:仅有root用户
如果设备仍连接网络,理论上可采用远程缓冲区溢出方法,但这类技巧不仅不够“经典”,且许多溢出攻击存在损坏系统的风险,因此不建议采用。更稳妥且标准的做法是使用SUN自带的安装光盘引导系统:
- 以光盘启动,进入单用户模式:
boot cdrom -s - 检查根分区文件系统:
fsck /dev/dsk/c0t0d0s0(实际设备名依据根分区而定) - 挂载根分区:
mount -F ufs /dev/dsk/c0t0d0s0 /mnt - 设置终端类型:
TERM=ansi; export TERM - 编辑
/mnt/etc/shadow文件,将root对应的密码字段清空。 - 重启后root密码即为空,直接登录即可。
整个流程清晰可靠,几乎不会对系统造成额外影响。
情况二:存在普通用户
如果系统内已有普通用户,本地缓冲区溢出也是一种可选方案——虽然其破坏性较远程攻击小,但仍存在损伤硬盘引导区的隐患。真正安全且巧妙的方法是利用“文件连接”漏洞来获取root权限,这种方式几乎无风险。具体操作细节此处不再展开,但核心思路是:在普通用户权限下,借助符号链接或硬链接的权限缺陷,间接修改root口令文件。
话说回来,无论采用哪种方法,事后都建议尽快重置一个强密码,并检查系统日志,确保没有其他安全隐患。
