Я видел здесь несколько вопросов, где люди случайно делают rm -rf --no-preserve-root
или rm -rf *
, стирая большую часть или всю свою файловую систему, прежде чем они смогут реагировать.
Есть ли причина для использования --no-preserve-root
, будь то в обычном режиме, в качестве разработчика или администратора?
/
, но «общий случай» все еще представлен. Другими словами: «Работа моего компьютера не в том, чтобы говорить мне, что делать». И этого не должно быть.Ответы:
ВАЖНО: Современные системы UEFI монтируют прошивку в
/sys
каталоге и делают ее доступной для ОС. НЕ запускайте эту команду в современной системе, так как она удалит эту прошивку, по существу блокируя вашу машину.Самый простой сценарий, который я могу придумать, это то, что кто-то хочет удалить все данные со своего диска. Для этого могут быть совершенно законные причины, и самый простой способ, о котором я могу думать, это
Оказывается, это на самом деле приведено в качестве примера в
info rm
:Еще одна веская причина - вы хотите удалить смонтированную файловую систему, в которую вы
chroot
ввели. В этом случаеrm -rf --no-preserve-root /
удалит систему вchroot
среде, но оставит вашу нетронутой.Я уверен, что есть и другие возможные причины, но в целом кажется, что моя система позволяет мне делать с ней все, что я хочу. Моя работа - быть осторожным, система должна позволять мне делать только то, что я хочу. Если то, что я хочу, глупо, это моя проблема, а не ОС.
Во всяком случае, это относительно новое ограничение, оно было добавлено в 7-й версии спецификации POSIX ( предыдущая здесь), до того, как это
rm -rf /
была совершенно допустимая команда. На исторической записке.
и..
каталоги всегда были защищены отrm
, когда - либо с 1979 года, когдаrm
первый приобретаемой возможность удаления каталогов. Подробнее об этом здесь .источник
/
.rm -rf /
вы можете очистить удаленную машину, например, от чьего-либо монтирования NFS / CIFS / SSHFS.Существование этого
--no-preserve-root
переключателя не в том, чтобы добавлять дополнительную функциональность, а в том, чтобы перекрыть очень вменяемое снижение функциональности. Этот переключатель, вероятно, основан на философии, согласно которой компьютер должен делать то, что ему говорят, и что должны быть доступны команды для выражения любого желаемого действия. Этот переключатель предшествует UEFI, и, исходя из моего опыта, я говорю, что сейчас он устарел.В современной практике без этого переключателя
rm
команда избегает случайного удаления корневого каталога при использовании неинициализированной переменной или свободного пространства.Забавная сноска: защита не была ее целью. За блогом Sun Microsystems, удаление
/
каталога будет неявно удалить текущий рабочий каталог, нарушение специального рассмотрения уже сделал для.
и..
каталогов. Вот почему их комитет по стандартам допустил это специальное исключение - не для предотвращения несчастного случая. Это изменение было впервые введено в Solaris 10 build 36.http://archive.is/5lmc9
источник
Возможно, это не тот ответ, который нужен оригинальному аскеру, но есть сценарий использования, который требует рекурсивного удаления всех файлов из корневого каталога. Хотя это не
rm
команда, но она является частью процесса switch_root (8) во время загрузки вашей (не встроенной) системы Linux.источник