`
bing1983333
  • 浏览: 5115 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

【原】记一次找回mac root账号的苦逼经历

 
阅读更多

1)缘起

       之前我在mac上自己搞了个shell脚本,一条龙完成svn代码更新、打包、应用部署、jboss启动等动作,但是在unix环境下有一条法律:1024以下的端口都是保留给root用户使用的,这样我以自己的账号起web服务器想占用80端口岂不捉急。。。之前在网上找到一个方法,利用ipfw做端口转发,jboss http服务端口仍保留8080,通过ipfw将所有发往80端口的请求都转发到8080端口,配置如下:

sudo ipfw del 60000
sudo ipfw add 60000 fwd 127.0.0.1,8080 tcp from any to any 80 in

将如上命令放在我的ssh自动部署脚本里,大功告成~但是有一个问题,可以看到ipfw需要sudo执行权限,每次很爽的运行脚本时,都要暂停以下愉快心情,输入一次密码。于是某日晚上,我就上网找绕过sudo密码输入的方法。。。

 

2)中招

       很快就找到一个解救方法:http://www.51testing.com/html/38/225738-216699.html,大致思路是修改sudo的配置文件/etc/sudoers,其中支持将某个用户配置为sudo执行命令无需密码输入(甚至可以针对指定命令做到这一点)。其中将我带沟里的就是如下这一段:

 

依葫芦画瓢,我通过sudo visudo将自己的/etc/sudoers修改如下:

# User privilege specification
root    ALL=(ALL) ALL
yangchuan ALL = NOPASSWD : yangchuan ALL = NOPASSWD: /sbin/ipfw
#%admin  ALL=(ALL) ALL

 保存退出,悲剧就此开始。此时我发现配置的确生效了,而且我发现sudo现在只能执行唯一一个命令就是ipfw ,其它命令都不能执行,其实刚才的配置中本来指定了允许admin组在所有主机上执行所有sudo命令,但是。。。我刚才把它注掉了。

       此时,为需要干的就是把sudoers文件恢复回来,现在作茧自缚sudo是不能用了,那直接走root用户把,悲剧的是我死活想不起来root密码了,试遍所有密码之后仍无法登陆到root,当时脑子要炸了,搜遍网上所有资料关于“如何找回root密码”,很多人说要用原厂OSX安装光盘启动,那里有初始化root密码的功能,但是找到mac纸盒一翻,没有光盘啊。。。上网一查才知,lion之后mac都已经不带启动盘了(因为都已经流行联网安装了),再搜,这时找到一位大神的牛帖,顿时看到曙光,http://www.rin9.com/read-htm-tid-272240.html。关键信息如下:

三,如果以上2条都不成功就只能在single user mode(command+S)下修改了,启动电脑进入single user模式,打入"/sbin/fsck -y"(先检查一下磁盘哈),再打入"/sbin/mount -wu /"(装载系统volumn并赋予读写权利),然后打入"/sbin/SystemStarter",启动系统服务包括网络服务,这样我们就能进入netinfo数据库来修改root的账号密码了,"passwd root",大功告成!

注:也可以把root的密码hash存下来,打入"nidump passwd .",纪录下hash,然后还原算出原root的密码。

 总之看上去这是mac的一种神奇的single user目测直接以类似root用户身份进入了系统,但是按这个教程操作几遍,都无法进入passwd命令行,对此模式操作也不懂,不敢胡乱折腾。。。带着郁闷关机睡觉,想到后面万一逼不得已需要重装OSX系统,那可如何是好,这么多的软件开发环境那会是何等的折腾啊。(因为毕竟后面开发时肯定会用到root账号的)

 

3)拆招

       第二天早上我很早就去了公司,打算做最后一搏,搞不好的话就拿到苹果店里去问问吧(想想就头大),再次尝试了两遍昨晚教程中的做法,仍失败。。。抓腮挠耳。忽然我有点思路,如果在所谓single user模式下,我是以root身份操作的,我何不直接以root身份去恢复/etc/sudoers文件,将sudo命令解套,然后在sudo passwd解救root账户,冒险尝试了一把

首先发现sudoers文件是只读权限的(联想到visudo命令是如何编辑此文件的。。。以后再研究先搞问题),chmod尝试修改一下文件权限,发现成功了!!!!此时其实基本就可确定此路能通了,后面恢复了文件,重新进入系统,执行sudo,忽然跳出“/private/etc/sudoers is mode 0640, should be 0440”,忽然回想我刚才chmod改了权限但是没有改回去,unix对这个文件的要求真是严格的说。再重启进入single user模式,chmod改回只读,最后发现——我成功了!!!sudo命令权限恢复,然后赶紧赶紧sudo passwd了一把,找回了久违的root密码。心里好幸福,心想终于爬出了这个自己挖的坑,而且还是在上班前。

 

4)晕死

       时间来到下午,偶然间我看到一个帖子,http://bbaobelief.blog.51cto.com/3838275/962071。意思是教人如何将mac的root账号关闭,继续一查,发现默认情况下mac得root账号就是关闭的。。。而且sudo passwd命令时相当于会连带启用了root账号。

回想一下早上的情况把,当时其实根本不是我想不起root密码了,而是root账号根本没有启用,后来我走奇淫巧计的single user模式恢复sudoers文件之后走sudo passwd其实是将root账户开通了。那说明,如果昨晚我直接到这里来开通root用户并初始化密码,就可直接走root恢复sudoers文件了,OMG好吧,还好没有被逼折腾到重装系统的程度。。。看上掉到自己给自己挖的一个大坑里,九牛二虎之力爬墙翻出来了,回头一看发现坑底其实有个电梯直接上来 T_T

 

 

由于一惊一乍感受比较深刻,写下来记录一下,后续也努力驱动自己持续写技术blog。通过这个事,还是被动去了解了sudo原理及mac的root机制,也算有收获~最终我的sudoers文件修改如下,现在真正通过自定义脚本做到了mac环境下得一键实现“更新代码+打包+log清理+ipfw端口转发+部署web服务”。

# User privilege specification
root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL
yangchuan ALL = NOPASSWD:ALL

 

  • 大小: 228.7 KB
  • 大小: 176.1 KB
  • 大小: 60.1 KB
  • 大小: 67.8 KB
分享到:
评论

相关推荐

    linux系统如何找回root密码

    GRUB 是一个多重启动管理器,可以在多个操作系统共存时选择启动哪个系统。它可以载入操作系统的内核和初始化操作系统,并可以把引导权直接交给操作系统来完成引导。此外,GRUB 还可以直接从 FAT、minix、FFS、ext2 ...

    NC6超级账号root忘记密码的处理方法

    第二种方法是从一个已知口令的环境中拷入“\安装文件夹\ierp\sf\superadmin.xml”,然后登录进去后重改密码。这两种方法都可以帮助用户恢复root账号的密码。 account.xml和Superadmin.xml文件的内容 --------------...

    Linux操作系统root账号密码获取防范技术研究.pdf

    Linux操作系统root账号密码获取防范技术研究.pdf

    Ubuntu 13.04 启用root账号

    Ubuntu 13.04 启用root账号 在 Ubuntu 13.04 中,默认情况下 root 账户是被禁用的,这是为了安全考虑。但是,在某些情况下,我们需要启用 root 账户来完成一些高级任务。在本文中,我们将介绍如何在 Ubuntu 13.04 ...

    一次性ROOT软件

    安卓手机一次性root工具,如果想还原的话,恢复手机出厂设置即可还原,和其他的root不同,不需要修改系统文件。root时需要手机启用USB调试,然后连接电脑,运行“双击我Root.bat”,稍等即可root,本人手机i9023root...

    Ubuntu18 root账号自动登陆.docx

    在Ubuntu 18.04操作系统中,出于安全考虑,默认不允许root用户直接登录,而是推荐使用普通用户通过sudo命令获取临时管理员权限。然而,有些情况下可能需要开启root用户的自动登录功能,例如在无人值守的服务器或者...

    java【root账号操作】.svg

    java【root账号操作】.svg

    weblogic下如何用非root账号使用80端口

    ### WebLogic 下如何用非 root 账号使用 80 端口 #### 前提条件 - **操作系统环境**:本教程适用于 Linux 环境,其他 Unix 系统(如 Solaris)可能也有类似的实现方法。 - **软件版本**:在 WebLogic Server 8.1 ...

    HP-UNIX操作系统root账号被锁定的两种解决方法.docx

    方法一:通过单用户模式取消Trusted System并解锁root 1. 重启机器,在自检完成后的10秒内,屏幕会显示提示信息"To discontinue, press any key in 10 seconds",此时按下任意键,系统会停止正常启动,进入Main ...

    Ubuntu如何使用root帐户登陆

    在Ubuntu和其他许多基于Debian的Linux发行版中,默认情况下root用户账号是被禁用的,这意味着您无法直接使用它进行登录。这种设计是为了增强系统的安全性,避免因误操作或恶意攻击导致系统遭到破坏。然而,在某些...

    rhel 7 找回root密码

    RHEL 7 中 Root 密码找回是一项重要的系统管理员任务,especially when you have lost or forgotten the root password. 在 RHEL 7 中,我们不能像 RHEL 6 那样使用 single-user 模式来重置密码,而是需要使用 GRUB ...

    Linux 找回root密码方法

    此外,在 Linux 系统中,还有许多其他的方法可以用来找回 root 密码,例如使用单用户模式、使用 GRUB 引导器等。但是,这些方法都需要一定的技术基础和经验,因此需要谨慎进行操作。 Linux 系统的安全性是非常重要...

    整理了以下四种在MySQL中修改root密码的方法

    MySQL 是一种流行的关系数据库管理系统,广泛应用于各个领域。在实际应用中,MySQL 的 root 密码是非常重要的,因为它是 MySQL 的最高权限账户。如果我们忘记了 root 密码,将会对数据库的安全和维护产生很大的影响...

    玩客云Root大师-轻松Root玩客云

    玩客云Root大师是一款专为玩客云设备设计的工具,旨在帮助用户获取玩客云设备的最高权限,即Root权限。Root权限是Android系统中的一个概念,它允许用户对设备进行深度定制和优化,超越了普通用户的使用限制。在玩客...

    误删mysqlroot用户一键恢复(python)

    mysql root用户误删除一键恢复,使用python 脚本一键恢复

    Liunx的root账号的密码忘记了怎么修改密码

    单用户模式(Single User Mode)是Linux系统启动的一种特殊模式,主要用于进行系统维护工作,例如修复启动问题或重置root用户的密码等。在这种模式下,系统只允许一个用户登录,并且会禁用网络功能。 #### 进入单...

    在Linux下安装Mysql(非root)

    Linux 下非 Root 用户安装 Mysql 在 Linux 操作系统中安装 Mysql 数据库可以通过多种方式实现,包括使用源代码编译安装和二进制安装。对于非 Root 用户来说,安装 Mysql 可能会遇到一些权限问题,但是通过正确的...

    重置root密码

    开发过程中,有时忘记了mysql数据的root账号密码,本篇手把手教你如何轻松重置root账号密码

    [2.2]原版超级精简省电稳定完全ROOT完美版

    [2.2]原版超级精简省电稳定完全ROOT完美版

    MySQL修改root账号密码的方法

    [root@DB-Server ~]# mysql -u root mysql> FLUSH PRIVILEGES; mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; Query OK, 0 rows affected (0.00 sec) ``` 4. **重启MySQL服务** 最后,关闭...

Global site tag (gtag.js) - Google Analytics