Systemd/src/shared
Lennart Poettering 1b99214789 sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from static files
systemd-sysusers is a tool to reconstruct /etc/passwd and /etc/group
from static definition files that take a lot of inspiration from
tmpfiles snippets. These snippets should carry information about system
users only. To make sure it is not misused for normal users these
snippets only allow configuring UID and gecos field for each user, but
do not allow configuration of the home directory or shell, which is
necessary for real login users.

The purpose of this tool is to enable state-less systems that can
populate /etc with the minimal files necessary, solely from static data
in /usr. systemd-sysuser is additive only, and will never override
existing users.

This tool will create these files directly, and not via some user
database abtsraction layer. This is appropriate as this tool is supposed
to run really early at boot, and is only useful for creating system
users, and system users cannot be stored in remote databases anyway.

The tool is also useful to be invoked from RPM scriptlets, instead of
useradd. This allows moving from imperative user descriptions in RPM to
declarative descriptions.

The UID/GID for a user/group to be created can either be chosen dynamic,
or fixed, or be read from the owner of a file in the file system, in
order to support reconstructing the correct IDs for files that shall be
owned by them.

This also adds a minimal user definition file, that should be
sufficient for most basic systems. Distributions are expected to patch
these files and augment the contents, for example with fixed UIDs for
the users where that's necessary.
2014-06-12 23:07:33 +02:00
..
linux syscallfilter: port to libseccomp 2014-02-12 18:30:36 +01:00
.gitignore core: add new RestrictAddressFamilies= switch 2014-02-26 02:19:28 +01:00
Makefile build-sys: add stub makefiles to make emacs easier to use 2012-04-12 13:35:56 +02:00
MurmurHash2.c libudev: ship the original MurmurHash2.[ch] file 2013-12-23 02:55:06 +01:00
MurmurHash2.h libudev: ship the original MurmurHash2.[ch] file 2013-12-23 02:55:06 +01:00
acl-util.c Introduce strv_consume which takes ownership 2014-03-04 10:04:50 -05:00
acl-util.h journald: DO recalculate the ACL mask, but only if it doesn't exist 2013-05-30 00:43:39 -04:00
acpi-fpdt.c make gcc shut up 2014-02-19 17:53:50 +01:00
acpi-fpdt.h support acpi firmware performance data (FPDT) 2013-09-24 15:43:41 +02:00
af-list.c core: add new RestrictAddressFamilies= switch 2014-02-26 02:19:28 +01:00
af-list.h core: add new RestrictAddressFamilies= switch 2014-02-26 02:19:28 +01:00
apparmor-util.c security: rework selinux, smack, ima, apparmor detection logic 2013-10-10 16:35:44 +02:00
apparmor-util.h security: rework selinux, smack, ima, apparmor detection logic 2013-10-10 16:35:44 +02:00
architecture.c architecture: Add cris 2014-03-04 21:06:05 +01:00
architecture.h architecture: Add cris 2014-03-04 21:06:05 +01:00
ask-password-api.c Remove unnecessary casts in printfs 2014-05-15 15:29:58 +02:00
ask-password-api.h Add more password agent information 2014-04-24 09:23:54 +02:00
async.c build-sys: move async.[ch] to src/shared 2014-05-05 21:19:06 +02:00
async.h build-sys: move async.[ch] to src/shared 2014-05-05 21:19:06 +02:00
audit.c nspawn: newer kernels (>= 3.14) allow resetting the audit loginuid, make use of this 2014-02-12 03:02:09 +01:00
audit.h use #pragma once instead of foo*foo define guards 2013-11-18 20:28:54 -05:00
blkid-util.h nspawn: add --image= switch to boot GPT disk images that follow the Discoverable Partitions Specification 2014-03-10 20:35:52 +01:00
boot-timestamps.c make gcc shut up 2014-02-19 17:53:50 +01:00
boot-timestamps.h support acpi firmware performance data (FPDT) 2013-09-24 15:43:41 +02:00
bus-errors.h timedated: refuse manual system time updates when automatic timesync is enabled 2014-05-24 10:45:44 +08:00
bus-label.c src/shared/ cannot reference symbols from libraries 2014-02-23 01:53:40 +01:00
bus-label.h src/shared/ cannot reference symbols from libraries 2014-02-23 01:53:40 +01:00
calendarspec.c time: support @ syntax for denoting times since the UNIX epoch 1970-1-1 2014-03-25 04:08:16 +01:00
calendarspec.h timer: implement calendar time events 2012-11-23 21:37:58 +01:00
capability.c bus-proxy: drop priviliges if we can 2014-06-04 11:13:08 +02:00
capability.h timesyncd: split privilege dropping code out of timesyncd so that we can make use of it from other daemons too 2014-06-01 08:49:33 +02:00
cgroup-show.c delta: draw arrows with draw_special_char() 2014-04-23 19:06:39 +02:00
cgroup-show.h use #pragma once instead of foo*foo define guards 2013-11-18 20:28:54 -05:00
cgroup-util.c Remove unnecessary casts in printfs 2014-05-15 15:29:58 +02:00
cgroup-util.h core: find the closest parent slice that has a specfic cgroup controller enabled when enabling/disabling cgroup controllers for units 2014-02-17 15:49:21 +01:00
clean-ipc.c logind: don't apply RemoveIPC= to system users 2014-05-21 09:36:49 +09:00
clean-ipc.h logind: automatically remove SysV + POSIX IPC objects when the users owning them fully log out 2014-03-14 01:49:44 +01:00
clock-util.c clock-util: clock_[sg]et_time() -> clock_[sg]et_hwclock() 2014-05-24 10:26:33 +08:00
clock-util.h clock-util: clock_[sg]et_time() -> clock_[sg]et_hwclock() 2014-05-24 10:26:33 +08:00
condition-util.c virt: make Virtualization an anonymous enum 2014-02-24 13:26:44 +01:00
condition-util.h core: add new ConditionArchitecture() that checks the architecture returned by uname()'s machine field. 2014-02-21 02:43:14 +01:00
conf-files.c shared: include root when canonicalizing conf paths 2014-02-14 00:58:00 +01:00
conf-files.h use #pragma once instead of foo*foo define guards 2013-11-18 20:28:54 -05:00
conf-parser.c Do not unescape unit names in [Install] section 2014-05-26 20:12:19 +02:00
conf-parser.h conf-parser: Fix typo in comment 2014-04-28 08:15:50 +02:00
copy.c sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from static files 2014-06-12 23:07:33 +02:00
copy.h sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from static files 2014-06-12 23:07:33 +02:00
def.h Remove unnecessary casts in printfs 2014-05-15 15:29:58 +02:00
dev-setup.c core: Beef up PrivateDevices= 2014-03-19 16:25:11 +01:00
dev-setup.h exec: introduce PrivateDevices= switch to provide services with a private /dev 2014-01-20 21:28:37 +01:00
device-nodes.c shared: device-nodes - add include guard 2013-09-24 15:34:57 +02:00
device-nodes.h shared: device-nodes - add include guard 2013-09-24 15:34:57 +02:00
efivars.c gpt-auto-generator: automatically find the root disk of the system 2014-03-07 04:31:26 +01:00
efivars.h support acpi firmware performance data (FPDT) 2013-09-24 15:43:41 +02:00
env-util.c core: clean up environment block for --user instances a bit 2014-01-12 19:41:57 +08:00
env-util.h core: clean up environment block for --user instances a bit 2014-01-12 19:41:57 +08:00
errno-list.c bus: rework sd_bus_error APIs 2013-11-22 04:23:22 +01:00
errno-list.h bus: rework sd_bus_error APIs 2013-11-22 04:23:22 +01:00
eventfd-util.c nspawn: make nspawn robust to container failure 2014-05-25 11:23:35 +08:00
eventfd-util.h nspawn: make nspawn robust to container failure 2014-05-25 11:23:35 +08:00
exit-status.c kdbus: when uploading bus name policy, resolve users/groups out-of-process 2014-06-05 13:09:46 +02:00
exit-status.h kdbus: when uploading bus name policy, resolve users/groups out-of-process 2014-06-05 13:09:46 +02:00
fdset.c util: replace close_nointr_nofail() by a more useful safe_close() 2014-03-18 19:31:34 +01:00
fdset.h util: allow trailing semicolons on define_trivial_cleanup_func lines 2013-10-14 06:11:19 +02:00
fileio-label.c util: rename write_one_line_file() to write_string_file() 2013-04-03 20:12:56 +02:00
fileio-label.h util: rename write_one_line_file() to write_string_file() 2013-04-03 20:12:56 +02:00
fileio.c Unify GREEDY_REALLOC and GREEDY_REALLOC_T 2014-04-12 10:20:55 -04:00
fileio.h systemctl: add "systemctl cat" 2013-11-30 22:20:20 -05:00
generator.c fsck: Search for fsck.type in PATH 2014-04-12 17:23:13 -04:00
generator.h generators: rework mount generators 2014-03-06 04:00:41 +01:00
gpt.h gpt: introduce root partition type GUIDs for ARM 32bit + ARM 64bit 2014-03-14 15:12:48 +01:00
gunicode.c unicode: treat cute symbol block as fullwidth 2013-10-13 17:56:54 -04:00
gunicode.h util, utf8: make ellipsize take multi-byte characters into account 2013-10-13 17:56:54 -04:00
hashmap.c hashmap: add hashmap_remove2() to remove item from hashtable and return both value and key 2014-05-15 00:43:44 +02:00
hashmap.h hashmap: add hashmap_remove2() to remove item from hashtable and return both value and key 2014-05-15 00:43:44 +02:00
ima-util.c security: missing header inclusions 2013-10-10 21:22:59 +02:00
ima-util.h security: rework selinux, smack, ima, apparmor detection logic 2013-10-10 16:35:44 +02:00
initreq.h build-sys: move more files from core/ to share/ that are generic enough 2013-11-22 16:31:40 +01:00
install-printf.c specifier: rework specifier calls to return proper error message 2013-09-17 10:06:50 -05:00
install-printf.h specifier: rework specifier calls to return proper error message 2013-09-17 10:06:50 -05:00
install.c Make systemctl --root look for files in the proper places 2014-05-15 15:29:58 +02:00
install.h shared/install: use char** convention for strvs 2014-01-05 09:16:15 -05:00
ioprio.h trivial coding style clean ups 2013-12-03 22:27:45 +01:00
label.c label: when clearing selinux context, don't mangle errno 2014-06-10 22:48:56 +02:00
label.h label: there is no label_retest_selinux() call 2014-04-23 19:06:38 +02:00
list.h list: make LIST_FIND_TAIL work for empty lists 2014-05-06 13:07:15 +02:00
log.c log: honour the kernel's quiet cmdline argument 2014-06-10 19:16:59 +02:00
log.h Pass log config from systemd to systemd-shutdown 2014-02-17 02:26:22 -05:00
login-shared.c build-sys: move sd-login src/login → src/libsystemd/sd-login 2014-03-17 18:35:48 +01:00
login-shared.h build-sys: move sd-login src/login → src/libsystemd/sd-login 2014-03-17 18:35:48 +01:00
logs-show.c time-util: make sure USEC_PER_SEC and friends are actually of type usec_t 2014-05-22 11:44:03 +09:00
logs-show.h journal: add ability to browse journals of running OS containers 2013-12-11 22:04:03 +01:00
macro.h shared: add ALIGN_POWER2 macro 2014-05-13 22:05:32 +02:00
missing.h rtnl: message - read group membership of incoming messages 2014-05-10 20:56:37 +02:00
mkdir-label.c shared: split mkdir_*() and mkdir_*_label() from each other 2013-07-26 04:13:55 +02:00
mkdir.c tmpfiles: get rid of "m" lines, make them redundant by "z" 2014-06-10 23:42:16 +02:00
mkdir.h tmpfiles: get rid of "m" lines, make them redundant by "z" 2014-06-10 23:42:16 +02:00
output-mode.h systemctl: suppress duplicate newline if there's not log output in "systemctl status" 2014-03-13 04:17:37 +01:00
pager.c util: replace close_pipe() with new safe_close_pair() 2014-03-24 03:22:44 +01:00
pager.h Add __attribute__((const, pure, format)) in various places 2013-05-02 22:52:09 -04:00
path-lookup.c path-lookup: don't hardcode .config 2014-05-16 18:47:36 +02:00
path-lookup.h Make systemctl --root look for files in the proper places 2014-05-15 15:29:58 +02:00
path-util.c path-util: fix missing terminating zero 2014-05-25 11:21:19 +08:00
path-util.h path-util: add path_make_relative() 2014-05-16 18:47:34 +02:00
prioq.c core: convert PID 1 to libsystemd-bus 2013-11-20 20:52:36 +01:00
prioq.h bus: add minimal event loop API 2013-10-10 04:44:48 +02:00
ptyfwd.c ptyfwd: reset nonblocking mode 2014-02-21 18:42:14 +01:00
ptyfwd.h nspawn: split out pty forwaring logic into ptyfwd.c 2013-10-31 01:43:38 +01:00
ratelimit.c ratelimit: fix off-by-one 2013-02-13 08:45:13 -05:00
ratelimit.h use #pragma once instead of foo*foo #define guards 2012-07-19 12:30:59 +02:00
refcnt.h bus: make bus ref counting atomic 2013-05-16 21:58:34 +02:00
replace-var.c Verify validity of session name when received from outside 2013-09-16 09:58:37 -05:00
replace-var.h shared: add API for replacing @FOO@ style variables in strings 2012-11-14 22:21:16 +01:00
ring.c shared: add ring buffer 2014-05-13 22:08:13 +02:00
ring.h shared: add ring buffer 2014-05-13 22:08:13 +02:00
seccomp-util.c seccomp: add helper call to add all secondary archs to a seccomp filter 2014-02-18 22:14:00 +01:00
seccomp-util.h seccomp: add helper call to add all secondary archs to a seccomp filter 2014-02-18 22:14:00 +01:00
securebits.h build-sys: move more files from core/ to share/ that are generic enough 2013-11-22 16:31:40 +01:00
selinux-util.c security: rework selinux, smack, ima, apparmor detection logic 2013-10-10 16:35:44 +02:00
selinux-util.h selinux: rework selinux access check logic 2012-10-02 17:07:00 -04:00
set.c core: serialize/deserialize bus subscribers 2013-07-10 23:41:03 +02:00
set.h util: allow trailing semicolons on define_trivial_cleanup_func lines 2013-10-14 06:11:19 +02:00
siphash24.c shared: switch our hash table implementation over to SipHash 2013-12-22 21:12:25 +01:00
siphash24.h shared: switch our hash table implementation over to SipHash 2013-12-22 21:12:25 +01:00
sleep-config.c make gcc shut up 2014-02-19 17:53:50 +01:00
sleep-config.h systemd-sleep: add support for freeze and standby 2013-05-06 22:51:57 +02:00
smack-util.c build-sys: use glibc's xattr support instead of requiring libattr 2014-05-28 17:36:40 +08:00
smack-util.h smack: rework security labeling for multiple frameworks 2014-02-24 17:37:41 +01:00
socket-label.c activate: export make_socket_fd 2014-03-17 01:55:48 -04:00
socket-util.c socket: optionally remove sockets/FIFOs in the file system after use 2014-06-04 13:12:34 +02:00
socket-util.h socket: optionally remove sockets/FIFOs in the file system after use 2014-06-04 13:12:34 +02:00
sparse-endian.h shared: move sparse-endian.h from journal 2012-10-22 18:08:48 +02:00
spawn-ask-password-agent.c move more common files to shared/ and add them to shared.la 2012-04-12 02:39:37 +02:00
spawn-ask-password-agent.h use #pragma once instead of foo*foo #define guards 2012-07-19 12:30:59 +02:00
spawn-polkit-agent.c util: replace close_nointr_nofail() by a more useful safe_close() 2014-03-18 19:31:34 +01:00
spawn-polkit-agent.h use #pragma once instead of foo*foo define guards 2013-11-18 20:28:54 -05:00
special.h bus: add .busname unit type to implement kdbus-style bus activation 2013-12-02 23:32:34 +01:00
specifier.c specifier: rework specifier calls to return proper error message 2013-09-17 10:06:50 -05:00
specifier.h specifier: rework specifier calls to return proper error message 2013-09-17 10:06:50 -05:00
strbuf.c Fix spelling errors using 'codespell' tool 2013-04-15 08:40:05 -04:00
strbuf.h use the same email address everywhere 2012-11-12 19:47:43 +01:00
strv.c systemd-run: make sure --nice=, --uid=, --gid=, --setenv= also work in --scope mode 2014-03-05 19:03:10 +01:00
strv.h util: add new FOREACH_STRING() macro as syntactic sugar to iterate through a number of fixed strings 2014-03-19 00:54:41 +01:00
strxcpyx.c trivial coding style clean ups 2013-12-03 22:27:45 +01:00
strxcpyx.h macro: clean up usage of gcc attributes 2013-10-16 06:14:59 +02:00
test-tables.h test-tables: allow sparse tables and check mapping for -1 2013-07-16 12:04:31 -04:00
time-dst.c Remove dead lines in various places 2014-02-24 19:24:14 -05:00
time-dst.h timedatectl: properly print 30 minutes DST transitions 2012-11-11 16:55:25 +01:00
time-util.c time-util: make sure USEC_PER_SEC and friends are actually of type usec_t 2014-05-22 11:44:03 +09:00
time-util.h time-util: make sure USEC_PER_SEC and friends are actually of type usec_t 2014-05-22 11:44:03 +09:00
udev-util.h udev: remove seqnum API and all assumptions about seqnums 2014-04-13 17:12:14 -07:00
unit-name.c Use strlen even for constant strings 2014-03-16 09:52:56 -04:00
unit-name.h Use enums to make it obvious what boolean params mean 2013-12-26 15:49:54 -05:00
utf8.c journal: fix export of messages containing newlines 2014-04-05 00:42:01 -04:00
utf8.h journal: fix export of messages containing newlines 2014-04-05 00:42:01 -04:00
util.c sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from static files 2014-06-12 23:07:33 +02:00
util.h sysusers: add minimal tool to reconstruct /etc/passwd and /etc/group from static files 2014-06-12 23:07:33 +02:00
utmp-wtmp.c utmp-wtmp: allow overriding username on wall 2014-03-14 21:27:33 +01:00
utmp-wtmp.h utmp-wtmp: allow overriding username on wall 2014-03-14 21:27:33 +01:00
virt.c systemd-detect-virt: only discover Xen domU 2014-06-10 18:16:47 +02:00
virt.h virt: make Virtualization an anonymous enum 2014-02-24 13:26:44 +01:00
watchdog.c util: replace close_nointr_nofail() by a more useful safe_close() 2014-03-18 19:31:34 +01:00
watchdog.h use #pragma once instead of foo*foo #define guards 2012-07-19 12:30:59 +02:00
xml.c bus: add basic dbus1 policy parser 2014-06-06 19:41:24 +02:00
xml.h bus: add basic dbus1 policy parser 2014-06-06 19:41:24 +02:00