5

В документации для rm я заметил, что rm --help следующий флаг:

--no-preserve-root  do not treat `/' specially

Что это значит? Можно ли вообще удалить корневой каталог, кроме его содержимого? Какие последствия это будет иметь?

1 ответ1

14

Вы не можете удалить сам корневой каталог. Однако вы можете использовать рекурсивный режим rm, чтобы удалить все в этом каталоге - печально известную команду rm -rf / .

Режим "сохранить корень" не позволяет rm рекурсивно работать в корневом каталоге:

$ sudo rm -rf /
rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe

Параметр --preserve-root был добавлен в GNU rm в 2003 году (коммит 9be74f6f125b2be) и был установлен по умолчанию в 2006 году (коммит aff5a4f2ab86f).

Некоторые говорят, что это потому, что шутники в #ubuntu продолжали говорить новичкам, что нужно запустить rm -rf / - и многие это сделали. Некоторые говорят, что это потому, что слишком легко rm -rf / tmp/junk . Некоторые говорят, что это предотвращает несчастные случаи при запуске rm -rf $dir/ когда $ dir пуст. Все, что мы знаем, его зовут

В любом случае, сегодня это часть требований POSIX. Solaris rm также имеет аналогичную защиту, как и OpenBSD.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .