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

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

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

1 ответ1

3

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

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

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

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

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

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

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

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

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