Изменение прав собственности файла без ошибок

Я пытаюсь написать сценарий, который фиксирует право собственности на все файлы, принадлежащие конкретному пользователю, после изменения UID пользователя.

В настоящее время я запускаю:

  • Почему порядок параметров влияет на файлы, найденные `find`?
  • Извлечь имя файла из команды find
  • find + grep для соответствия точных ключевых слов в файле
  • find -exec не делает то, что находит вывод, предлагает
  • Используйте sed, чтобы найти и заменить строку в нескольких файлах
  • Использование поиска для поиска и отправки отчетов, содержащих один, но не два ключевых слова внутри
  • chown -Rhc --from=${OLD_UID} ${NEW_UID} / chown -Rhc --from=:${OLD_UID} :${NEW_UID} / 

    Где OLD_UID и NEW_UID – это старые и новые UID пользователя, которые я только что изменил.

    Это имеет желаемый эффект, но всегда выходит с кодом возврата 1 из-за таких ошибок:

     chown: cannot access '/proc/1103/task/1103/fd/4': No such file or directory chown: cannot access '/proc/1103/task/1103/fdinfo/4': No such file or directory chown: cannot access '/proc/1103/fd/4': No such file or directory chown: cannot access '/proc/1103/fdinfo/4': No such file or directory 

    Моя теория заключается в том, что процесс поиска всех файлов берет свой собственный процесс, который тогда не существует, когда chown пытается получить к нему доступ.

    Я мог бы просто выбросить код возврата из команд, но я бы предпочел, чтобы я не проигнорировал реальные ошибки.

    Может ли кто-нибудь предложить альтернативный подход, который не будет сообщать о ложных ошибках?

  • Найти последний отредактированный файл (странное поведение exec)
  • Как найти резервные файлы Emacs?
  • Изменить владельца для файла резервной копии, созданного backupninja
  • Получение права собственности на файл, когда файл и каталог доступны для чтения / записи
  • Извлечение пути подкаталога из частично известного каталога
  • Изменить разрешение папки на основе list.txt
  • One Solution collect form web for “Изменение прав собственности файла без ошибок”

    Вы можете использовать find и указывать на то, чтобы не спускаться в другие файловые системы (что должно препятствовать доступу к виртуальным файловым системам, таким как proc , sys и т. Д.):

     find / -xdev -uid ${OLD_UID} -execdir chown ${NEW_UID} {} + 

    Это может быть не так эффективно.

    Другой способ отфильтровать виртуальные файлы – перемонтировать корневую файловую систему где-то еще:

     mkdir /tmp/chroot mount -o .. -t .. /dev/... /tmp/chroot 

    И запустите chown на /tmp/chroot .

    Linux и Unix - лучшая ОС в мире.