Intereting Posts
Если раздел / usr не указан, он по умолчанию остается в том же разделе, что и root. DNSMASQ на Ubuntu в VM не предлагает аренду клиенту Использование разделителя табуляции в срезе в Unix Shell Scripting Определить адрес другой машины в локальной сети? обновления не могут быть установлены из-за слишком маленького дискового пространства в / boot Почему '.' выбранный для представления текущего каталога и «..» для родительского каталога? Запустите Arch ISO в VirtualBox с общими папками равное сравнение по переменной jq Все ли пакеты, включенные в CentOS Все ISO, установлены по базовой системе? Как вы можете восстановить повреждение диска на резервном диске, сохраняя при этом все жесткие ссылки? Может ли «grub-emu» внести какие-либо изменения в мою систему? Соберите mdadm-raid5 Новый элемент меню, называемый «arch_grub», появился как временное загрузочное устройство Периодически не удается подключиться к точке доступа WPA2-EAP netstat – почему демоны IPv4 прослушивают порты, перечисленные только в -A inet6?

Как я могу оправиться от `chmod -x chmod`?

Предполагая, что вы не можете связаться с Интернетом и не перезагрузите компьютер, как я могу оправиться от

chmod -x chmod 

?

1 – используйте язык программирования, который реализует chmod

Рубин:

 ruby -e 'require "fileutils"; FileUtils.chmod 0755, “chmod"' 

Python:

 python -c "import os;os.chmod('/bin/chmod', 0755)” 

Perl:

 perl -e 'chmod 0755, “chmod”' 

Node.js:

 require("fs").chmod("/bin/chmod", 0755); 

C:

 $ cat - > restore_chmod.c #include <sys/types.h> #include <sys/stat.h> int main () { chmod( "/bin/chmod", 0000755 ); } ^D $ cc restore_chmod.c $ ./a.out 

2 – Создайте еще один исполняемый файл с chmod

Создав исполняемый файл:

 $ cat - > chmod.c int main () { } ^D $ cc chmod.c $ cat /bin/chmod > a.out 

При копировании исполняемого файла:

 $ cp cat new_chmod $ cat chmod > new_chmod 

3 – Запуск BusyBox (внутри него есть chmod)

4 – Использование Gnu Tar

Создайте архив с определенными разрешениями и используйте его для восстановления chmod:

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

Делайте то же самое, но «на лету», даже не пытаясь создать файл:

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

Откройте сокет на другой машине, создайте архив и восстановите его локально:

 $ tar --preserve-permissions -cf chmod.tar chmod $ tar xvf chmod.tar 

Другой возможностью было бы создание архива регулярно, а затем его редактирование для изменения разрешений.

5 – cpio

cpio позволяет вам манипулировать архивами; когда вы запускаете cpio file , после первых 21 байта есть три байта, которые указывают разрешения файла; если вы их отредактируете, вам хорошо идти:

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

6 – Динамические погрузчики

 /bin/ld.so chmod +x chmod 

(фактические пути могут различаться)

7 – /proc wizardry (untested)

Шаг за шагом:

  • Сделайте что-то, что заставляет индод в кеш ( attrib , ls -@ и т. Д.)
  • Проверьте kcore для структур VFS
  • Используйте sed или что-то подобное, чтобы изменить исполняемый бит, не используя ядро, реализующее его
  • Запустить chmod +x chmod раз

8 – Time Travel (git, но непроверенный)

Во-первых, давайте удостовериться, что мы также не получим все остальное:

 $ mkdir sandbox $ mv chmod sandbox/ $ cd sandbox 

Теперь давайте создадим репозиторий и пометьте его тем, с чем мы можем вернуться:

 $ git init $ git add chmod $ git commit -m '1985' 

И теперь для путешествия во времени:

 $ rm chmod $ git-update-index --chmod=+x chmod $ git checkout '1985' 

Должна быть куча решений на основе git, но я должен предупредить вас, что вы можете нажать скрипт git, который на самом деле пытается использовать chmod системы

9 – Борьба с огнем с огнем

Было бы здорово, если бы мы могли бороться с операционной системой с другой операционной системой. А именно, если бы мы смогли запустить операционную систему внутри машины и иметь доступ к внешней файловой системе. К сожалению, почти каждая операционная система, которую вы запускаете, будет находиться в каком-то Докере, Контейнере, Тюремной тюрьме и т. Д. Так что, к сожалению, это невозможно.

Или это?

Вот решение EMAC:

 Ctrl+xb > *scratch* (set-file-modes "/bin/chmod" (string-to-number "0755" 8)) Ctrl+j 

10 – Vim

Единственная проблема с решением EMAC заключается в том, что я на самом деле парень Vim. Когда я впервые вникал в эту тему, у Vim не было возможности сделать это, но в последние годы кто-то исправил вселенную, а это значит, что теперь мы можем это сделать:

 vim -c "call setfperm('chmod', 'rwxrwxrwx') | quit"