Уведомление об изменении UID / GID - PullRequest
2 голосов
/ 14 марта 2011

Мое приложение создает элементарный ACL и сообщает об этом в модуль ядра. ACL содержит список UID / GID. Проверки этих идентификаторов являются пользовательскими и в дополнение к тому, что система уже предоставляет.

Теперь, если корень / пользователь изменяет UID / GID, ACL необходимо обновить. Есть ли способ получать уведомления в приложении при изменении UID / GID, например, через usermod команду? В настоящее время платформа является Linux, но мы могли бы перенести ее и на другие платформы (AIX / Solaris)

Ответы [ 4 ]

1 голос
/ 02 апреля 2011

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

1 голос
/ 14 марта 2011

В Linux inotify делает то, что вы хотите.В других системах попробуйте FAM .

0 голосов
/ 02 апреля 2011

В типичной модели безопасности Unix вам следует заботиться только о числовом значении GID / UID, а не о сопоставлении читаемой человеком строки и числового значения.Похоже, что так и есть, тщательно ли вы продумали, чего пытаетесь достичь?Может быть, было бы лучше передать имя или кортеж name / id, а не просто id?

0 голосов
/ 15 марта 2011

Один из возможных способов (вызванный ответом Фредерика) заключается в том, что я могу установить операцию inotify / (dnotify gasp! Для более старых ядер) в / etc / passwd, потому что этот файл всегда будет изменяться, по крайней мере, при любом изменении привилегий локального пользователя.,Проблема в том, как это сделать в среде NIS.

...