Commit Graph

32054 Commits

Author SHA1 Message Date
Zbigniew Jędrzejewski-Szmek
4e9fe38dc0 test/TEST-21-SYSUSERS: add tests for new functionality 2018-02-02 10:40:24 +01:00
Zbigniew Jędrzejewski-Szmek
d16a1c1bb6 sysusers: allow admin/runtime overrides to command-line config
When used in a package installation script, we want to invoke systemd-sysusers
before that package is installed (so it can contain files owned by the newly
created user), so the configuration to use is specified on the command
line. This should be a copy of the configuration that will be installed as
/usr/lib/sysusers.d/package.conf. We still want to obey any overrides in
/etc/sysusers.d or /run/sysusers.d in the usual fashion. Otherwise, we'd get a
different result when systemd-sysusers is run with a copy of the new config on
the command line and when systemd-sysusers is run at boot after package
instalation. In the second case any files in /etc or /run have higher priority,
so the same should happen when the configuration is given on the command line.
More generally, we want the behaviour in this special case to be as close to
the case where the file is finally on disk as possible, so we have to read all
configuration files, since they all might contain overrides and additional
configuration that matters. Even files that have lower priority might specify
additional groups for the user we are creating. Thus, we need to read all
configuration, but insert our new configuration somewhere with the right
priority.

If --target=/path/to/file.conf is given on the command line, we gather the list
of files, and pretend that the command-line config is read from
/path/to/file.conf (doesn't matter if the file on disk actually exists or
not). All package scripts should use this option to obtain consistent and
idempotent behaviour.

The corner case when --target= is specified and there are no positional
arguments is disallowed.

v1:
- version with --config-name=
v2:
- disallow --config-name= and no positional args
v3:
- remove --config-name=
v4:
- add --target= and rework the code completely
v5:
- fix argcounting bug and add example in man page
v6:
- rename --target to --replace
2018-02-02 10:40:22 +01:00
Zbigniew Jędrzejewski-Szmek
6e888894fc basic/strv: add function to insert items at position 2018-02-02 10:35:30 +01:00
Zbigniew Jędrzejewski-Szmek
7b1aaf6633 sysusers: allow the shell to be specified
This is necessary for some system users where the "login shell" is
set to a specific binary.
2018-02-02 10:35:30 +01:00
Zbigniew Jędrzejewski-Szmek
1b600bd522 sysusers: take configuration as positional arguments
If the configuration is included in a script, this is more convient.
I thought it would be possible to use this for rpm scriptlets with
'%pre -p systemd-sysuser "..."', but apparently there is no way to pass
arguments to the executable ($1 is used for the package installation count).
But this functionality seems generally useful, e.g. for testing and one-off
scripts, so let's keep it.

There's a slight change in behaviour when files are given on the command line:
if we cannot parse them, error out instead of ignoring the failure. When trying
to parse all configuration files, we don't want to fail even if some config
files are broken, but when parsing a list of items specified explicitly, we
should.

v2:
- rename --direct to --inline
2018-02-02 10:18:13 +01:00
Zbigniew Jędrzejewski-Szmek
d1e4b8fd96 sysusers: emit a bit more info at debug level when locking fails
This is the first error message when running unprivileged, and the message is
unspecific, so let's at least add some logging at debug level to make this less
confusing.
2018-02-02 09:09:24 +01:00
tblume
75aaade16b meson.build: make docdir configurable (#8068)
SUSE is using a different docdir, so the path should be configurable
2018-02-02 06:46:15 +09:00
Lennart Poettering
52dca0de99 Merge pull request #7042 from vcaputo/iteratedcache
RFC: Optionally cache hashmap iterated results
2018-02-01 18:08:50 +01:00
Lennart Poettering
05cdbb304d Merge pull request #8045 from yuwata/dump-more
analyze: dump more settings
2018-02-01 10:16:50 +01:00
Lennart Poettering
f6c7c39897 Merge pull request #8061 from poettering/selinux-mask-fix
never use /dev/null label when making selinux access decisions
2018-02-01 10:11:30 +01:00
Yu Watanabe
e7b2ea7c97 strv: drop strv_join_quoted() (#8057)
The function `strv_join_quoted()` is now not used, and has a bug
in the buffer size calculation when the strings needs to escaped,
as reported in #8056.
So, let's remove the function.

Closes #8056.
2018-02-01 10:11:02 +01:00
Michael Vogt
b9ee05c266 sysusers: allow force reusing existing user/group IDs (#8037)
On Debian/Ubuntu systems the default passwd/group files use a
slightly strange mapping. E.g. in passwd:
```
man:x:6:12::/var/cache/man:/sbin/nologin
```
and in group:
```
disk:x:6:
man:x:12:
```

This is not supported in systemd-sysusers right now because
sysusers will not re-use an existing uid/gid in its normal
mode of operation. Unfortunately this reuse is needed to
replicate the default Debian/Ubuntu users/groups.

This commit enforces reuse when the "uid:gid" syntax is used
to fix this.

I also added a test that replicates the Debian base-passwd
passwd/group file to ensure things are ok.
2018-02-01 13:47:50 +09:00
Lennart Poettering
81e9871e87 selinux: make sure we never use /dev/null for making unit selinux access decisions 2018-01-31 19:54:25 +01:00
Lennart Poettering
0d5456556f update TODO 2018-01-31 19:54:25 +01:00
Evgeny Vereshchagin
ce691f31aa test-lldp: use memcmp to compare bytes (#8054)
Technically, `data` is a sequence of bytes without a trailing zero,
so the use of `memcmp` seems to be logical here. Besides, this helps get
around a bug that makes `asan` report the false positive mentioned in
 #8052.

Closes #8052.
2018-01-31 09:54:37 +01:00
Yu Watanabe
c9d4169919 core/service: dump more settings 2018-01-30 17:10:47 +09:00
Yu Watanabe
9bd0e1b814 core/swap: dump TimeoutSec= 2018-01-30 17:10:09 +09:00
Yu Watanabe
9189979213 core/mount: dump TimeoutSec= 2018-01-30 17:09:59 +09:00
Vito Caputo
302af1c250 Merge pull request #8031 from mrq1/MRQ1_20180128_typo_fix
journalctl: typo fix
2018-01-28 13:03:39 -08:00
Hermann Gausterer
fabf4dae16 journalctl: typo fix 2018-01-28 20:49:55 +01:00
Lennart Poettering
46659f7deb Merge pull request #8030 from keszybz/another-news-update
NEWS: reword one sentence
2018-01-28 16:58:17 +01:00
Zbigniew Jędrzejewski-Szmek
31751f7e2a NEWS: add missing equal sign
Important!
2018-01-28 16:54:18 +01:00
Zbigniew Jędrzejewski-Szmek
1a0cd2c74e NEWS: reword one sentence 2018-01-28 16:52:47 +01:00
Lennart Poettering
82c8e3e650 NEWS: let's get this thing done 2018-01-28 16:36:03 +01:00
Zbigniew Jędrzejewski-Szmek
e6501af8b8 NEWS: mention --grep (#8029) 2018-01-28 23:52:06 +09:00