Каково поведение mv на /?

288
doliv071

Один из наших пользователей случайно выполнил mv /* ../без прав root. После проверки эффектов с помощью diffя был удивлен, обнаружив, что, по- mvвидимому, функционировал так же, как cpпри применении к /DIR.

Итак, мои вопросы:

  1. Это стандартное поведение для mvкоманды?
  2. Что-нибудь еще, что я должен проверить, чтобы удостовериться, что системе не был нанесен ущерб?
0

1 ответ на вопрос

3
Kamil Maciorowski

Я предполагаю, что target ( ../) был где-то внутри /home/или в другой точке монтирования, где /была смонтирована файловая система, отличная от указанной .

  1. Это стандартное поведение для mvкоманды?

Да. Если файл перемещается между файловыми системами, он копируется, а затем источник удаляется, а право на копирование настраивается для зеркального отображения источника. Я предполагаю, что это было так, но часть «удалить» выдавала ошибки «отказано в разрешении» и ничего не было удалено (или почти ничего, я вернусь к этому через некоторое время).

Если перемещение должно происходить в пределах одной файловой системы, mvпопытайтесь обновить записи каталога без копирования. Когда обычный пользователь пытается переместить что-то в корневую файловую систему, процесс обычно нажимает «отказано в разрешении» и ничего не происходит. Но в этом случае целевая файловая система была другой, как описано выше. И все же mvв какой-то момент попытался переместить /home/(или другую) точку монтирования в своей файловой системе, глубже в дерево, где ../был. Это действие очевидно невозможно, вы не можете переместить каталог в его подкаталог. Таким образом, файлы пользователя в той же файловой системе, которые ../были оставлены нетронутыми, несмотря на то, что он или она мог перемещать их ../по одному.

Единственная опасность, о которой я могу подумать, - это следующий сценарий: если бы пользователь мог удалить любые файлы и / или каталоги в файловой системе, отличные от того, где он ../находился, mvдействовал бы так, cpи тогда исходные файлы и / или каталоги были бы удалены . Вы должны проверить, могло ли это случиться и насколько это серьезно. В этом случае некоторые файлы могут быть перемещены назад. Этого не должно быть, если пользователь является полностью обычным пользователем. Пользователь, возможно, переместил некоторые файлы, /tmp/но это, вероятно, ничего серьезного.

  1. Что-нибудь еще, что я должен проверить, чтобы удостовериться, что системе не был нанесен ущерб?

Я так не думаю. Если система настроена правильно, обычный пользователь не может ничего сделать, чтобы навредить ей. Ну, в этом случае целевая файловая система может быть переполнена из-за этих неожиданно скопированных файлов, но это все. После того, как вы имеете дело с опасным сценарием, описанным выше, удалить копию, и ваша система должна быть тонкой.

Я бы сделал все очистки, как на пользователя, а не корень, даже если кто - то должен это сделать (как sudo -u user rm something). Дело в том, чтобы избежать повреждения системы в случае другой ошибки.

Отлично. Спасибо за подробный ответ. doliv071 6 лет назад 0

Похожие вопросы