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

Я пытаюсь написать сценарий, который фиксирует право собственности на все файлы, принадлежащие конкретному пользователю, после изменения 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 пытается получить к нему доступ.

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

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

  • Хранить того же владельца файла для вновь созданных файлов
  • Как я могу автоматически загружать файл пользователю, внесшему изменения?
  • chmod и chown не влияют на установленный ресурс CIFS, но не испускают ошибок
  • chown удаляет липкий бит: ошибка или функция?
  • Как предоставить права пользователя на изменение прав собственности на файлы / каталоги в каталоге
  • Каковы общие права для / tmp? Я unintentionnally все это рекурсивно
  • Получение права собственности на файл, когда файл и каталог доступны для чтения / записи
  • Как восстановить групповую / пользовательскую правку по умолчанию для всех файлов в / var?
  • 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 .

    Interesting Posts

    Системные вызовы, поддерживаемые в запуске ядра

    Установка переменной среды с помощью сценария оболочки

    Могу ли я безопасно удалять старые каталоги в моем домашнем каталоге?

    Wi-Fi не подключается, хотя он показывает все ssid

    Команда macOS rm '-W' – восстановить

    Как расширить linux-раздел с? (После успешного продления: не загружать компьютер)

    убийство подпроцессов и ловушек

    Копирование файла в блок-устройство

    Почему это временно выглядит так, что предел передачи команды pv больше не применяется, когда я выхожу из приостановки в ram?

    Что такое zImage, rootfs

    Как преобразовать файл MKV в H.264 / AVC с разрешением 640×360 с использованием FFMPEG?

    Как я могу найти используемый по умолчанию (шрифт) ресурс XTerm?

    Что такое UUID ядра? Почему они были сумасшедшими?

    Настройка Postfix для ретрансляции и входа с внешней машины

    grep список имен и информации из большего файла

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