Я бы сказал, что нет способа надежно обнаружить изменение в отображении UID / имени пользователя, особенно если вы используете кроссплатформенность. База данных пользователей может находиться в NIS, NIS + или в настоящее время LDAP. Они могут интегрировать свои системы UNIX / Linux с Windows Server под управлением Active Directory или использовать что-то более неясное, например, Hesoid. Я не знаю, как получить автоматическую обратную связь от этих различных баз данных. Но также любая хорошая книга по администрированию UNIX скажет вам не изменять эти сопоставления или, по крайней мере, если вы должны, никогда не использовать UID. Не забывайте, что файловая система, использует ли она стандартные разрешения POSIX или POSIX ACL, также будет хранить UID, которые не будут получать обновления, если администратор решит изменить UID для пользователя. Ядро и файловая система обрабатывают определенный UID как определенного пользователя, независимо от его имени пользователя. Я действительно не думаю, что вам нужно беспокоиться о случае, когда администратор изменяет UID для пользователя, это может быть слишком подвержено ошибкам для всех.
Кроме того, быстрый взгляд на NTFS в Windows покажет, что он также хранит эквивалент UID, называемого SID, это длинное число, используемое для представления пользователя, а Windows не предоставляет и не ожидает, что вы измените отображение этого SID для конкретного имени пользователя. SID - это то, что ядро NT использует внутри, а не имя пользователя. Если я открою вкладку «Безопасность» в файле, в течение доли секунды я могу видеть цифры, пока Windows не сможет запросить контроллер Active Directory и присвоить этим номерам удобные имена пользователей. В конечном счете, это SID, а не имя пользователя, которое однозначно идентифицирует пользователя.