记录一次剁手的"sudo rm -rf /bin"(误删linux /bin目录)

服务器系统:ubuntu12.04.1-server64位


如题,使用普通用户权限:sudo rm -rf /bin删除了服务器上的整个/bin目录,由于/bin下安装有许多系统软件,所以直接导致ls的等命令无法使用。

另外,注意linux下有一些系统的内置命令,如cd。这些内置命令都还是可以用的。


遇到这样的问题,第一反应还是有点慌的,因为删的不是自己的系统文件,而是整个实验室服务器的系统文件。首先第一反应就是重新把这些软件装上就可以了,但是当时安装软件包没有成功,于是我就关机重启了。如果没有重启,可以尝试下面方法,貌似可以成功。我没有用这种方法

http://serverfault.com/questions/297439/i-just-deleted-bin-whats-the-best-way-to-recover


我用的方法是这样:

1.关机重启服务器,系统当然不能正常进入,报错如下:

记录一次剁手的"sudo rm -rf /bin"(误删linux /bin目录)_第1张图片


2.用ubuntu U盘引导引导服务器系统,挂载硬盘文件系统

具体过程:找一个ubuntu系统的镜像,刻到U盘,进入U盘的系统(试用而不安装),进去后查看挂载的文件系统,发现服务器的硬盘已经被挂载。进入/media/XXXX(服务器硬盘),发现里面果然没有了/bin,对,就是它,怎么把/bin恢复呢?

3.找一个跟原系统一样的系统的/bin,拷贝回去

具体过程:下载一个跟服务器系统一样的镜像ubuntu14.04.1-server-64,在虚拟机上安装它。挂载一个U盘到/media/XXX(挂载过程可以看这里:http://blog.csdn.net/ghj1976/article/details/6164833),将/bin目录拷贝到U盘里。注意由于/bin下有很多符号链接,直接使用cp指令不能拷贝符号链接,所以需要把/bin压缩一下再拷过去。压缩过程:

 tar cf /media/XXX/bin.tar /bin
然后把U盘里的bin.tar拷贝到服务器硬盘的根目录下,这里用cp指令就可以。然后解压:
 tar xvf /your-dir/bin.tar -C /server-root-dir

4.重启系统,成功进入系统。如果只是需要系统能用,到这一步就可以了。

5.我的服务器又出现了新问题,
第一个问题:IP地址变了,想保留以前的IP地址,但结果不行,IP地址必须变!
        网上搜资料把IP改回原来的,并设成静态的。
但是这里有一个问题,学校的网络不支持静态IP分配。可能是因为这个吧,server的源列表怎么也更新不了,学校内网是肯定通的,ping ipv6的网址一直出现error:unkown host name,一定是网络配置有问题!
后来又把IP地址改成DHCP动态分配,ipv6是可以ping通了。但是这时更新源列表却依然出现各种不通(目前server的ipv4网络是不通的),于是删除source.lists中的ipv4地址,只保留ipv6的,这时应该好了把,可是又出现了几个不在source.lists中的地址的err,导致更新源再次失败。
找了好久,请教老师,才知道是source.lists.d的问题,这里面保存着以前安装的第三方软件的源信息,更新源的时候要保证这些也是通的,显然现在服务器不满足这个条件。于是把source.lists.d中的文件全部删除。这时更新源成功了。

第二个:更新源后,想给server装个桌面,本以为sudo apt-get install ubuntu-desktop,一条命令马上搞定(server本来就没有桌面,如果需要使用桌面要自己安装),但安装成功后输入用户名和密码后依然进不了桌面。出的问题是什么socket ibus。。的问题。完全没有头绪。
后来只有请教老师了,这个问题还真是复杂,老师弄了好几个小时才整出来,具体过程我没有看到,貌似过于复杂,我等菜鸟几乎不能理解。只记得老师最后说,ibus的问题是系统中最复杂的了,现在的server系统已经千疮百孔!
哎!真是想剁手!剁手!剁手!

总结:
1.有关linux系统权限:在一个多用户的操作系统上,系统管理员的权限不能人人都有。如果用户真的需要管理员权限,那么这个权限也应该是有限的,例如对某些文件夹只有读和写的权限,没有删除的权限。据说可以设置用户sudo后的具体权限。
2.慎用rm -f指令,可以设置在删除前提示再次确认是否删除,也可以设置将删除内容暂时放在回收站。
3.系统出了问题不要怕,是个学习的机会,负起责任,做个真正的系统管理员。

你可能感兴趣的:(记录一次剁手的"sudo rm -rf /bin"(误删linux /bin目录))