chmod -x chmod的N种解法

在SlidesShare.net上有这么一个幻灯片,其说了如下的一个面试题:

如果某天你的Unix/Linux系统上的chomd命令被某人去掉了x属性(执行属性),
那么,你如何恢复呢?

下面是一些答案:

1)重新安装。对于Debian的系统:

1
sudo apt-get install --reinstall coreutils

2)使用语言级的chmod

  • Perl:perl-e ‘chmod 0755, “/bin/chmod”‘
  • Python:python -c “import os;os.chmod(‘/bin/chmod’, 0755)”
  • Node.js:require(“fs”).chmodSync(“/bin/chmod”, 0755);
  • C程序:

1
#include <sys/types.h>

2
#include<sys/stat.h>

3
void main()

4
{

5
chmod("/bin/chmod", 0000755);

6
}

3)使用已有的可执行文件。

1
$cat - > chmod.c

2
void main(){}

3
^D

4

5
$cc chmod.c

6
$cat /bin/chmod > a.out

7
$./a.out 0755 /bin/chmod

1
$cp true > new_chmod

2
$cat /bin/chmod > new_chmod

3
$./new_chmod 0755 /bin/chmod

4)使用GNU tar命令

1
$tar --mode 0755 -cf chmod.tar /bin/chmod

2
$tar xvf chmod.tar

1
tar --mode 755 -cvf - chmod | tar -xvf -

5)使用cpio (第19到24字节为file mode – http://4bxf.sl.pt

1
echo chmod |

2
cpio -o |

3
perl -pe 's/^(.{21}).../${1}755/' |

4
cpio -i -u

6)使用hardcore

1
alias chmod='/lib/ld-2.11.1.so ./chmod'

7)使用Emacs

Ctrl+x b > * scratch*
(set-file-modes “/bin/chmod” (string-to-number “0755″ 8))
Ctrl+j

嗯,挺强大的,不过为什么不用install命令呢?

1
install -m 755 /bin/chmod /tmp/chmod

2
mv /tmp/chmod /bin/chmod

各位,你的方法呢?

 

 

from:chmod -x chmod的N种解法

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>