chown рекурсивно изменил разрешения

34

Я выполнил команду chown в каталоге:

chown -R user:user {.,}*

{.,}*Используется с mvи cpвключать как скрытые и перечисленные файлы. Теперь эта команда прошла и изменила эти два файла в моем каталоге, но мне пришлось разбить его, чтобы остановить, так как он продолжался. Теперь я боюсь, что это пошло и изменило разрешения для других файлов и папок, так как это не прекращалось.

NicOx
источник

Ответы:

46

Используя {.,}*, вы включили оба ./и ../. Наряду с этой -Rопцией ваш chownзвонок собирался просмотреть всю файловую систему (и другие, возможно, смонтированные), пройдя через ../. С другими командами эта маленькая ошибка может быть довольно смертельной, но поверьте мне, вы не первый, и вы не будете последним ...

Так как эта операция довольно тяжелая, ваш chownвызов некоторое время зависает, так как для его обработки требуется много файлов. Я бы посоветовал вам вернуться в каталог, в который вы позвонили, и постепенно вернуться, /чтобы увидеть, какие изменения были внесены. Вы можете применить быстрое решение, выполнив:

chown root:root /* # Set ownership to root for all directories in /.
chown you:yourgroup /home/you -R # Take your home back.

В Ubuntu /homeкаталог передается первому (admin / sudo) пользователю, зарегистрированному в системе. Если вы единственный пользователь, вы можете сделать:

chown you:yourgroup /home -R

Однако достаточно простого chmod 755включения /home, даже если оно принадлежит пользователю root.

Быстрый взгляд /(включая сами права root ls -ld /) также будет хорошим началом. Я предлагаю вам убедиться, что он /принадлежит пользователю root с 755 установленными разрешениями.

Если вы использовали chownдля задания очень определенного владельца (пользователь, отличный от вас или root, редкую группу, ...), вы можете использовать findпоиск chownфайлов -ed.

find / -user {username}
find / -group {groupname}

К сожалению, нет ничего такого, undoчто вы сделали. Linux, естественно, не отслеживает эти «случайные» операции.

Для получения дополнительной информации о том, чего вы пытались достичь, посмотрите на этот вопрос SuperUser .

Джон У. Смит
источник
Мой корневой каталог кажется хорошим. Это принадлежит root.
nicoX
Должно быть, вы убили chownвовремя, но продолжайте проверять, переходя из каталога, в котором вы выполняли chown, к корню.
Джон У. С. Смит,
Была ли проблема здесь в том, что я использовал флаг -R? И как вы можете изменить владельца в одной команде для скрытых и перечисленных файлов.
nicoX
2
Смотрите ссылку, которую я добавил в конце моего ответа. Проблема -Rбыла в том, что вы также прошли рекурсивный путь .., что в итоге привело к изменению всего дерева файлов с /deep/directory/where/you/chownedна /.
Джон У. С. Смит