您最喜欢的*痛苦的Unix时刻是什么?


Answers:


67

我很好奇是否 chmod 000 /行得通。

好吧,完美无缺。几分钟后,我正在寻找救援CD。


11
哇,直到您提到它,我才从未考虑过。好一个
Stefan Lasiewski,2010年

如果在常规文件上执行该操作会怎样?
卢克M 2010年

@Luc我猜你只需要把它改回即可
phunehehe 2010年

我通常在Arch VM中进行此类“实验”。如果炸弹轰炸,我就将其退回。
2011年

我曾经犯过这个错误。这是非常令人尴尬的,但却是一个宝贵的教训。
Charles Sprayberry 2011年

37

刚开始作为我所上大学的用户顾问工作时,我获得的sudo权限有限,可以帮助他们丢失/忘记密码的学生。 sudo passwd <username>是我的新朋友。入职培训一个小时后,我的好奇心得到了改善,我sudo passwd打了个招呼,震惊地看着提示输入新密码。我有点害怕,^C我想出了(错误地证明)我可能会将该帐户保留为暂时状态,所以我输入了密码,然后立即上楼来到校园超级用户,询问他是否想知道主系统的root密码。


4
呵呵,拥有!困惑的代理人:P
Spudd86

30
您可能在第二个确认提示中输入了不匹配的密码,因此,那时不会受到任何影响,并且passwd将退出。
Wadih M.

1
@Wadih:passwd以root身份运行时表现可笑。例如,当输入错误检查失败时,它将再次询问。
捷尔吉Andrasek

您可以将其更改回原来的状态。
HandyGandy

1
@HandyGandy他不知道原始的root密码。他只是拥有运行passwd的须藤权利。
gnud 2011年

32

惊讶的是没有人提到这一点:

rm -rf .*

(在尝试删除所有隐藏文件和子目录时,完全忘记了它将递归到.和中..


3
虽然过去曾经让我很生气,但是许多版本的rm现在不会这样做。我试过达尔文,并得到了错误rm: "." and ".." may not be removed
Stefan Lasiewski

7
我一直在各种平台上这样做。在OpenBSD,NetBSD,Linux和OpenSolaris上按预期工作。
帕勒蒙

如果要匹配除.和以外的所有点文件..,请使用.[^.]*。(好吧,这实际上会丢失所有以开头的文件..,但通常只有一个。)
Sven Marnach 2011年

@Sven:另一种方法是.??*,我发现它更容易键入。这个文件不会与像这样的两个字母的点文件相匹配.a,但是这些文件也不寻常。例如,我在主目录中搜索config文件grep -r .??*
尼尔·梅休

31

生成文件:

clean:
    @rm -f * .o

当然,这可以make clean擦除源代码,而不仅仅是目标文件。

课程:使用版本控制。


11
如果你不能看到它,注意之间的空格字符*.o
德尼尔森Sá马亚

1
我感到您的痛苦,在某个时刻发生在我们所有人
身上

课程重载:当你做壳的东西,你可以看到一个“ ”,是*多余的,不,是额外 附加 额外小心。
于尔根A.艾哈德

在实验室里通宵达旦后,我用手做了一个。该项目应在几个小时后完成。事实证明,这是因祸得福。我提交的新的重写版本比我擦除的绷带版本好得多。
巴里·布朗


30

有一个朋友:() { :|:&}; :在我们没有控制台访问权限的远程服务器上运行。完全冻结的生产服务器无法重新启动。

分解(根据请求)以使其更具可读性。

:() # Define ':' as a function. Every time we say ':' execute the following code block
{ # Start of code block
    : # Call ':' again. 
    | # Pipe output to...
    : # Another ':' 
    & # Disown process. 
    # All on one line this would read :|:&, 
} # End of code block
; # End definition of ':' as a function
: # Call ':'

看起来可能会更容易

bomb() { bomb|bomb& }; bomb

1
您愿意解释它的作用吗?我无法弄清楚,也不想尝试;)
naugtur

23
看起来像叉子炸弹。除非您真的知道自己在做什么,否则请勿尝试此操作。
Zaid 2010年

5
对。这是一个前炸弹。和一个不错的:)似乎在不断尝试解析它的过程中派生了bash解释器。如果您跳过最后一个,:则不会执行任何操作。而且它根本不使用内存,只是分叉了很多。[是的,我确实尝试过:)]。可以通过限制每个用户的进程数来阻止效果。
naugtur


4
+1以上评论。它比看起来容易理解得多。
2010年

29

我的意思是,我确实做到了。尝试chmod递归目录并最终./与交换/

当然,作为根源,因为只有拥有根源,才能实现真正的痛苦(并因此获得启发)。


23
+1引用:“只有扎根,才能实现真正的痛苦(并因此获得启发)”。
Stefan Lasiewski

21

我偶然擦拭了主驱动器的分区表,以为我正在另一个驱动器上工作。

使用回滚时,请谨慎使用 df,内存和运气,我能够准确地重新创建它,重写它,重新启动它,并希望...而且它起作用了。


6
一位朋友做到了,我帮助他恢复了餐桌。不幸的是,我们没有分区大小和偏移的先前值,因此我们使用了bash循环,dd读取管道中每个圆柱的第一个4k块,file -以查找超级块,从而找到文件系统的开始。这是在实时CD上,没有足够的RAM来完成我们需要做的所有事情(包括安装一两个软件包),因此我们将其传送到另一台计算机上以ssh运行的进程中。
尼尔·梅休

2
哎哟。这就是为什么我总是总是sfdisk -O备份分区表的原因。仅供参考:cgsecurity.org/wiki/TestDisk可以自动执行@Neil Mayhew的操作。
短暂

2
我也在那里,testdisk保存了我的盒子
phunehehe 2010年

这些天来,我们有gpart,它寻找可能类似于文件系统的东西,并从中构造一个分区表。
Simon Richter

19

不是我的时刻,而是其他人的时刻。

回到我在核科学研究所工作时,我们曾经运行过许多SunOS,Ultrix和Linux计算机,研究人员必须在这些计算机上共享CPU。随着各个研究小组获得自己的研究资助,他们购买了自己的计算机(主要是SparcStation),并且自己进行了系统管理。

SunOS曾经随OpenView桌面和一个不错的文件管理器一起提供,看起来是这样的: 替代文字

我们的大多数研究人员都以root身份运行,并且不止一次,我们不得不重新安装操作系统,因为有人决定整理根目录,并将/ bin,/ etc,/ tmp以及其他所有使视图混乱的内容移动到垃圾桶或某些子文件夹。

其他用户选择整理/ bin目录并删除他们不知道的任何命令。

幸运的人有备份,大多数人购买了磁带机,但没有自己运行备份的传统。


11
整理根目录?真?真? 抽泣
Alex B

41
TRWTF是他们在核科学研究所中扎根运行!
反转

4
酷截图!使我都怀旧。
gabe。

@Alex-好吧,我没有使用过这个大的VMUNIX文件....
Martin Beckett 2010年

1
在旧的Mac OS版本上,您几乎可以将任何文件移动到任何地方,所以也许这就是他们所期望的...
Kevin Cantu 2010年

18

早在90年代中期至后期,我的一个朋友和我正在讨论rm -rf *Linux 的愚蠢之处,到什么时候Linux盒子就会崩溃。我们进入了静态链接库还是动态链接库,我认为该系统可以很好地运行/lib,然后在工作站上对其进行重命名。 发生了不好的事情,但是我们留下了几个打开的控制台窗口,可以用来修复损坏(不再可以选择关闭)。没有任何编辑器可以运行。您可以在echo命令中找到深奥的用法,这令人惊讶。


19
关于这个确切的主题,有一个经典的故事:lug.wsu.edu/node/414
Alex B

1
@Alex B:这个故事也是Unix Horror Stories的一部分,它很容易阅读。
鲍比(Bobby)

18

viCaps-Lockvs./etc/passwd

  1. 使用无法正确刷新屏幕的旧串行终端连接到旧Solaris盒。
  2. su -
  3. vi /etc/passwd。没有vipw,无论如何都“我们只是在进行小的修改”。
  4. 按下Caps-Lock键,不用注意。
  5. j几次向下滚动。忽略您实际上只是打字的事实J(“ Join”)(将这一行与下一行结合在一起)。串行终端屏幕未正确刷新,因此您没有看到只是将前5行合并为一个Loooooong行,从而破坏了前5个用户(“ root”,“ daemon”等)。
  6. 完成您对文件的其他预期编辑,从底部向下进行。
  7. 保存存档。
  8. 登出。

我做了一次。令人惊讶的是,该系统可以运行几个月。Cronjobs运行良好,日志文件中没有出现任何错误。

几个月后我们重新启动系统并且无法登录控制台,我们才注意到此问题。ps显示了一堆属于UID'0'而非用户'root'的作业。

您无法以root用户身份登录,也无法运行susu -,并且sudo此框上没有任何内容。没有软盘驱动器,CD-ROM损坏,没有USB端口(因此没有外部CD-ROM)。单用户模式不起作用,因为您需要输入root的密码,该密码来自/etc/passwd


2
当然,“ J”是“ Join”(就像在连接线中一样)命令吗?
博士

2
请稍等,我无需输入密码即可引导进入单用户模式。实际上,如果我丢失了root密码,这就是我重置密码的方法。还是旧时代有所不同?
phunehehe

在Solaris上,您需要知道root密码才能进入单用户模式。我实际上必须在2周前这样做。
Stefan Lasiewski

@phunehehe我认为您对init = / bin / sh技巧的想法。确实不需要root密码。但是,运行级别1仍然需要root用户通过
Patrick


16

我记得曾经尝试过将SysRq密钥序列发送到远程计算机。

...但是它是被当地人捕获的。


14

一个简单的halt识别几秒钟后,我不在本地shell上,并且无法再次打开生产服务器的电源。

得到教训?机器的提示现在看起来像

[ --> root <-- @kompost:/home/echox] #

有一些漂亮的红色标记;-)


6
有一个名为的工具molly-guard,用于检查您是否远程登录并询问您是否真的要这样做。
Simon Richter

IPMI是一件非常方便的事情:-)
Andre Holzner

13

我最喜欢的时刻是,当时是emacs用户的同事想要编辑重要文件。

由于emacs输入太多,他为以下项设置了别名emacs

alias em=emacs

在咖啡不足或过多的影响下,他当然打错了字em...

好吧,这只是使用vi...的另一个原因。


我真的很喜欢这一点,因为他担心emacs使用了多长时间,而不仅仅是使用了alias e=emacs
史蒂文D

除了咖啡,
还要注意

11

或另一种经验,如何通过几个简单的步骤感觉真正的愚蠢,而这些似乎并没有那么愚蠢。

第一步:为孩子准备一个帐户,以防他想使用Linux盒子。给它一个平凡的密码,因为毕竟这是一个家庭系统,并且不会暴露在网上。

第二步:花些时间,所以您不记得第一步了。

第三步:打开防火墙中的SSH端口(实际上是路由器上的NAT)以进行SSH加密。毕竟,我的帐户具有非常好的密码,这并不意味着有任何非常有价值的东西。

第四步:从ISP收到通知,有某种DOS活动正在瑞典站点进行。假设可能是Windows框,然后检查并加固它们。

第五步:从ISP处获取通知它仍在继续。要求提供一些详细信息,获取瑞典站点的IP地址,启动Wireshark,找到攻击来自哪个盒子。

第六步:清理Linux盒子,感觉很蠢。查找登录名来自罗马尼亚地址。删除没有良好密码的帐户。


1
到过那里。我曾经用test:test登录创建一个帐户,打算仅使用五分钟。我忘了删除它,并得到与您相同的结果。再也不。我现在去所有公钥认证。
ATC

1
是的,我也使用公钥/私钥。有时它们可​​能会令人讨厌,但是比简单的密码安全得多。
DenilsonSáMaia

4
当打开SSH到Internet时,绝不允许密码验证。只有公钥/私钥认证,这样您就不会措手不及。
wazoox 2011年

@wazoox:otp也是一个很好的选择。
于尔根A.艾哈德

我对ssh使用非标准的高编号端口,该端口从路由器转发到我的Linux和Mac OS X机器上的标准ssh端口。我从来没有得到任何尝试登录。我在其他机器上的〜/ .ssh / config中的快捷方式中配置了端口,因此通常我什至不必键入它。
尼尔·梅休

11

在我上大学时,在计算机实验室中,他们有一个屏幕保护程序,可以模拟一堆会来回漂浮的球。他们用模拟的重力拉动它们。

一次,当我弄乱设置时,它因错误而崩溃 Error: force on balls too great


10

我曾经为Unix开发设备驱动程序。它有一个指针问题,在测试过程中,它开始注销内核内存中的数组末尾。我发现这一点很慢,没有立即按下“重置”按钮。驱动程序在整个磁盘缓冲区高速缓存中进行了涂抹,然后在我单击“重置”之前将其刷新到磁盘。很多块是inode和目录,而我最终得到了一个完全废弃的文件系统。我认为lost+found在放弃并重新安装之前已放入6000个孤立文件。幸运的是,这只是一个测试系统,而不是我的工作站上所有的文件。


现在这样做,你的工作系统上就已经真正愚蠢;-)
于尔根A.艾哈德


7

去年,我的一位同事正在使用我们的Linux工作站之一,通过该dd命令创建闪存磁盘的副本。他不小心键入了类似于以下内容的内容:

dd if=flash-image.img of=/dev/sda1

到他意识到自己的错误时-覆盖机器的硬盘而不是闪存驱动器-机器已经胶管好了。我们不得不重建盒子,顺便说一句,那是当时托管我们所有开发虚拟机的机器。


2
+1- 非常非常非常小心dd:-)
乔什(Josh)

7

去年发生在我身上。我正在使用临时变量从服务器中删除一些文件:

rm -rf ${prefix}*

你猜怎么了?变量$prefix未定义!
您可以想象灾难……导致删除了一些非常重要的文件。

我差点摔坏了Control-C,跑到CPU上,拔下网线!!

哈哈哈,我敢肯定有人已经做过了...


7

在我学习计算机科学的第二年,我们被分配了一项作业,以C语言编写一个程序,该程序将产生许多子过程, fork并使它们与管道“圆”通信,并确定哪个管道应作为“领导者”。 ”。

那时我们还算是新手,大多数peple都没有任何Linux机器,因此我们在教职员的主服务器(也托管官方站点和员工账户以及站点)上处理帐户。大多数人在尝试做作业的某个阶段写下了前炸弹。我小组中超过一半的人都参加了会议abusers。这是该服务器在最近时间内的最高负载:)


这对他们来说很愚蠢……他们不应该将您与Web服务器和其他东西放在同一台机器上。(我的学校也有同样的事情,但是我们有专门针对远程Shell的服务器,因此每年的前导炸弹不会真的变得一发不可收拾)
Spudd86

微软聘请了教师来建立合作伙伴关系,并且当时已经大大提升了Windows和.net。没有人期望服务器上有很多菜鸟:)
naugtur 2011年

6

当我的大学决定切换无线网络以使用专有的Cisco LEAP身份验证时...

开始了一场漫长的战斗,这场战斗结束了。为其他想要运行Linux并可以访问Internet的人编写了文档。六个月后,他们决定也添加PEAP支持。脸巴掌

这是我的最爱,因为我赢了。我知道了。


6

作为Solaris上的root,

$ kill -9 1

...一切都崩溃了。

我的朋友因此而被解雇了。


6

我是Linux班的实验助手。其中一个学生给我打电话是因为她不能su -因为她越来越来而不再permission denied。好的,她忘记/输入了错误的密码。重新启动进入单用户模式并重置。什么?!su仍然不起作用?!它必须屈服于我的意志!因此,我重新启动进入单用户模式以了解她的所作所为。我意识到她跑了chmod -R 777 /var/www/html/drupal-6.19 /

请注意目录名称和最后一个斜杠之间的空格。

在“我真的不想重新安装她,那么这是怎么做的以及如何做。”几分钟后,我设法找到了/ bin / su现在具有的文件许可权777。也可以将其读取为的文件权限0777,从中删除setuid位/bin/su。快速chmod u+s /bin/su,我是英雄。


5
那是您需要更改以解开她的系统的唯一内容?
Michael Mrozek

1
我敢肯定它还是坏了,但也许对于其余的班级来说效果很好。
Stefan Lasiewski 2010年

1
在整个课堂上,它的表现都很好。该学校显然要求每季度重新安装所有学生驱动器。在本季度结束后,她不再使用Linux,因此我不会在其余的过程中都对其进行修复。
凯文M

5

不是那个痛苦...而是一个有趣的片刻:

我输错lssl,发现sysadmin 为这种情况安装了某些东西

(已在DebianUbuntuGentoo等存储库中提供)


4
这比痛苦的时刻更像是复活节彩蛋。在碰到它之前,我已经读过它,但是我从来没有发现自己搞错了,所以没有+1。
Umang 2010年

Grinn ..我曾经有一个用户来找我,“您的系统被黑了!! 11one键入ls时我得到了ASCII艺术动画”
blauwblaatje 2011年

^不好笑!
mr_eclair

5
git init
git clean -f

这不会删除存储库。这将删除存储库中未包含的所有内容。

尝试摆脱现有的存储库,然后再次启动源代码控制(在已完成的项目的第一个版本上)后,这两个命令破坏了我的整个代码。


git rebase(带有压缩功能)和git filter-branch(用于删除文件)是您的朋友:-)我的意思是,这里有比较安全的方法可以从您的repo历史记录中删除内容,并最终得到一个相对干净的项目。通常,在进行广泛的基础调整之前,我通常会备份当前分支。
尼尔·梅休

5

我曾经工作过的一家公司在SCO上运行其产品。我正在做一些调试,以使我们的演示服务器上的应用程序变得非常缓慢,同时,还向大量客户提供了有关即将推出的新功能的演示/讲座。

因此,我运行了曾经被卡住的应用程序,对其进行了处理以验证根本原因,但是由于它仍然被“卡住”,因此我试图杀死它:

pkill -9 mytestapplication

我学到的是pkill在SCO上的功能与在linux上的功能完全不同=)

...它基本上杀死了用户有权访问的所有内容,并且具有root用户……这就是一切=)


1
您能描述一下它对上海合作组织的作用吗?我不知道,我在Google上找不到它。
DenilsonSáMaia

1
它基本上杀死了用户有权访问的所有内容,并且使用root ..它的一切 =)
rasjani 2010年

3

我从Debian切换到Ubuntu的那天是我尝试删除一些文件和目录(即键入

rm -r /var/tmp/*

不幸的是,我在“ / var / tmp /”和“ *”之间插入了一个空格,更糟糕的是,我位于文件系统的根目录中。

root@workstation:/# rm -r /var/tmp/ *

请不要在家尝试!


'zsh:确定要删除/ [yn]中的所有文件吗?' -这是非常有用的
安德烈Paramés

这将从/为什么删除文件?
mr_eclair 2011年

3

有一个巧妙的方法做的相当的dirnamebasename,分别击:

${path%/*}
${path##*/}

$path包含斜杠时不太有趣...


3

我一次安装了两个驱动器,第二个驱动器的根文件系统安装在的目录中/mnt。我在该目录中,试图删除var但最终却输入了rm -rf /var。某种本能似乎在说那var 必须在前面加上一个斜线!

当我意识到自己做了什么时,我立即击中了,Ctrl-C但为时已晚。我的rpm数据库离开大楼很久了。我花了很长时间使一切恢复正常。

现在是痛苦的部分。

我回到那个目录 /mnt以恢复我一直在做的事情。我要输入什么?好吧,让我们再说一次本能。

至少我第二次能够更快地恢复系统;)


1
我认为这是在您了解chroot(1)之前?
凯文M
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.