chmod -x /bin/chmod執行上述命令後,如何恢復?


1. 重裝 coreutils。

2. 安裝 busybox(如果沒有的話),然後使用 busybox chmod +x /bin/chmod 改回來。

使用 Python/Perl 之類的腳本語言也比用 C 方便。

Perl 版:sudo perl -e "chmod 0755, "/bin/chmod""

Python 3 版:sudo python -c "import os;os.chmod("/bin/chmod", 0o755)"

Ruby 版:sudo ruby -e "File.chmod 0755, "/bin/chmod""

install 版:sudo install -m755 /bin/chmod{,2} sudo mv /bin/chmod{2,}

node.js 版:sudo node -e "require("fs").chmod("/bin/chmod", 0755)"


方法很多,提供一個最保險的,/lib/ld-linux.so.2 /bin/chmod +x /bin/chmod


打開終端

運行 sudo python -c "__import__("os").chmod("/bin/chmod", 0555)"

回車,就可以了


怎麼沒人說。。。拷到msdosfs上,拷過來就+x了。。。


操,這簡直是標準面試題…考SA的應變能力

最簡單方案:從別的機器rsync -a一個過來(忘了保留許可權是哪個flag了)。別笑,這是最簡單方案。真的緊急情況下可沒時間讓你查手冊問知乎

最常見方案:如@依雲 所說,用系統中已有的各種腳本語言解釋器修改許可權

最2B方案:C語言調用chmod函數

最…我也不知道什麼的方案:C語言寫一個hello world,編譯成可執行程序,然後cat /bin/chmod &> a.out (假設你有root,否則沒法去掉chmod的可執行許可權)


#include &

#include &

#include &

#include &

int main()

{

char *path = "/bin/chmod";

chmod(path, S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH);

exit(0);

}

把該文件的許可權恢復成rwxr-xr-x


從其它的機器上拷貝一份chmod過來


$ sudo su
# cp /bin/chmod ~/chmod
# install -m 755 ~/chmod /bin/


setfacl -m user::rwx /bin/chmod

即可解決,搞不懂你們這些人為什麼要弄的這麼麻煩


嘗試了很多 但是很多都得有一個前提 root身份 。假如chmod只是不給普通用戶x許可權,這個普通用戶身邊有python環境 有busybox 也有可執行許可權的一個文件。就是不知道root密碼 這個怎麼破


1)自己寫個小程序,用 chmod(2) 該回來。

2)從其他機器上拷貝一份有執行許可權的chmod回來。


隨便cp一個有執行許可權的文件 然後

cat /bin/chmod &> file

./file +x /bin/chmod

偷許可權。。


推薦閱讀:

如何評價微軟PowerShell將支持SSH?
非同步io有什麼優勢?
2017 年 Linux 在桌面平台上有前景嗎?
如何說服後端技術人員放棄 SQL Server 轉向 MySQL?
怎樣才算有自主知識產權的操作系統?研發「自主知識產權」的操作系統對中國的社會和經濟有何意義?

TAG:Linux | Linux使用技巧 |