X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=README;h=1b8a6c35650fed3627f8753bc46559521f84d37f;hb=d671faf8dca799aa492ffac896e0cd49b5e09d08;hp=c416e42f91ce5512ad65c465937133bd1c72afaa;hpb=98f2fc8312dc5611bd85229f0b6faa0a4356ea66;p=nsscash%2Fnsscash.git diff --git a/README b/README index c416e42..1b8a6c3 100644 --- a/README +++ b/README @@ -17,6 +17,31 @@ C, which provides integration via `/etc/nsswitch.conf`. It's specifically designed to be very simple and uses the data prepared by `nsscash` for lookups. To support quick lookups, in O(log n), the files utilize indices. +Nsscash is very careful when deploying the changes: +- All files are updated using the standard "write to temporary file", "sync", + "rename" steps which is atomic on UNIX file systems. +- All errors cause an immediate abort ("fail fast") with a proper error + message and a non-zero exit status. This prevents hiding possibly important + errors. In addition all files are fetched first and then deployed to try to + prevent inconsistent state if only one file can be downloaded. The state + file (containing last file modifications) is only updated when all + operations were successful. +- To prevent unexpected permissions, `nsscash` does not create new files. The + user must create them first and `nsscash` will then re-use the permissions + and owner/group when updating the file (see examples below). +- To prevent misconfigurations, empty files (no users/groups) are not + permitted and will not be written to disk. This is designed to prevent the + accidental loss of all users/groups on a system. + +The passwd/group files have the following size restrictions: +- maximum number of entries: '2^64-1' (uint64_t) +- maximum passwd entry size: 65543 bytes (including newline) +- maximum group entry size: 65535 bytes (including newline, only one member) +- maximum members per group: depends on the user name length, + with 9 bytes per user: 5460 users +- `nsscash` checks for these restrictions and aborts with an error if they are + violated + nsscash is licensed under AGPL version 3 or later. [1] https://github.com/google/nsscache @@ -29,6 +54,10 @@ nsscash is licensed under AGPL version 3 or later. - github.com/BurntSushi/toml - C compiler, for `libnss_cash.so.2` +Tested on Debian Stretch and Buster, but should work on any GNU/Linux system. +With adapations to the NSS module it should work on any UNIX-like system which +uses NSS. + == USAGE