今天,一位 Unix 培训师告诉我一个故事,其中 root 密码被泄露给了学生,其中一个家伙从/usr/bin/chmod
自己身上删除了执行权限。chmod
在这种情况下如何恢复并使其再次可执行?假设从外部来源获取它或重新编译它不是一个更好的选择,是否有一些可以chmod
自行恢复的智能黑客?
请注意,这发生在很久以前,我不是在寻找当前问题的解决方案,只是好奇 Unix 为我们提供了哪些解决此类问题的方法。
root@system:~# less myfile
-bash: /bin/less: Input/output error
Run Code Online (Sandbox Code Playgroud)
根文件系统已死。但我的猫还活着(在我的记忆中):
root@system:~# cat > /tmp/somefile
C^d
root@system:~#
Run Code Online (Sandbox Code Playgroud)
虽然他有点孤独,但他所有的朋友都走了:
root@system:~# mount
-bash: /bin/mount: Input/output error
root@system:~# dmesg
-bash: /bin/dmesg: Input/output error
root@system:~# less
-bash: /bin/less: Input/output error
root@system:~# chmod
-bash: /bin/chmod: Input/output error
Run Code Online (Sandbox Code Playgroud)
该系统仍在运行,并实现其目的。我知道,我知道,对此唯一明智的反应是关闭系统并更换根驱动器。不幸的是,这不是一个选择,因为它会花费大量的时间和金钱。此外,它会杀死我的猫,这会让我感到难过。
我想从捐赠者那里带他平时的朋友。我不敢尝试 scp 它们,以防 ssh 尝试加载它并切断线路(无论如何二进制文件已经消失了)。这听起来像是我猫表弟的工作:
root@system:~# netcat -l 1234 > /tmp/less
-bash: netcat: command not found
Run Code Online (Sandbox Code Playgroud)
可惜他早已不在了。
现在,我可以尝试欺骗我的猫执行一个仪式来复活他:
cat > netcat < /dev/tcp/localhost/9999
Run Code Online (Sandbox Code Playgroud)
那种工作。他几乎还活着:
root@system:/tmp# /tmp/netcat
-bash: /tmp/netcat: Permission denied
Run Code Online (Sandbox Code Playgroud)
他只需要一点点生命的火花。那个+x
我现在无法背诵的小魔法咒语。
你能帮我把我猫的朋友带回来吗?
现在我无法 chmod 它回来.. 或使用我的任何其他系统程序。幸运的是,这是在我一直在玩弄的虚拟机上,但是有什么办法可以解决这个问题吗?系统为 Ubuntu Server 12.10。
我试图重新启动到恢复模式,不幸的是,由于在 init-bottom 可用性运行后权限未授予某些程序,我现在根本无法启动到系统中 - 系统只是挂起。这是我看到的:
Begin: Running /scripts/init-bottom ... done
[ 37.062059] init: Failed to spawn friendly-recovery pre-start process: unable to execute: Permission denied
[ 37.084744] init: Failed to spawn friendly-recovery post-stop process: unable to execute: Permission denied
[ 37.101333] init: plymouth main process (220) killed by ABRT signal
Run Code Online (Sandbox Code Playgroud)
在此之后,计算机挂起。
我在阅读著名的Unix Recovery Legend 时,突然想到:
如果我打开了一个 BusyBox shell,并且 BusyBox 二进制文件本身被删除了,我还能使用 BusyBox 二进制文件中包含的所有命令吗?
显然,我无法从另一个正在运行的 shell 中使用这些命令的 BB 版本,例如bash
,因为 BusyBox 文件本身将无法bash
打开和运行。但是在 BusyBox 的运行实例中,在我看来,BB 可以通过两种方法运行命令:
如果 (1) 是 BusyBox 的工作方式,我希望在删除 BB 二进制文件后,某些 BusyBox 提供的命令在 BB 的运行实例中将变得不可用。
如果 (2) 是它的工作原理,那么 BusyBox 甚至可以用于恢复 BB 本身已被删除的系统——前提是仍然可以访问 BusyBox 的一个正在运行的实例。
这在任何地方都有记录吗?如果没有,有没有办法安全地测试它?
我的朋友在我的电脑上安装了 Linux Mint 17.3 Cinnamon 64 位。好吧,我忘记了用户名,所以我在网上搜索了“忘记用户名 linux”并来到这里。
我得到了在 GRUB 中的第一个项目中点击“e”的建议,我这样做了。建议的下一部分说寻找以 KERNAL 开头的行。现在这里是它变得有趣的地方。我没有在其中找到与 KERNAL 相关的一行。但是,我确实找到了以 LINUX 开头的一行。
完整的未编辑行如下:
linux /vmlinuz-3.19.0-32-generic root=UUID=0c031f3a-81ae-4c33-06cc--c82a855736d1 ro quiet splash $vt_handoff
Run Code Online (Sandbox Code Playgroud)
然后建议说查看并编辑splash quiet
到single
. 现在,如果您注意到上面的内容,quiet splash
而不是splash quiet
. 所以我想我会编辑quiet splash
到single
.
现在它要求输入root密码。任何人都可以帮忙吗?我想我需要一张Live CD。
正如标题所说,在 Solaris 10 机器上,root (/) 下的所有重要的东西或几乎所有重要的东西都移到了 /old 。所以现在尝试的典型故障时运行时,命令Cannot find /usr/lib/ld.so.1
(改变$PATH
,也试图改变$LD_LIBRARY_PATH
,$LD_LIBRARY_PATH_64
并$LD_RUN_PATH
和出口,但他们没有,这似乎改变实际库路径)。昨天尝试了很多寻找可能有帮助的东西,但没有发现任何东西实际上会改变 Solaris 10 的库路径,除了可能crle
但无法运行,因为Cannot find /usr/lib/ld.so.1
.
找到了很多 Linux 的 root 或 /usr/bin 恢复提示等,但有关 Solaris 10/Unix 的信息并不普遍且非常稀少。
不能运行cp
,ln
,mkdir
或mv
自Cannot find /usr/lib/ld.so.1
。不能使用其他会话登录到机器。尽管一个会话仍然可以使用,并且该窗口被while true; do date; echo hej 1234567; done
. 我们已经讨论了在 USB 驱动器上使用 Solaris 引导 CD 和 Linux dist 的解决方案。我们已经讨论了将硬盘驱动器磁盘切换到另一个机架的解决方案。
该/.../static/.../mv
解决方案已经过测试,但没有奏效。
仍然可以使用的命令是(可能还有更多的命令可以使用):echo
、<
、> …
好吧,我的手指确实设法做sudo apt-get remove libstdc++6
和写,yes
。这删除了很多系统文件。有没有办法让它重新工作?我已连接到终端,并且wget
工作正常。ctrl+C
当我弄清楚发生了什么时,我设法做到了。
我认为主要的是 get apt-get
,但是如何?
Ubuntu 11.10 Oneiric x64 位
长话短说,我/var
从备份中销毁并恢复了它 - 但备份没有设置正确的权限,现在所有/var
内容都归 root 所有。这似乎让一些程序不高兴。
我已经/var/cache/man
按照此处的建议修复了 apt 失败 fopen以及 apache2 无法启动(通过赋予/var/lib/apache2
to所有权www-data
)。但是,现在解决所有问题的唯一方法似乎是在出现问题时手动处理权限 - 这似乎非常困难,因为我必须等待程序开始出现问题,确定问题与权限有关一些文件,/var
然后自己设置它们。
有没有简单的方法来纠正这个问题?我已经尝试重新安装 (plain aptitude reinstall x
) 中列出的每个包dpkg -S /var
,但这没有用。
终端已经不可见了,尽管我可以输入命令并执行它们:
即使某些 Firefox 下载下拉菜单是不可见的,我可以单击下拉列表中的项目但列表本身是不可见的(请参阅突出显示的向下箭头但下拉列表是不可见的):
一些系统细节:
~> stty --all 速度 38400 波特;第 24 行;第 80 栏;线 = 0; 内部= ^ C; 退出 = ^\; 擦除 = ^?; 杀 = ^U; eof = ^ D; eol = M-^?; eol2 = M-^?; swtch = M-^?; 开始 = ^Q; 停止 = ^ S; 暂停 = ^ Z; rpnt = ^R; wase = ^W; lnext = ^V; 冲洗 = ^O; 分钟 = 1; 时间 = 0; -parenb -parodd cs8 hupcl -cstopb crad -clocal -crtscts -ignbrk …
system-recovery ×10
permissions ×4
chmod ×3
executable ×3
apt ×1
bash ×1
busybox ×1
cat ×1
debian ×1
filesystems ×1
gui ×1
linux-mint ×1
password ×1
solaris ×1
terminal ×1
ubuntu ×1
users ×1