Хорошо, я не тестировал это (так используйте на свой страх и риск), но он все равно может работать. Я проведу это на виртуальной машине, когда у меня появится возможность:
Сначала, в неподвижной рабочей системе, я сделал следующее, чтобы получить все права доступа к файлам в списке, пропустив каталог /home/:
sudo find / -not -path /home -printf "%m:%p\0" > /tmp/fileper.log
Это будет печатать разрешения и имя файла для каждого файла или каталога в системе, за которым следует символ \0 (это необходимо позже, чтобы иметь дело с такими странными именами файлов, как те, которые содержат newlines).
Затем в системе, где права доступа к файлу были скомпрометированы:
while IFS=: read -r -d '' perm file; do
chmod "$perm" "$file"
done < /tmp/fileper.log
Это будет читать каждую строку fileper.log, сохраняя разрешения как $perm и имя файла как $file, а затем установит права на файл (или каталог) на все, что было указано в fileper.log
. Несколько замечаний: [ ! d6] При выводе в файл: /tmp/fileper.log вы можете указать пользовательские настройки, proc и т. д., возможно, вы не сможете загрузить или запустить команды,
Что бы я хотел Предлагаем загрузить LiveCD с версией Linux на вашем диске, запустите команду, mo (d11)
Я тестировал, что при загрузке с компакт-диска или USB-устройства Ubuntu я могу выбрать не для того, чтобы установить, где установлен локальный диск, и запустить вторую команду!
формат, что означает, что он заменит все в каталоге /, но пропустите каталог /home/. Это означает, что ваши пользователи будут иметь конфигурацию приложений / DATA (музыка, видео, документы), которые все еще не повреждены. И, заменив системные файлы, в chmod установлен правильный номер.