chmod -x chmod的N种解法

chmod -x chmod的N种解法

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

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

下面是一些答案:

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

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程序:

#include <sys/types.h>
#include<sys/stat.h>
void main()
{
chmod("/bin/chmod", 0000755);
}

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

$cat - > chmod.c
void main(){}
^D

$cc chmod.c
$cat /bin/chmod > a.out
$./a.out 0755 /bin/chmod

$cp true > new_chmod
$cat /bin/chmod > new_chmod
$./new_chmod 0755 /bin/chmod

4)使用GNU tar命令

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

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

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

echo chmod |
cpio -o |
perl -pe 's/^(.{21}).../${1}755/' |
cpio -i -u

6)使用hardcore

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命令呢?

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

各位,你的方法呢?

(全文完)


关注CoolShell微信公众账号和微信小程序

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

——=== 访问 酷壳404页面 寻找遗失儿童。 ===——
好烂啊有点差凑合看看还不错很精彩 (6 人打了分,平均分: 4.83 )
Loading...

chmod -x chmod的N种解法》的相关评论

  1. 看错,原来里面有 python, 那提供个ruby 的

    ruby -rfileutils -e ‘FileUtils::chmod(0755, “/bin/chmod”)’

  2. exec不行的吧,还是会提示权限不够的,而且exec会替换当前shell,最好先bash一下,再exec,或者运行其他shell也可以。

  3. 很不错,有几个做法很巧妙,cp和hardcode的回头试试。

    要是我说还可以在X下改property,我会挨多少白眼呢?

  4. 想了半天,没想到新办法,只想到一个问题:

    如果我把 chmod(2) 这个系统调用从 1. libc 2. 内核 中删去了还有什么办法给文件添加执行权限呢?

  5. 这么多方法啊?
    我也提供一个:
    随便复制一个有执行权限的文件为chmod ,然后dd if=原来的少了x权限的chmod of=新复制的chmod

  6. 如果某天你的Windows系统上的exe, com, bat, cmd, …扩展名被某人关联到了记事本,
    那么,你如何恢复呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注