Commit graph

26795 commits

Author SHA1 Message Date
Lennart Poettering 512e3bbce6 man: don't claim arguments where const that actually are not 2016-08-22 14:17:24 +02:00
Lennart Poettering 4a4485ae69 seccomp: make sure getrlimit() is among the default permitted syscalls
A lot of basic code wants to know the stack size, and it is safe if they do,
hence let's permit getrlimit() (but not setrlimit()) by default.

See: #3970
2016-08-22 14:17:23 +02:00
0xAX 05b4d3b55c mount-tool: return 0 instead of NULL in the acquire_description() (#4009)
to prevent:

src/mount/mount-tool.c: In function ‘acquire_description’:
src/mount/mount-tool.c:728:24: warning: return makes integer from pointer without a cast [-Wint-conversion]
                 return NULL;
                                         ^~~~
warning.

Additionally we don't set Description property in a case when
arg_description is NULL.
2016-08-22 02:14:23 -04:00
Peter Hutterer df35bfaa25 hwdb: provide axis ranges for the Dell XPS M1530 (#4016)
https://bugs.freedesktop.org/show_bug.cgi?id=97433
2016-08-21 19:31:25 -04:00
Zbigniew Jędrzejewski-Szmek b68d26b8cd networkd: fix typo (#4013) 2016-08-21 19:15:26 +02:00
Zbigniew Jędrzejewski-Szmek 047d91f9c8 shared/install: do not enable masked instances (#4005)
When told to enable a template unit, and the DefaultInstance specified in that
unit was masked, we would do this. Such a unit cannot be started or loaded, so
reporting successful enabling is misleading and unexpected.

$ systemctl mask getty@tty1
Created symlink /etc/systemd/system/getty@tty1.service → /dev/null.
$ systemctl --root=/ enable getty@tty1
(unchanged)
Failed to enable unit, unit /etc/systemd/system/getty@tty1.service is masked.

$ systemctl --root=/ enable getty@
(before)
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
(now)
Failed to enable unit, unit /etc/systemd/system/getty@tty1.service is masked.

The same error is emitted for enable and preset. And an error is emmited, not a
warning, so the failure to enable DefaultInstance is treated the same as if the
instance was specified on the command line. I think that this makes most sense,
for most template units.

Fixes #2513.
2016-08-21 15:10:51 +02:00
Zbigniew Jędrzejewski-Szmek 47d2d30d83 networkd: limit the number of routes to the kernel limit (#4007)
Fixes #3922.
2016-08-21 15:06:28 +02:00
Seraphime e3fc2b025e machinectl: print OS release in machinectl list (#3975) 2016-08-20 23:39:07 -04:00
Ronny Chevalier baab47d7b9 Merge pull request #4001 from clintonroy/master
systemctl: kill all units specified on the command line, not just the…
2016-08-20 11:42:24 +02:00
Zbigniew Jędrzejewski-Szmek 2056ec1927 Merge pull request #3965 from htejun/systemd-controller-on-unified 2016-08-19 19:58:01 -04:00
Clinton Roy 169d7fb684 systemctl: kill all units specified on the command line, not just the first one. 2016-08-20 08:59:02 +10:00
0xAX e6c9fa74a5 terminal-util: remove unnecessary check of result of isatty() (#4000)
After the call of the isatty() we check its result twice in the
open_terminal(). There are no sense to check result of isatty() that
it is less than zero and return -errno, because as described in
documentation:

isatty() returns 1 if fd is an open file descriptor referring to a
terminal;  otherwise 0 is returned, and errno is set to indicate the
error.

So it can't be less than zero.
2016-08-19 18:51:54 -04:00
Evgeny Vereshchagin 29272c04a7 Merge pull request #3909 from poettering/mount-tool
add a new tool for creating transient mount and automount units
2016-08-19 23:33:49 +03:00
Lennart Poettering 16d901e251 Merge pull request #3987 from keszybz/console-color-setup
Rework console color setup
2016-08-19 19:36:09 +02:00
Lennart Poettering a457bd26cc Merge pull request #3955 from keszybz/fix-preset-all
Fix preset-all
2016-08-19 19:10:30 +02:00
Lennart Poettering dc9710ae23 Merge pull request #3961 from keszybz/pr/3924
Add documentation to #3924
2016-08-19 19:08:41 +02:00
Lennart Poettering fb1bad9d51 man: document that "systemctl switch-root" tries hard to pass state across (#3995)
As suggested:

https://github.com/systemd/systemd/pull/3958#issuecomment-240410958

Let's document that we try hard to pass system state from the initrd to the
host, and even compare the systemd binary paths.
2016-08-19 12:16:28 -04:00
Zbigniew Jędrzejewski-Szmek 906e79ebf5 Merge pull request #3997 from poettering/codition-udev-fix
Trivial fixes to udev and condition tests
2016-08-19 12:13:44 -04:00
Zbigniew Jędrzejewski-Szmek acf553b04d terminal-util: use getenv_bool for $SYSTEMD_COLORS
This changes the semantics a bit: before, SYSTEMD_COLORS= would be treated as
"yes", same as SYSTEMD_COLORS=xxx and SYSTEMD_COLORS=1, and only
SYSTEMD_COLORS=0 would be treated as "no". Now, only valid booleans are treated
as "yes". This actually matches how $SYSTEMD_COLORS was announced in NEWS.
2016-08-19 11:57:37 -04:00
Zbigniew Jędrzejewski-Szmek 158fbf7661 systemd: ignore lack of tty when checking whether colors should be enabled
When started by the kernel, we are connected to the console, and we'll set TERM
properly to some value in fixup_environment(). We'll then enable or disable
colors based on the value of $SYSTEMD_COLORS and $TERM.

When reexecuting, TERM should be already set, so we can use this value.
Effectively, behaviour is the same as before affd7ed1a was reverted, but instead
of reopening the console before configuring color output, we just ignore what
stdout is connected to and decide based on the variables only.
2016-08-19 11:34:22 -04:00
Ronny Chevalier 3f94fa378e Merge pull request #3992 from poettering/hostname-fix2
some hostname fixes, triggered by #3979
2016-08-19 16:46:49 +02:00
Lennart Poettering d3fc8bf43f tests: let's stick to 8ch indenting, in perl code too 2016-08-19 16:01:17 +02:00
Lennart Poettering 4d548a7d86 test: always check whether condition allocation worked
Our tests should test for OOM too explicitly, hence fix the test accordingly
2016-08-19 16:00:51 +02:00
Zbigniew Jędrzejewski-Szmek f165171513 shared/install: properly report masked units listed in Also=
A masked unit is listed in Also=:

$ systemctl cat test1 test2
→# /etc/systemd/system/test1.service
[Unit]
Description=test service 1

[Service]
Type=oneshot
ExecStart=/usr/bin/true

[Install]
WantedBy=multi-user.target
Also=test2.service
Alias=alias1.service

→# /dev/null

$ systemctl --root=/ enable test1
(before)
Created symlink /etc/systemd/system/alias1.service → /etc/systemd/system/test1.service.
Created symlink /etc/systemd/system/multi-user.target.wants/test1.service → /etc/systemd/system/test1.service.
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
   instance name specified.

(after)
Created symlink /etc/systemd/system/alias1.service → /etc/systemd/system/test1.service.
Created symlink /etc/systemd/system/multi-user.target.wants/test1.service → /etc/systemd/system/test1.service.
Unit /etc/systemd/system/test2.service is masked, ignoring.
2016-08-19 09:55:56 -04:00
Zbigniew Jędrzejewski-Szmek de78fa9ba0 units: install user units as real files, not symlinks to ../system/
This was causing preset-all --global to create symlinks:

$ systemctl preset-all --global --root=/var/tmp/inst1
Created symlink /var/tmp/inst1/etc/systemd/user/shutdown.target → /usr/lib/systemd/user/../system/shutdown.target.
Created symlink /var/tmp/inst1/etc/systemd/user/sockets.target → /usr/lib/systemd/user/../system/sockets.target.
Created symlink /var/tmp/inst1/etc/systemd/user/timers.target → /usr/lib/systemd/user/../system/timers.target.
Created symlink /var/tmp/inst1/etc/systemd/user/paths.target → /usr/lib/systemd/user/../system/paths.target.
Created symlink /var/tmp/inst1/etc/systemd/user/bluetooth.target → /usr/lib/systemd/user/../system/bluetooth.target.
Created symlink /var/tmp/inst1/etc/systemd/user/printer.target → /usr/lib/systemd/user/../system/printer.target.
Created symlink /var/tmp/inst1/etc/systemd/user/sound.target → /usr/lib/systemd/user/../system/sound.target.
Created symlink /var/tmp/inst1/etc/systemd/user/smartcard.target → /usr/lib/systemd/user/../system/smartcard.target.
Created symlink /var/tmp/inst1/etc/systemd/user/busnames.target → /usr/lib/systemd/user/../system/busnames.target.

It is better to create units in a state that completely matches the presets, i.e.
preset-all should do nothing when invoked immediately after installation.

I'm sure it was confusing to users too, suggesting that system and user units
may somehow alias each other.
2016-08-19 09:55:55 -04:00
Zbigniew Jędrzejewski-Szmek 0064dcc0fc units: synchronize Makefile and presets settings
Enable reboot.target and disable exit.target: the first is used on normal
machines, the second only in containers, and the more general one
should be enabled by default.

Also fix the Makefile to match what preset-all does.

With this and the previous commits, doing "make instal DESTDIR=…" followed
by "systemctl preset-all --root=…" doesn't result in any changes.
2016-08-19 09:55:55 -04:00
Zbigniew Jędrzejewski-Szmek 58a6dd1558 units: enable systemd-networkd-wait-online.service, disable all journal-remote stuff
The preset for systemd-networkd-wait-online.service should match
whatever we do for systemd-networkd.service. s-n-wait-online.service
is only pulled in when some other unit pulls in network-online.target,
otherwise it's not used. But if something pulls in network-online.target,
they should expect s-n-wait-online.service to be active iff
systemd-networkd.service is active.

OTOH, the journal-remote and journal-upload services should be disabled
by default, since they don't do anything without additional configuration.
2016-08-19 09:55:55 -04:00
Zbigniew Jędrzejewski-Szmek 25ea92778d shared/install: when creating symlinks, keep existing relative symlinks
Running preset-all on a system installed from rpms or even created
using make install would remove and recreate a lot of symlinks, changing
relative to absolute symlinks. In general relative symlinks are nicer,
so there is no reason to change them, and those spurious changes were
obscuring more interesting stuff.

$ make install DESTDIR=/var/tmp/inst1

$ systemctl preset-all --root=/var/tmp/inst1
(before)
Removed /var/tmp/inst1/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service.
Created symlink /var/tmp/inst1/etc/systemd/system/ctrl-alt-del.target → /usr/lib/systemd/system/exit.target.
Removed /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/remote-fs.target.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/remote-fs.target → /usr/lib/systemd/system/remote-fs.target.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/machines.target → /usr/lib/systemd/system/machines.target.
Created symlink /var/tmp/inst1/etc/systemd/system/sockets.target.wants/systemd-journal-remote.socket → /usr/lib/systemd/system/systemd-journal-remote.socket.
Removed /var/tmp/inst1/etc/systemd/system/sockets.target.wants/systemd-networkd.socket.
Created symlink /var/tmp/inst1/etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /usr/lib/systemd/system/systemd-networkd.socket.
Removed /var/tmp/inst1/etc/systemd/system/getty.target.wants/getty@tty1.service.
Created symlink /var/tmp/inst1/etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/systemd-journal-upload.service → /usr/lib/systemd/system/systemd-journal-upload.service.
Removed /var/tmp/inst1/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service.
Created symlink /var/tmp/inst1/etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Removed /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/systemd-resolved.service.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/systemd-resolved.service → /usr/lib/systemd/system/systemd-resolved.service.
Removed /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/systemd-networkd.service.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /usr/lib/systemd/system/systemd-networkd.service.

(after)
Removed /var/tmp/inst1/etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service.
Created symlink /var/tmp/inst1/etc/systemd/system/ctrl-alt-del.target → /usr/lib/systemd/system/exit.target.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/machines.target → /usr/lib/systemd/system/machines.target.
Created symlink /var/tmp/inst1/etc/systemd/system/sockets.target.wants/systemd-journal-remote.socket → /usr/lib/systemd/system/systemd-journal-remote.socket.
Created symlink /var/tmp/inst1/etc/systemd/system/multi-user.target.wants/systemd-journal-upload.service → /usr/lib/systemd/system/systemd-journal-upload.service.
2016-08-19 09:55:54 -04:00
Zbigniew Jędrzejewski-Szmek 60bec8e403 shared/install: move root skipping into create_symlink()
No functional change intended.
2016-08-19 09:55:54 -04:00
Zbigniew Jędrzejewski-Szmek d923e42eed man: describe what symlinks to unit do, and specify that presets must use real names
The man pages didn't ever mention that symlinks to units can be created, and what
exactly this means. Fix that omission, and disallow presets on alias names.
2016-08-19 09:55:54 -04:00
Zbigniew Jędrzejewski-Szmek 11e11fd57a shared/install: ignore unit symlinks when doing preset-all
Before, when interating over unit files during preset-all, behaviour was the
following:

- if we hit the real unit name first, presets were queried for that name, and
  that unit was enabled or disabled accordingly,

- if we hit an alias first (one of the symlinks chaining to the real unit), we
  checked the presets using the symlink name, and then proceeded to enable or
  disable the real unit.

E.g. for systemd-networkd.service we have the alias dbus-org.freedesktop.network1.service
(/usr/lib/systemd/system/dbus-org.freedesktop.network1.service), but the preset
is only for the systemd-networkd.service name. The service would be enabled or
disabled pseudorandomly depending on the order of iteration.

For "preset", behaviour was analogous: preset on the alias name disabled the
service (following the default disable policy), preset on the "real" name
applied the presets.

With the patch, for "preset" and "preset-all" we silently skip symlinks. This
gives mostly the right behaviour, with the limitation that presets on aliases
are ignored.  I think that presets on aliases are not that common (at least my
preset files on Fedora don't exhibit any such usage), and should not be
necessary, since whoever installs the preset can just refer to the real unit
file. It would be possible to overcome this limitation by gathering a list of
names of a unit first, and then checking whether *any* of the names matches the
presets list. That would require a significant redesign of the code, and be
a lot slower (since we would have to fully read all unit directories to preset
one unit) to so I'm not doing that for now.

With this patch, two properties are satisfied:
- preset-all and preset are idempotent, and the second and subsequent invocations
  do not produce any changes,
- preset-all and preset for a specific name produce the same state for that unit.

Fixes #3616.
2016-08-19 09:55:54 -04:00
Zbigniew Jędrzejewski-Szmek ff56349d5a shared/install: remove unused paramater and add more comments 2016-08-19 09:55:53 -04:00
Zbigniew Jędrzejewski-Szmek 32d9493e59 systemctl: fix preset-all with missing /etc/systemd/system
If the directory is missing, we can assume that those pesky symlinks are gone too.
2016-08-19 09:55:53 -04:00
Lennart Poettering a6a8e60bd3 hwdb: let's no abbreivate HORIZONTAL as HORIZ (#3994)
I think I am developing OCD... Let's fix this before this actually gets used in
the wild.

A follow-up for #3986 (5fc9e4abb4).
2016-08-19 15:31:36 +02:00
Lennart Poettering 986cf85d94 man: minor wording fixes 2016-08-19 11:04:13 +02:00
Lennart Poettering 0cce63da78 man: don't claim we replace spaces by dashes when cleaning up hostnames
Let's make sure the man page actually documents what is implemented, i.e.
"Lennart's PC" turns into "LennartsPC" when we clean up the name.
2016-08-19 11:02:55 +02:00
Lennart Poettering 7c9f396b8a man: document that static/transient hostnames may be 64 chars at max 2016-08-19 11:02:24 +02:00
Lennart Poettering 2c85bbaa53 tests: add test from #3979
Let's add one more test that came up during the discussion of an issue.

The selected name with 69 chars is above the Linux hostname limit of 64.
2016-08-19 11:01:59 +02:00
Lennart Poettering b55a6f0812 Merge pull request #3990 from AnchorCat/networkd-fixes
networkd: various fixes for route configuration
2016-08-19 10:43:58 +02:00
Lennart Poettering cbf138ebef Merge pull request #3988 from keszybz/journald-dynamic-users
Journald dynamic users
2016-08-19 10:41:26 +02:00
Peter Hutterer 8249c5722d hwdb: add resolution for the Dell Precision 5510 (#3989)
https://bugs.freedesktop.org/show_bug.cgi?id=97347
2016-08-19 10:25:53 +02:00
Zbigniew Jędrzejewski-Szmek 61755fdae0 journald: do not create split journals for dynamic users
Dynamic users should be treated like system users, and their logs
should end up in the main system journal.
2016-08-18 23:34:40 -04:00
Zbigniew Jędrzejewski-Szmek 986a34a683 core/dynamic-users: warn when creation of symlinks for dynamic users fails
Also return the first error, since it's most likely to be interesting.
If unlink fails, symlink will usually return EEXIST.
2016-08-18 23:09:29 -04:00
Tejun Heo f50582649f logind: update empty and "infinity" handling for [User]TasksMax (#3835)
The parsing functions for [User]TasksMax were inconsistent.  Empty string and
"infinity" were interpreted as no limit for TasksMax but not accepted for
UserTasksMax.  Update them so that they're consistent with other knobs.

* Empty string indicates the default value.
* "infinity" indicates no limit.

While at it, replace opencoded (uint64_t) -1 with CGROUP_LIMIT_MAX in TasksMax
handling.

v2: Update empty string to indicate the default value as suggested by Zbigniew
    Jędrzejewski-Szmek.

v3: Fixed empty UserTasksMax handling.
2016-08-18 22:57:53 -04:00
Zbigniew Jędrzejewski-Szmek da983f8852 Merge pull request #3986 from whot/wip/click-wheel-angle-horiz
Add udev property for horizontal wheel click angles
2016-08-18 22:53:12 -04:00
Zbigniew Jędrzejewski-Szmek 57e3375f83 Merge pull request #3865 from poettering/remove-ipc
add RemoveIPC= service file setting
2016-08-18 22:52:13 -04:00
Zbigniew Jędrzejewski-Szmek bd64d82c1c Revert "pid1: reconnect to the console before being re-executed"
This reverts commit affd7ed1a9.

> So it looks like make_console_stdio() has bad side effect. More specifically it
> does a TIOCSCTTY ioctl (via acquire_terminal()) which sees to disturb the
> process which was using/owning the console.

Fixes #3842.
https://bugs.debian.org/834367
https://bugzilla.redhat.com/show_bug.cgi?id=1367766
2016-08-18 22:30:15 -04:00
Zbigniew Jędrzejewski-Szmek 206fc4b284 systemd: warn when setrlimit fails
This should make it easier to figure things out.
2016-08-18 22:29:56 -04:00
Peter Hutterer 5fc9e4abb4 hwdb: add a udev property for a wheel click angle on horiz wheels
The Logitech MX Master has a horizontal scroll wheel with a different click
angle than the vertical one. Add a new property for this case, we can't add
values to the normal one without risking upsetting existing parsers.

Fixes #3947
2016-08-19 11:57:36 +10:00
Peter Hutterer bbb040884d libudev: fix typo in comment 2016-08-19 11:43:58 +10:00