Am 05.07.2017 um 12:10 schrieb Michael Chapman:
On Wed, 5 Jul 2017, Colin Guthrie wrote:
Reindl Harald wrote on 04/07/17 19:50:
When new configuration options are added, the same unit file can
almost always be used with older systemd, and it'll just warn & ignore
the parts it doesn't understand. Similarly, various configuration
options might be unavailable on some architectures and with some
compilation options. The current behaviour of warn&ignore provides
for "soft degradation" in those cases.
frankly a new option on the left side is a completly different thing
than a invalid value - just silently continue with invalid values of
existing options is playing a danergous game in a crucial component like
systemd
It's a rare thing :p but I have to agree with you here!
I'd say if "User=-notauser" then silently failing and using root is
acceptable as per the usual semantics of "- prefix suppresses errors",
but "User=notauser" should fail IMO.
I'm pretty sure you'll find that it does. Specifically, it will fail
when the child process for the command being executed attempts to map
the username to a UID.
The issue being discussed here is that systemd considers "0day" to be
_syntactically_ invalid for a username. See the valid_user_group_name()
function in basic/user-util.c.
yes and hence it should FAIL the service and not behave silently like
the left side of a param is unknown on a older version - a invalid VALUE
in a config has to fail until it's makred with a dash to silent be
ignored in case of errors
(In my opinion, we shouldn't be this restrictive. POSIX permits
usernames that start with a digit, and just because certain other
utilities can't deal with them doesn't mean systemd need forbid them.)
that whole check is by all respect nonsense - if the user *exists* in
the system you can't pretend it's invalid - if it would be invalid it
could not have been created to begin with
So the directive fails the syntactic check for User=, just like
Zbigniew's example of User="my name is pretty!".
I do think we ought to have a list of "critical" directives, such that
any syntactic error in those directives causes the unit load state to be
"error". For better or worse, people simply don't look at logs, so
they'll never notice that important directives in their units are being
ignored
and that is the problem - at least fall back to "nobody" but for the
sake of god not to root
_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel