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

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

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

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 пытается получить к нему доступ.

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

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

  • как смонтировать общий ресурс CIFS, поэтому я могу полностью контролировать смонтированный том на клиенте
  • Список изменений chmod и chown
  • Отображение UID с помощью rsync
  • chown / dev по ошибке
  • читать только символическую ссылку или что-то подобное?
  • Нет драйверов после изменения владельца usr Linux Mint
  • Каковы общие права для / tmp? Я unintentionnally все это рекурсивно
  • Создайте файл в качестве другого пользователя и группы
  • 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 - лучшая ОС в мире.