设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

rm -rf的“幸存者”

2014-6-16 14:14| 发布者: joejoe0332| 查看: 3664| 评论: 0|原作者: honpey|来自: 伯乐在线

摘要: 自娱自乐,我决定启动一台Linux服务器,然后以root用户执行“rm –rf /”命令,然后观察下哪些文件或者指令会幸存下来。结果是什么也没少!因此你必须增加 —no-preserce-root再试一遍:…… ...

  自娱自乐,我决定启动一台Linux服务器,然后以root用户执行“rm –rf /”命令,然后观察下哪些文件或者指令会幸存下来。结果是什么也没少!因此你必须增加 —no-preserce-root 再试一遍:


1
# rm -rf --no-preserve-root /


当你按下“Enter”时,一些重要的工具,比如

1
2
3
4
5
6
7
/bin/ls
 
/bin/cat
 
/bin/chmod
 
/usr/bin/file


  将会应声消失!但是你当前的SSH连接以及bash终端都还在,这表明所有bash相关的内建指令都没有受影响,比如echo。


  成为Bash达人

1
2
3
root@rmrf:/# ls
 
-bash: /bin/ls: No such file or directory


  执行以上命令,发现已没有ls可用,但是echo和fileglobs还在。利用这些“幸存者”们,我们可以做点什么呢?

1
2
3
4
5
6
7
root@rmrf:/# echo *
 
dev proc run sys
 
# echo /dev/pts/*
 
/dev/pts/0 /dev/pts/3 /dev/pts/ptmx


  注意!/dev,/proc,/run,/sys还在,我们一定要保存好它们。如果有了ls指令,那么对目录下内容的读取操作将会更加简单。

1
2
3
4
5
6
7
root@rmrf:/# for ii in /dev/pts/*; do echo $ii; done
 
/dev/pts/0
 
/dev/pts/3
 
/dev/pts/ptmx


  许多Reddit用户指出,printf仍是可用的。CAMH-说:printf会将参数依次格式化到输出字符串中去。

1
root@rmrf:/# ls() { printf '%s\n' ${1:+${1%/}/}*; }


  既然在bash下可以定义函数,那么我们可以自建一个ls工具,虽然功能还不是很完善。

1
root@rmrf:/# ls() { printf '%s\n' ${1:+${1%/}/}*; }
1
-bash: syntax error near unexpected token `('


  不对啊,这种操作应该完全合法才对,难道ls已经被映射,或者它是其他命令的别名?

1
2
3
root@rmrf:/# type ls</code>
 
ls is aliased to `ls --color=auto'</code>

 

  原来如此,我们上面的指令被扩展成了ls--color=auto () { printf '%s\n' ${1:+${1%/}/}*; }。那么,我们可以先使用unalias指令,去掉ls与ls—color的关联。

1
root@rmrf:/# ls () { for ii in $1/*; do echo $ii; done }
1
2
3
4
5
6
7
8
9
root@rmrf:/# ls
 
/dev
 
/proc
 
/run
 
/sys
1
2
3
root@rmrf:/# ls /dev
 
/dev/pts


  把函数存储到utils.sh文件

1
root@rmrf:/# echo 'ls () { for ii in $1/*; do echo $ii; done }' >> utils.sh
1
root@rmrf:/# source utils.sh


  cat命令怎么样实现呢?借助read!read是幸存者之一,使用read结合管道和重定向,一个基本的cat就基本成型了!

1
2
3
root@rmrf:/# (while read line; do echo "$line"; done) < utils.sh
 
ls () { for ii in $1/*; do echo $ii; done }



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部