c71e0a6 FILES: Add the files provider

Authored and Committed by jhrozek 7 years ago
    FILES: Add the files provider
    
    Adds a new provider type "files". The provider watches the UNIX password
    and group databases for changes using inotify and propagates its
    contents to the sysdb.
    
    The files provider is only built on platforms that support the inotify
    interface, polling or loading the entries on-deman is not supported.
    
    During initialization, the files are loaded from the environment
    variables SSS_FILES_PASSWD and SSS_FILES_GROUP, defaulting to
    /etc/passwd and /etc/group respectively. Loading the files from
    environment variables is mostly implemented for tests that need to load
    nss_wrapped files.
    
    The files provider is a bit different from other provider types in the
    sense that it always enumerates full contents of the database.
    Therefore, the requests from Data Provider are always just replied to
    with success. Enumerating the contents is done in full at the moment,
    all users and all groups are removed and added anew. Modifying the
    passwd and group databses should be rare enough for this to be
    justified and we can optimize the code later.
    
    Since with large databases, the cache update might take a bit of time,
    we signal the responders to disable the files domain once we receive the
    inotify notification and re-enable the files domain after the update is
    finished. The idea is that the NSS configuration would still contain
    "files" after "sss" so that if the domain is disabled, libc would fall
    back to a direct "files" lookup.
    
    Resolves:
    https://fedorahosted.org/sssd/ticket/3262
    
    Reviewed-by: Pavel Březina <pbrezina@redhat.com>
    
        
file modified
+28 -1
file modified
+3 -0
file modified
+2 -0