Команда rm, используемая для удаления файлов и каталогов, может быть очень опасной, если запускать её с привилегиями супер-пользователя root. Приятно осознавать, что большинство современных реализаций команды rm помогают предотвратить катастрофу (удаление всей информации на вашем диске).
Что делает флаг preserve-root
Поведение rm по умолчанию в системах Linux означает включение флага preserve-root – это опция, защищающая корневую (root, /) файловую систему от удаления. При попытке удаления этого верхнего уровня файловой системы, вы получите предупреждение:
greys@stream:/ $rm-rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
Почему сообщение говорит, что рекурсивное удаление в разделе / опасно? Потому что абсолютно все каталоги и другие файловые системы в Unix и Linux монтируются как ветки дерева /. То есть они являются подкаталогами, удалив которые рекурсивно вы можете стереть всю информацию, доступную на вашем системном разделе (и довольно большой объём других подмонтированных и активных файловых систем, если уж совсем не повезло).
Я-то запустил команду из-под обычного пользователя, так что тотальной катастрофы бы не получилось. Но под пользователем root такая команда могла бы кончиться довольно скверно.
Почему preserve-root это реально круто
Ясное дело, что сознательно мало кто будет планировать удалять все файлы из корневого каталога /, но вот вам очень типичный пример ошибки, допускаемой новичками: использование не инициализированных (нулевого значения) переменных:
Казалось бы, всё правильно: у меня есть переменная $MYDIR, у неё есть какое-то значение – оно указывает на каталог. Я запускаю команду rm и указывают ей в качестве параметра мою переменную MYDIR.
Но вот если переменная MYDIR не имеет значения (забыли её создать), то наша команда превратится вот во что:
greys@stream:/ $MYDIR=greys@stream:/ $echo rm-rf /${MYDIR}rm -rf /
greys@stream:/ $rm-rf /${MYDIR}rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
Так что опция –preserve-root – прямо-таки спасение.
Заходите на страницу Facebook или присоединяйтесь к чату в Telegram:
Я использую браузер Brave
Попробуйте сами:
IT Консалтинг
У меня есть консалтинговая компания: Tech Stack Solutions. Я помогаю планировать и создавать облачные решения на базе AWS и помогаю с развёртыванием и поддержкой сервисов на Unix/Linux. Свяжитесь со мной тут.