diff --git a/NEWS b/NEWS index 7f241fd64..75432a09d 100644 --- a/NEWS +++ b/NEWS @@ -281,6 +281,20 @@ CHANGES WITH 245: to combine attachment with enablement and invocation, or detachment with stopping and disablement. + * UPGRADE ISSUE: a bug where some jobs were trimmed as redundant was + fixed, which in turn exposed bugs in unit configuration of services + which have Type=oneshot and should only run once, but do not have + RemainAfterExit=yes set. Without RemainAfterExit=yes, a one-shot + service may be started again after exiting successfully, for example + as a dependency in another transaction. Affected services included + some internal systemd services (most notably + systemd-vconsole-setup.service, which was updated to have + RemainAfterExit=yes), and plymouth-start.service. Please ensure that + plymouth has been suitably updated or patched before upgrading to + this systemd release. See + https://bugzilla.redhat.com/show_bug.cgi?id=1807771 for some + additional discussion. + Contributions from: AJ Bagwell, Alin Popa, Andreas Rammhold, Anita Zhang, Ansgar Burchardt, Antonio Russo, Arian van Putten, Ashley Davis, Balint Reczey, Bart Willems, Bastien Nocera, Benjamin Dahlhoff, Charles diff --git a/catalog/systemd.hr.catalog.in b/catalog/systemd.hr.catalog.in index 4526ae2a8..40727abaf 100644 --- a/catalog/systemd.hr.catalog.in +++ b/catalog/systemd.hr.catalog.in @@ -289,11 +289,11 @@ DNS zahtjev ili snimak resursa nije prošao DNSSEC provjeru. To uobičajeno označava da je komunikacijski kanal mijenjan. -- 4d4408cfd0d144859184d1e65d7c8a65 -Subject: DNSSEC pouzdano sidro je opozvano +Subject: DNSSEC pouzdano sidrište je opozvano Defined-By: systemd Support: %SUPPORT_URL% Documentation: man:systemd-resolved.service(8) -A DNSSEC trust anchor has been revoked. A new trust anchor has to be -configured, or the operating system needs to be updated, to provide an updated -DNSSEC trust anchor. +DNSSEC pouzdano sidrište je opozvano. Novo pouzdano sidrište mora biti +podešeno, ili operativni sustav mora biti nadopunjen kako bi omogućio nadopunjeno +DNSSEC pouzdano sidrište. diff --git a/man/bootup.xml b/man/bootup.xml index 28f14891d..5a0a3c287 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -220,7 +220,7 @@ emergency.service | | | so no filesystems can be mounted before the check is complete. When the root device becomes available, - initd-root-device.target is reached. + initrd-root-device.target is reached. If the root device can be mounted at /sysroot, the sysroot.mount unit becomes active and diff --git a/man/systemd-homed.service.xml b/man/systemd-homed.service.xml index 26789a236..f79c2be2d 100644 --- a/man/systemd-homed.service.xml +++ b/man/systemd-homed.service.xml @@ -18,7 +18,7 @@ systemd-homed.service systemd-homed - Home Directory/User Account Manager + Home Area/User Account Manager @@ -30,13 +30,14 @@ Description systemd-homed is a system service that may be used to create, remove, change or - inspect home directories. + inspect home areas (directories and network mounts and real or loopback block devices with a filesystem, + optionally encrypted). Most of systemd-homed's functionality is accessible through the homectl1 command. See the Home Directories documentation for - details about the format and design of home directories managed by + details about the format and design of home areas managed by systemd-homed.service. Each home directory managed by systemd-homed.service synthesizes a local user diff --git a/man/systemd.preset.xml b/man/systemd.preset.xml index 30c838b3d..092c18673 100644 --- a/man/systemd.preset.xml +++ b/man/systemd.preset.xml @@ -70,8 +70,11 @@ either the word enable or disable followed by a space and a unit name (possibly with shell style wildcards), separated by newlines. - Empty lines and lines whose first non-whitespace character is # or - ; are ignored. + Empty lines and lines whose first non-whitespace character is # or + ; are ignored. Multiple instance names for unit + templates may be specified as a space separated list at the end of + the line instead of the customary position between @ + and the unit suffix. Presets must refer to the "real" unit file, and not to any aliases. See systemd.unit5 @@ -123,6 +126,17 @@ disable * 99-, it will be read last and hence can easily be overridden by spin or administrator preset policy. + + Enable multiple template instances + + # /usr/lib/systemd/system-preset/80-dirsrv.preset + +enable dirsrv@.service foo bar baz + + + This enables all three of dirsrv@foo.service, + dirsrv@bar.service and dirsrv@baz.service. + A GNOME spin diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml index 47fa1eb8b..a29c913ff 100644 --- a/man/tmpfiles.d.xml +++ b/man/tmpfiles.d.xml @@ -94,7 +94,7 @@ A+ /path-or-glob/to/append/acls/recursively - - - - POSIX systemd-tmpfiles-cleanup.service, and associated units. System daemons frequently require private runtime directories below /run to - store communication sockets and similar. For these, is is better to use + store communication sockets and similar. For these, it is better to use RuntimeDirectory= in their unit files (see systemd.exec5 for details), if the flexibility provided by tmpfiles.d is not required. The advantages diff --git a/po/hr.po b/po/hr.po index 197c32a47..d77fee7df 100644 --- a/po/hr.po +++ b/po/hr.po @@ -7,50 +7,50 @@ msgid "" msgstr "" "Project-Id-Version: systemd master\n" -"Report-Msgid-Bugs-To: https://github.com/systemd/systemd/issues\n" -"POT-Creation-Date: 2016-04-27 11:57+0100\n" -"PO-Revision-Date: 2016-04-27 12:11+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-03-08 12:55+0100\n" +"PO-Revision-Date: 2020-03-08 12:57+0100\n" +"Last-Translator: gogo \n" "Language-Team: \n" +"Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7.1\n" -"Last-Translator: gogo com>\n" +"X-Generator: Poedit 2.0.6\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"Language: hr\n" -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1 +#: src/core/org.freedesktop.systemd1.policy.in:22 msgid "Send passphrase back to system" msgstr "Pošalji lozinku natrag u sustav" -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:2 +#: src/core/org.freedesktop.systemd1.policy.in:23 msgid "" "Authentication is required to send the entered passphrase back to the system." msgstr "Potrebna je ovjera za slanje upisane lozinke natrag u sustav." -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3 +#: src/core/org.freedesktop.systemd1.policy.in:33 msgid "Manage system services or other units" msgstr "Upravljajte uslugama sustava ili drugim jedinicama" -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4 +#: src/core/org.freedesktop.systemd1.policy.in:34 msgid "Authentication is required to manage system services or other units." msgstr "Potrebna je ovjera za upravljanje uslugama sustava ili jedinicama." -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:5 +#: src/core/org.freedesktop.systemd1.policy.in:43 msgid "Manage system service or unit files" msgstr "Upravljajte uslugama sustava ili datotekama jedinica" -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:6 +#: src/core/org.freedesktop.systemd1.policy.in:44 msgid "Authentication is required to manage system service or unit files." msgstr "" "Potrebna je ovjera za upravljanje uslugama sustava ili datotekama jedinica." -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:7 +#: src/core/org.freedesktop.systemd1.policy.in:54 msgid "Set or unset system and service manager environment variables" msgstr "Postavite ili uklonite varijable okruženja sustava i usluga" -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:8 +#: src/core/org.freedesktop.systemd1.policy.in:55 msgid "" "Authentication is required to set or unset system and service manager " "environment variables." @@ -58,27 +58,78 @@ msgstr "" "Potrebna je ovjera za postavljanje ili uklanjanje varijabla okruženja " "sustava i usluga." -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:9 +#: src/core/org.freedesktop.systemd1.policy.in:64 msgid "Reload the systemd state" msgstr "Ponovno učitaj systemd stanje" -#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:10 +#: src/core/org.freedesktop.systemd1.policy.in:65 msgid "Authentication is required to reload the systemd state." -msgstr "Potrebna je ovjera za ponovno učitavanje systemd stanja." +msgstr "Potrebna je ovjera za ponovno učitavanja systemd stanja." -#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:1 +#: src/home/org.freedesktop.home1.policy:13 +msgid "Create a home area" +msgstr "Stvori osobni prostor" + +#: src/home/org.freedesktop.home1.policy:14 +msgid "Authentication is required to create a user's home area." +msgstr "Potrebna je ovjera za stvaranje osobnog prostora korisnika." + +#: src/home/org.freedesktop.home1.policy:23 +msgid "Remove a home area" +msgstr "Ukloni osobni prostor" + +#: src/home/org.freedesktop.home1.policy:24 +msgid "Authentication is required to remove a user's home area." +msgstr "Potrebna je ovjera za uklanjanje osobnog prostora korisnika." + +#: src/home/org.freedesktop.home1.policy:33 +msgid "Check credentials of a home area" +msgstr "Provjeri vjerodajnice osobnog prostora" + +#: src/home/org.freedesktop.home1.policy:34 +msgid "" +"Authentication is required to check credentials against a user's home area." +msgstr "" +"Potrebna je ovjera za provjeru vjerodajnica osobnog prostora korisnika." + +#: src/home/org.freedesktop.home1.policy:43 +msgid "Update a home area" +msgstr "Nadopuni osobni prostor" + +#: src/home/org.freedesktop.home1.policy:44 +msgid "Authentication is required to update a user's home area." +msgstr "Potrebna je ovjera za nadopunu osobnog prostora korisnika." + +#: src/home/org.freedesktop.home1.policy:53 +msgid "Resize a home area" +msgstr "Promjeni veličinu osobnog prostora korisnika" + +#: src/home/org.freedesktop.home1.policy:54 +msgid "Authentication is required to resize a user's home area." +msgstr "Potrebna je ovjera za promjenu veličine osobnog prostora korisnika." + +#: src/home/org.freedesktop.home1.policy:63 +msgid "Change password of a home area" +msgstr "Promijeni lozinku osobnog prostora" + +#: src/home/org.freedesktop.home1.policy:64 +msgid "" +"Authentication is required to change the password of a user's home area." +msgstr "Potrebna je ovjera za promjenu lozinke osobnog prostora korisnika." + +#: src/hostname/org.freedesktop.hostname1.policy:20 msgid "Set host name" msgstr "Postavi naziv računala" -#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:2 +#: src/hostname/org.freedesktop.hostname1.policy:21 msgid "Authentication is required to set the local host name." msgstr "Potrebna je ovjera za postavljanje naziva lokalnog računala." -#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3 +#: src/hostname/org.freedesktop.hostname1.policy:30 msgid "Set static host name" msgstr "Postavi nepromjenjivi naziv račumala" -#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4 +#: src/hostname/org.freedesktop.hostname1.policy:31 msgid "" "Authentication is required to set the statically configured local host name, " "as well as the pretty host name." @@ -86,193 +137,212 @@ msgstr "" "Potrebna je ovjera za postavljenje nepromjenjivog naziva lokalnog računala, " "kao i prijatnog naziva računala." -#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:5 +#: src/hostname/org.freedesktop.hostname1.policy:41 msgid "Set machine information" msgstr "Postavi informacije računala" -#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:6 +#: src/hostname/org.freedesktop.hostname1.policy:42 msgid "Authentication is required to set local machine information." msgstr "Potrebna je ovjera za postavljanje informacije lokalnog računala." -#: ../src/import/org.freedesktop.import1.policy.in.h:1 +#: src/hostname/org.freedesktop.hostname1.policy:51 +msgid "Get product UUID" +msgstr "Prikaži UUID proizvoda" + +#: src/hostname/org.freedesktop.hostname1.policy:52 +msgid "Authentication is required to get product UUID." +msgstr "Potrebna je ovjera za prikaz UUID-a proizvoda." + +#: src/import/org.freedesktop.import1.policy:22 msgid "Import a VM or container image" msgstr "Uvezi VM ili spremnik slike" -#: ../src/import/org.freedesktop.import1.policy.in.h:2 +#: src/import/org.freedesktop.import1.policy:23 msgid "Authentication is required to import a VM or container image" msgstr "Potrebna je ovjera za uvoz WM ili spremnika slike" -#: ../src/import/org.freedesktop.import1.policy.in.h:3 +#: src/import/org.freedesktop.import1.policy:32 msgid "Export a VM or container image" msgstr "Izvezi VM ili spremnik slike" -#: ../src/import/org.freedesktop.import1.policy.in.h:4 +#: src/import/org.freedesktop.import1.policy:33 msgid "Authentication is required to export a VM or container image" msgstr "Potrebna je ovjera za izvoz WM ili spremnika slike" -#: ../src/import/org.freedesktop.import1.policy.in.h:5 +#: src/import/org.freedesktop.import1.policy:42 msgid "Download a VM or container image" msgstr "Preuzmi VM ili spremnik slike" -#: ../src/import/org.freedesktop.import1.policy.in.h:6 +#: src/import/org.freedesktop.import1.policy:43 msgid "Authentication is required to download a VM or container image" msgstr "Potrebna je ovjera za preuzimanje VM ili spremnika slike." -#: ../src/locale/org.freedesktop.locale1.policy.in.h:1 +#: src/locale/org.freedesktop.locale1.policy:22 msgid "Set system locale" msgstr "Postavi sustav lokalizacije" -#: ../src/locale/org.freedesktop.locale1.policy.in.h:2 +#: src/locale/org.freedesktop.locale1.policy:23 msgid "Authentication is required to set the system locale." msgstr "Potrebna je ovjera za postavljanje sustava lokalizacije." -#: ../src/locale/org.freedesktop.locale1.policy.in.h:3 +#: src/locale/org.freedesktop.locale1.policy:33 msgid "Set system keyboard settings" msgstr "Postavi postavke tipkovnice sustava" -#: ../src/locale/org.freedesktop.locale1.policy.in.h:4 +#: src/locale/org.freedesktop.locale1.policy:34 msgid "Authentication is required to set the system keyboard settings." msgstr "Potrebna je ovjera za postavljanje postavki tipkovnice sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:1 +#: src/login/org.freedesktop.login1.policy:22 msgid "Allow applications to inhibit system shutdown" -msgstr "Dopusti aplikacijama zaustavljanje isključivanja sustava" +msgstr "Dopusti aplikacijama spriječavanje isključivanja sustava" -#: ../src/login/org.freedesktop.login1.policy.in.h:2 +#: src/login/org.freedesktop.login1.policy:23 msgid "" "Authentication is required for an application to inhibit system shutdown." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama zaustavljanje isključivanja " +"Potrebna je ovjera za dopuštanje aplikacijama u spriječavanju isključivanja " "sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:3 +#: src/login/org.freedesktop.login1.policy:33 msgid "Allow applications to delay system shutdown" msgstr "Dopusti aplikacijama odgodu isključivanja sustava" -#: ../src/login/org.freedesktop.login1.policy.in.h:4 +#: src/login/org.freedesktop.login1.policy:34 msgid "Authentication is required for an application to delay system shutdown." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama odgode isključivanja sustava." +"Potrebna je ovjera za dopuštanje aplikacijama u odgodi isključivanja sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:5 +#: src/login/org.freedesktop.login1.policy:44 msgid "Allow applications to inhibit system sleep" -msgstr "Dopusti aplikacijama zaustavljanje spavanja sustava" +msgstr "Dopusti aplikacijama spriječavanje spavanja sustava" -#: ../src/login/org.freedesktop.login1.policy.in.h:6 +#: src/login/org.freedesktop.login1.policy:45 msgid "Authentication is required for an application to inhibit system sleep." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama zaustavljanja spavanja sustava." +"Potrebna je ovjera za dopuštanje aplikacijama u spriječavanju spavanja " +"sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:7 +#: src/login/org.freedesktop.login1.policy:55 msgid "Allow applications to delay system sleep" msgstr "Dopusti aplikacijama odgodu spavanja sustava" -#: ../src/login/org.freedesktop.login1.policy.in.h:8 +#: src/login/org.freedesktop.login1.policy:56 msgid "Authentication is required for an application to delay system sleep." msgstr "Potrebna je ovjera za odgodu spavanja sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:9 +#: src/login/org.freedesktop.login1.policy:65 msgid "Allow applications to inhibit automatic system suspend" -msgstr "Dopusti aplikacijama zaustavljanje automatskog suspendiranja sustava" +msgstr "Dopusti aplikacijama spriječavanje automatskog suspendiranja sustava" -#: ../src/login/org.freedesktop.login1.policy.in.h:10 +#: src/login/org.freedesktop.login1.policy:66 msgid "" "Authentication is required for an application to inhibit automatic system " "suspend." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama zaustavljanje automatskog " +"Potrebna je ovjera za dopuštanje aplikacijama u spriječavanju automatskog " "suspendiranja sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:11 +#: src/login/org.freedesktop.login1.policy:75 msgid "Allow applications to inhibit system handling of the power key" msgstr "" -"Dopusti aplikacijama sprječavanje rukovanja sustava tipkom isključivanja" +"Dopusti aplikacijama spriječavanje rukovanja sustava tipkom isključivanja" -#: ../src/login/org.freedesktop.login1.policy.in.h:12 +#: src/login/org.freedesktop.login1.policy:76 msgid "" "Authentication is required for an application to inhibit system handling of " "the power key." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama sprječavanje rukovanja sustava " -"tipkom isključivanja." +"Potrebna je ovjera za dopuštanje aplikacijama u spriječavanju rukovanja " +"sustava tipkom isključivanja." -#: ../src/login/org.freedesktop.login1.policy.in.h:13 +#: src/login/org.freedesktop.login1.policy:86 msgid "Allow applications to inhibit system handling of the suspend key" -msgstr "Dopusti aplikacijama sprječavanje rukovanja sustava tipkom suspenzije" +msgstr "Dopusti aplikacijama spriječavanje rukovanja sustava tipkom suspenzije" -#: ../src/login/org.freedesktop.login1.policy.in.h:14 +#: src/login/org.freedesktop.login1.policy:87 msgid "" "Authentication is required for an application to inhibit system handling of " "the suspend key." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama sprječavanje rukovanja sustava " -"tipkom suspenzije." +"Potrebna je ovjera za dopuštanje aplikacijama u spriječavanju rukovanja " +"sustava tipkom suspenzije." -#: ../src/login/org.freedesktop.login1.policy.in.h:15 +#: src/login/org.freedesktop.login1.policy:97 msgid "Allow applications to inhibit system handling of the hibernate key" -msgstr "Dopusti aplikacijama sprječavanje rukovanja sustava tipkom hibernacije" +msgstr "" +"Dopusti aplikacijama spriječavanje rukovanja sustava tipkom hibernacije" -#: ../src/login/org.freedesktop.login1.policy.in.h:16 +#: src/login/org.freedesktop.login1.policy:98 msgid "" "Authentication is required for an application to inhibit system handling of " "the hibernate key." msgstr "" -"Potrebna je ovjera za dopuštanje aplikacijama sprječavanje rukovanja sustava " -"tipkom hibernacije." +"Potrebna je ovjera za dopuštanje aplikacijama u spriječavanju rukovanja " +"sustava tipkom hibernacije." -#: ../src/login/org.freedesktop.login1.policy.in.h:17 +#: src/login/org.freedesktop.login1.policy:107 msgid "Allow applications to inhibit system handling of the lid switch" -msgstr "Dopusti aplikacijama sprječavanje rukovanja sustava preklopnicama" +msgstr "Dopusti aplikacijama spriječavanje rukovanja sustava preklopnicama" -#: ../src/login/org.freedesktop.login1.policy.in.h:18 +#: src/login/org.freedesktop.login1.policy:108 msgid "" "Authentication is required for an application to inhibit system handling of " "the lid switch." msgstr "" -"Potrebna je ovjera za dopuštenje sprječavanja rukovanja sustava " +"Potrebna je ovjera za dopuštanje spriječavanja rukovanja sustava " "preklopnicama." -#: ../src/login/org.freedesktop.login1.policy.in.h:19 +#: src/login/org.freedesktop.login1.policy:117 +msgid "Allow non-logged-in user to run programs" +msgstr "Dopusti neprijavljenim korisnicima pokretanje programa" + +#: src/login/org.freedesktop.login1.policy:118 +msgid "Explicit request is required to run programs as a non-logged-in user." +msgstr "" +"Potrebna je ovjera za dopuštanje neprijavljenim korisnicima pokretanje " +"programa." + +#: src/login/org.freedesktop.login1.policy:127 msgid "Allow non-logged-in users to run programs" msgstr "Dopusti neprijavljenim korisnicima pokretanje programa" -#: ../src/login/org.freedesktop.login1.policy.in.h:20 +#: src/login/org.freedesktop.login1.policy:128 msgid "Authentication is required to run programs as a non-logged-in user." msgstr "" -"Potrebna je ovjera za dopuštenje neprijavljenim korisnicima pokretanje " +"Potrebna je ovjera za dopuštanje neprijavljenim korisnicima pokretanje " "programa." -#: ../src/login/org.freedesktop.login1.policy.in.h:21 +#: src/login/org.freedesktop.login1.policy:137 msgid "Allow attaching devices to seats" msgstr "Dopusti povezivanje uređaja skupu sesija i hardvera" -#: ../src/login/org.freedesktop.login1.policy.in.h:22 +#: src/login/org.freedesktop.login1.policy:138 msgid "Authentication is required to attach a device to a seat." msgstr "Potrebna je ovjera za povezivanje uređaja sa skupom sesija i hardvera." -#: ../src/login/org.freedesktop.login1.policy.in.h:23 +#: src/login/org.freedesktop.login1.policy:148 msgid "Flush device to seat attachments" msgstr "Ukloni povezani uređaj sa skupa sesija i hardvera" -#: ../src/login/org.freedesktop.login1.policy.in.h:24 -msgid "" -"Authentication is required to reset how devices are attached to seats." +#: src/login/org.freedesktop.login1.policy:149 +msgid "Authentication is required to reset how devices are attached to seats." msgstr "" "Potrebna je ovjera za obnovu povezivanja uređaja sa skupom sesija i hardvera." -#: ../src/login/org.freedesktop.login1.policy.in.h:25 +#: src/login/org.freedesktop.login1.policy:158 msgid "Power off the system" msgstr "Isključi sustav" -#: ../src/login/org.freedesktop.login1.policy.in.h:26 +#: src/login/org.freedesktop.login1.policy:159 msgid "Authentication is required to power off the system." msgstr "Potrebna je ovjera za isključivanje sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:27 +#: src/login/org.freedesktop.login1.policy:169 msgid "Power off the system while other users are logged in" msgstr "Isključi sustav kada su ostali korisnici prijavljeni" -#: ../src/login/org.freedesktop.login1.policy.in.h:28 +#: src/login/org.freedesktop.login1.policy:170 msgid "" "Authentication is required to power off the system while other users are " "logged in." @@ -280,66 +350,99 @@ msgstr "" "Potrebna je ovjera za isključivanje sustava kada su ostali korisnici " "prijavljeni." -#: ../src/login/org.freedesktop.login1.policy.in.h:29 +#: src/login/org.freedesktop.login1.policy:180 msgid "Power off the system while an application is inhibiting this" msgstr "" -"Isključi sustav kada je aplikacija zatražila zaustavljanje isključivanja" +"Isključi sustav kada je aplikacija zatražila spriječavanje isključivanja" -#: ../src/login/org.freedesktop.login1.policy.in.h:30 +#: src/login/org.freedesktop.login1.policy:181 msgid "" -"Authentication is required to power off the system while an application " -"is inhibiting this." +"Authentication is required to power off the system while an application is " +"inhibiting this." msgstr "" "Potrebna je ovjera za isključivanje sustava kada je aplikacija zatražila " -"zaustavljanje isključivanja." +"spriječavanje isključivanja." -#: ../src/login/org.freedesktop.login1.policy.in.h:31 +#: src/login/org.freedesktop.login1.policy:191 msgid "Reboot the system" msgstr "Ponovno pokreni sustav" -#: ../src/login/org.freedesktop.login1.policy.in.h:32 +#: src/login/org.freedesktop.login1.policy:192 msgid "Authentication is required to reboot the system." msgstr "Potrebna je ovjera za ponovno pokretanje sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:33 +#: src/login/org.freedesktop.login1.policy:202 msgid "Reboot the system while other users are logged in" msgstr "Ponovno pokreni sustav kada su ostali korisnici prijavljeni" -#: ../src/login/org.freedesktop.login1.policy.in.h:34 +#: src/login/org.freedesktop.login1.policy:203 msgid "" -"Authentication is required to reboot the system while other users are " -"logged in." +"Authentication is required to reboot the system while other users are logged " +"in." msgstr "" "Potrebna je ovjera za ponovno pokretanje sustava kada su ostali korisnici " "prijavljeni." -#: ../src/login/org.freedesktop.login1.policy.in.h:35 +#: src/login/org.freedesktop.login1.policy:213 msgid "Reboot the system while an application is inhibiting this" msgstr "" -"Ponovno pokreni sustav kada je aplikacija zatražila zaustavljanje ponovnog " +"Ponovno pokreni sustav kada je aplikacija zatražila spriječavanje ponovnog " "pokretanja" -#: ../src/login/org.freedesktop.login1.policy.in.h:36 +#: src/login/org.freedesktop.login1.policy:214 msgid "" -"Authentication is required to reboot the system while an application " -"is inhibiting this." +"Authentication is required to reboot the system while an application is " +"inhibiting this." msgstr "" "Potrebna je ovjera za ponovno pokretanje sustava kada je aplikacija " -"zatražila zaustavljanje ponovnog pokretanja." +"zatražila spriječavanje ponovnog pokretanja." -#: ../src/login/org.freedesktop.login1.policy.in.h:37 +#: src/login/org.freedesktop.login1.policy:224 +msgid "Halt the system" +msgstr "Zaustavi sustav" + +#: src/login/org.freedesktop.login1.policy:225 +msgid "Authentication is required to halt the system." +msgstr "Potrebna je ovjera za zaustavljanje sustava." + +#: src/login/org.freedesktop.login1.policy:235 +msgid "Halt the system while other users are logged in" +msgstr "Zaustavi sustav kada su ostali korisnici prijavljeni" + +#: src/login/org.freedesktop.login1.policy:236 +msgid "" +"Authentication is required to halt the system while other users are logged " +"in." +msgstr "" +"Potrebna je ovjera za zaustavljanje sustava kada su drugi korisnici " +"prijavljeni." + +#: src/login/org.freedesktop.login1.policy:246 +msgid "Halt the system while an application is inhibiting this" +msgstr "" +"Zaustavi sustav kada je aplikacija zatražila spriječavanje zaustavljanja" + +#: src/login/org.freedesktop.login1.policy:247 +msgid "" +"Authentication is required to halt the system while an application is " +"inhibiting this." +msgstr "" +"Potrebna je ovjera za zaustavljanje sustava kada je aplikacija zatražila " +"spriječavanje hibernacije." + +#: src/login/org.freedesktop.login1.policy:257 msgid "Suspend the system" msgstr "Suspendiraj sustav" -#: ../src/login/org.freedesktop.login1.policy.in.h:38 +#: src/login/org.freedesktop.login1.policy:258 msgid "Authentication is required to suspend the system." msgstr "Potrebna je ovjera za suspendiranje sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:39 +#: src/login/org.freedesktop.login1.policy:267 msgid "Suspend the system while other users are logged in" msgstr "Suspendiraj sustav kada su drugi korisnici prijavljeni" -#: ../src/login/org.freedesktop.login1.policy.in.h:40 +#: src/login/org.freedesktop.login1.policy:268 msgid "" "Authentication is required to suspend the system while other users are " "logged in." @@ -347,32 +450,32 @@ msgstr "" "Potrebna je ovjera za suspendiranje sustava kada su drugi korisnici " "prijavljeni." -#: ../src/login/org.freedesktop.login1.policy.in.h:41 +#: src/login/org.freedesktop.login1.policy:278 msgid "Suspend the system while an application is inhibiting this" msgstr "" -"Suspendiraj sustav kada je aplikacija zatražila zaustavljanje suspendiranja" +"Suspendiraj sustav kada je aplikacija zatražila spriječavanje suspendiranja" -#: ../src/login/org.freedesktop.login1.policy.in.h:42 +#: src/login/org.freedesktop.login1.policy:279 msgid "" -"Authentication is required to suspend the system while an application " -"is inhibiting this." +"Authentication is required to suspend the system while an application is " +"inhibiting this." msgstr "" "Potrebna je ovjera za suspendiranje sustava kada je aplikacija zatražila " -"zaustavljanje suspendiranja." +"spriječavanje suspendiranja." -#: ../src/login/org.freedesktop.login1.policy.in.h:43 +#: src/login/org.freedesktop.login1.policy:289 msgid "Hibernate the system" msgstr "Hiberniraj sustav" -#: ../src/login/org.freedesktop.login1.policy.in.h:44 +#: src/login/org.freedesktop.login1.policy:290 msgid "Authentication is required to hibernate the system." msgstr "Potrebna je ovjera za hibernaciju sustava." -#: ../src/login/org.freedesktop.login1.policy.in.h:45 +#: src/login/org.freedesktop.login1.policy:299 msgid "Hibernate the system while other users are logged in" -msgstr "Hiberniraj sustav kada su ostali korisnici prijavljeni." +msgstr "Hiberniraj sustav kada su ostali korisnici prijavljeni" -#: ../src/login/org.freedesktop.login1.policy.in.h:46 +#: src/login/org.freedesktop.login1.policy:300 msgid "" "Authentication is required to hibernate the system while other users are " "logged in." @@ -380,122 +483,161 @@ msgstr "" "Potrebna je ovjera za hibernaciju sustava kada su drugi korisnici " "prijavljeni." -#: ../src/login/org.freedesktop.login1.policy.in.h:47 +#: src/login/org.freedesktop.login1.policy:310 msgid "Hibernate the system while an application is inhibiting this" msgstr "" -"Hiberniraj sustav kada je aplikacija zatražila zaustavljanje hibernacije" +"Hiberniraj sustav kada je aplikacija zatražila spriječavanje hibernacije" -#: ../src/login/org.freedesktop.login1.policy.in.h:48 +#: src/login/org.freedesktop.login1.policy:311 msgid "" -"Authentication is required to hibernate the system while an application " -"is inhibiting this." +"Authentication is required to hibernate the system while an application is " +"inhibiting this." msgstr "" "Potrebna je ovjera za hibernaciju sustava kada je aplikacija zatražila " -"zaustavljanje hibernacije." +"spriječavanje hibernacije." -#: ../src/login/org.freedesktop.login1.policy.in.h:49 +#: src/login/org.freedesktop.login1.policy:321 msgid "Manage active sessions, users and seats" msgstr "" "Upravljanje aktivnim sesijama, korisnicima i skupovima sesija i hardvera" -#: ../src/login/org.freedesktop.login1.policy.in.h:50 -msgid "" -"Authentication is required to manage active sessions, users and seats." +#: src/login/org.freedesktop.login1.policy:322 +msgid "Authentication is required to manage active sessions, users and seats." msgstr "" "Potrebna je ovjera za upravljanje aktivnim sesijama, korisnicima i skupovima " "sesija i hardvera." -#: ../src/login/org.freedesktop.login1.policy.in.h:51 +#: src/login/org.freedesktop.login1.policy:331 msgid "Lock or unlock active sessions" msgstr "Zaključavanje ili otključavanje aktivne sesije" -#: ../src/login/org.freedesktop.login1.policy.in.h:52 +#: src/login/org.freedesktop.login1.policy:332 msgid "Authentication is required to lock or unlock active sessions." msgstr "Potrebna je ovjera za zaključavanje ili otključavanje aktivne sesije." -#: ../src/login/org.freedesktop.login1.policy.in.h:53 -msgid "Allow indication to the firmware to boot to setup interface" -msgstr "Dopusti najavu frimveru za pokretanje sučelja postavljanja" +#: src/login/org.freedesktop.login1.policy:341 +msgid "Set the reboot \"reason\" in the kernel" +msgstr "Postavi \"reason\" ponovnog pokretanja u kernel" -#: ../src/login/org.freedesktop.login1.policy.in.h:54 +#: src/login/org.freedesktop.login1.policy:342 +msgid "Authentication is required to set the reboot \"reason\" in the kernel." +msgstr "" +"Potrebna je ovjera za postaviti \"reason\" ponovnog pokretanja u kernelu." + +#: src/login/org.freedesktop.login1.policy:352 +msgid "Indicate to the firmware to boot to setup interface" +msgstr "Najavi firmveru da pokrene sučelje postavljanja" + +#: src/login/org.freedesktop.login1.policy:353 msgid "" "Authentication is required to indicate to the firmware to boot to setup " "interface." -msgstr "Potrebna je ovjera najave frimvera za pokretanje sučelja postavljanja." +msgstr "Potrebna je ovjera za najavu firmveru da pokrene sučelje postavljanja." -#: ../src/login/org.freedesktop.login1.policy.in.h:55 +#: src/login/org.freedesktop.login1.policy:363 +msgid "Indicate to the boot loader to boot to the boot loader menu" +msgstr "Najavi učitaču pokretanja da pokrene izbornik učitača pokretanja" + +#: src/login/org.freedesktop.login1.policy:364 +msgid "" +"Authentication is required to indicate to the boot loader to boot to the " +"boot loader menu." +msgstr "" +"Potrebna je ovjera za najavu učitaču pokretanja da pokrene izbornik učitača " +"pokretanja." + +#: src/login/org.freedesktop.login1.policy:374 +msgid "Indicate to the boot loader to boot a specific entry" +msgstr "Najavi učitaču pokretanja da pokrene određeni unos" + +#: src/login/org.freedesktop.login1.policy:375 +msgid "" +"Authentication is required to indicate to the boot loader to boot into a " +"specific boot loader entry." +msgstr "" +"Potrebna je ovjera za najavu učitaču pokretanja da pokrene određeni unos." + +#: src/login/org.freedesktop.login1.policy:385 msgid "Set a wall message" msgstr "Postavljanje zaslonske pruke" -#: ../src/login/org.freedesktop.login1.policy.in.h:56 +#: src/login/org.freedesktop.login1.policy:386 msgid "Authentication is required to set a wall message" msgstr "Potrebna je ovjera za postavljanje zaslonske pruke." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:1 +#: src/login/org.freedesktop.login1.policy:395 +msgid "Change Session" +msgstr "Promijeni sesiju" + +#: src/login/org.freedesktop.login1.policy:396 +msgid "Authentication is required to change the virtual terminal." +msgstr "Potrebna je ovjera za promjenu virtualnog terminala." + +#: src/machine/org.freedesktop.machine1.policy:22 msgid "Log into a local container" msgstr "Prijavi se u lokalni spremnik" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:2 +#: src/machine/org.freedesktop.machine1.policy:23 msgid "Authentication is required to log into a local container." msgstr "Potrebna je ovjera za prijavu u lokalni spremnik." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:3 +#: src/machine/org.freedesktop.machine1.policy:32 msgid "Log into the local host" msgstr "Prijava na lokalno računalo" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:4 +#: src/machine/org.freedesktop.machine1.policy:33 msgid "Authentication is required to log into the local host." msgstr "Potrebna je ovjera za prijavu na lokalno račuanlo." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:5 +#: src/machine/org.freedesktop.machine1.policy:42 msgid "Acquire a shell in a local container" msgstr "Pokretanje ljuske u lokalnom spremniku" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:6 +#: src/machine/org.freedesktop.machine1.policy:43 msgid "Authentication is required to acquire a shell in a local container." msgstr "Potrebna je ovjera za pokretanje ljuske u lokalnom spremniku." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:7 +#: src/machine/org.freedesktop.machine1.policy:53 msgid "Acquire a shell on the local host" msgstr "Pokretanje ljuske na lokalnom računalu" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:8 +#: src/machine/org.freedesktop.machine1.policy:54 msgid "Authentication is required to acquire a shell on the local host." msgstr "Potrebna je ovjera za pokretanje ljuske na lokalnom računalu." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:9 +#: src/machine/org.freedesktop.machine1.policy:64 msgid "Acquire a pseudo TTY in a local container" msgstr "Pokretanje pseudo TTY na lokalnom spremniku" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:10 +#: src/machine/org.freedesktop.machine1.policy:65 msgid "" "Authentication is required to acquire a pseudo TTY in a local container." msgstr "Potrebna je ovjera za pokretanje pseudo TTY na lokalnom spremniku." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:11 +#: src/machine/org.freedesktop.machine1.policy:74 msgid "Acquire a pseudo TTY on the local host" msgstr "Pokretanje pseudo TTY na lokalnom računalu" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:12 +#: src/machine/org.freedesktop.machine1.policy:75 msgid "Authentication is required to acquire a pseudo TTY on the local host." msgstr "Potrebna je ovjera za pokretanje pseudo TTY na lokalnom računalu." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:13 +#: src/machine/org.freedesktop.machine1.policy:84 msgid "Manage local virtual machines and containers" msgstr "Upravljanje lokalnim vurtualnim strojevima i spremnicima" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:14 +#: src/machine/org.freedesktop.machine1.policy:85 msgid "" "Authentication is required to manage local virtual machines and containers." msgstr "" "Potrebna je ovjera za upravljanje lokalnim vurtualnim strojevima i " "spremnicima." -#: ../src/machine/org.freedesktop.machine1.policy.in.h:15 +#: src/machine/org.freedesktop.machine1.policy:95 msgid "Manage local virtual machine and container images" msgstr "Upravljanje lokalnim vurtualnim strojevima i spremnicima slika" -#: ../src/machine/org.freedesktop.machine1.policy.in.h:16 +#: src/machine/org.freedesktop.machine1.policy:96 msgid "" "Authentication is required to manage local virtual machine and container " "images." @@ -503,38 +645,227 @@ msgstr "" "Potrebna je ovjera za upravljanje lokalnim vurtualnim strojevima i " "spremnicima slika." -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1 +#: src/network/org.freedesktop.network1.policy:22 +msgid "Set NTP servers" +msgstr "Postavi NTP poslužitelje" + +#: src/network/org.freedesktop.network1.policy:23 +msgid "Authentication is required to set NTP servers." +msgstr "Potrebna je ovjera za postavljanje NTP poslužitelja." + +#: src/network/org.freedesktop.network1.policy:33 +#: src/resolve/org.freedesktop.resolve1.policy:44 +msgid "Set DNS servers" +msgstr "Postavi DNS poslužitelje" + +#: src/network/org.freedesktop.network1.policy:34 +#: src/resolve/org.freedesktop.resolve1.policy:45 +msgid "Authentication is required to set DNS servers." +msgstr "Potrebna je ovjera za postavljanje DNS poslužitelja." + +#: src/network/org.freedesktop.network1.policy:44 +#: src/resolve/org.freedesktop.resolve1.policy:55 +msgid "Set domains" +msgstr "Postavi domene" + +#: src/network/org.freedesktop.network1.policy:45 +#: src/resolve/org.freedesktop.resolve1.policy:56 +msgid "Authentication is required to set domains." +msgstr "Potrebna je ovjera za postavljanje domena." + +#: src/network/org.freedesktop.network1.policy:55 +#: src/resolve/org.freedesktop.resolve1.policy:66 +msgid "Set default route" +msgstr "Postavi uobičajenu rutu" + +#: src/network/org.freedesktop.network1.policy:56 +#: src/resolve/org.freedesktop.resolve1.policy:67 +msgid "Authentication is required to set default route." +msgstr "Potrebna je ovjera za postavljanje uobičajene rute." + +#: src/network/org.freedesktop.network1.policy:66 +#: src/resolve/org.freedesktop.resolve1.policy:77 +msgid "Enable/disable LLMNR" +msgstr "Omogući/Onemogući LLMNR" + +#: src/network/org.freedesktop.network1.policy:67 +#: src/resolve/org.freedesktop.resolve1.policy:78 +msgid "Authentication is required to enable or disable LLMNR." +msgstr "Potrebna je ovjera za LLMNR omogućavanje ili onemogućavanje." + +#: src/network/org.freedesktop.network1.policy:77 +#: src/resolve/org.freedesktop.resolve1.policy:88 +msgid "Enable/disable multicast DNS" +msgstr "Omogući/Onemogući glatko osvježavanje" + +#: src/network/org.freedesktop.network1.policy:78 +#: src/resolve/org.freedesktop.resolve1.policy:89 +msgid "Authentication is required to enable or disable multicast DNS." +msgstr "" +"Potrebna je ovjera za omogućavanje ili onemogućavanje DNS grupnog emitiranja." + +#: src/network/org.freedesktop.network1.policy:88 +#: src/resolve/org.freedesktop.resolve1.policy:99 +msgid "Enable/disable DNS over TLS" +msgstr "Omogući/Onemogući DNS putem TLS-a" + +#: src/network/org.freedesktop.network1.policy:89 +#: src/resolve/org.freedesktop.resolve1.policy:100 +msgid "Authentication is required to enable or disable DNS over TLS." +msgstr "Potrebna je ovjera za omogućavanje/onemogućavanje DNS-a putem TLS-a." + +#: src/network/org.freedesktop.network1.policy:99 +#: src/resolve/org.freedesktop.resolve1.policy:110 +msgid "Enable/disable DNSSEC" +msgstr "Omogući/Onemogući DNSSEC" + +#: src/network/org.freedesktop.network1.policy:100 +#: src/resolve/org.freedesktop.resolve1.policy:111 +msgid "Authentication is required to enable or disable DNSSEC." +msgstr "Potrebna je ovjera za DNSSEC omogućavanje ili onemogućavanje." + +#: src/network/org.freedesktop.network1.policy:110 +#: src/resolve/org.freedesktop.resolve1.policy:121 +msgid "Set DNSSEC Negative Trust Anchors" +msgstr "Postavi DNSSEC negativna pouzdana sidrišta" + +#: src/network/org.freedesktop.network1.policy:111 +#: src/resolve/org.freedesktop.resolve1.policy:122 +msgid "Authentication is required to set DNSSEC Negative Trust Anchors." +msgstr "" +"Potrebna je ovjera za postavljanje DNSSEC negativnih pouzdanih sidrišta." + +#: src/network/org.freedesktop.network1.policy:121 +msgid "Revert NTP settings" +msgstr "Vrati izvorne NTP postavke" + +#: src/network/org.freedesktop.network1.policy:122 +msgid "Authentication is required to reset NTP settings." +msgstr "Potrebna je ovjera za vraćanje izvornih NTP postavki." + +#: src/network/org.freedesktop.network1.policy:132 +msgid "Revert DNS settings" +msgstr "Vrati izvorne DNS postavke" + +#: src/network/org.freedesktop.network1.policy:133 +msgid "Authentication is required to reset DNS settings." +msgstr "Potrebna je ovjera za vraćanje izvornih DNS postavki." + +#: src/network/org.freedesktop.network1.policy:143 +msgid "DHCP server sends force renew message" +msgstr "DHCP poslužitelj šalje poruku prisilne ponovne uspostave" + +#: src/network/org.freedesktop.network1.policy:144 +msgid "Authentication is required to send force renew message." +msgstr "Potrebna je ovjera za slanje poruke prisilne ponovne uspostave." + +#: src/network/org.freedesktop.network1.policy:154 +msgid "Renew dynamic addresses" +msgstr "Ponovno uspostavi promjenjive adrese" + +#: src/network/org.freedesktop.network1.policy:155 +msgid "Authentication is required to renew dynamic addresses." +msgstr "Potrebna je ovjera za ponovno uspostavljanje promjenjivih adresa." + +#: src/network/org.freedesktop.network1.policy:165 +msgid "Reload network settings" +msgstr "Ponovno učitaj postavke mreže" + +#: src/network/org.freedesktop.network1.policy:166 +msgid "Authentication is required to reload network settings." +msgstr "Potrebna je ovjera za ponovno učitavanje postavka mreže." + +#: src/network/org.freedesktop.network1.policy:176 +msgid "Reconfigure network interface" +msgstr "Ponovno podesi mrežno sučelje" + +#: src/network/org.freedesktop.network1.policy:177 +msgid "Authentication is required to reconfigure network interface." +msgstr "Potrebna je ovjera za ponovno podešavanje mrežnog sučelja." + +#: src/portable/org.freedesktop.portable1.policy:13 +msgid "Inspect a portable service image" +msgstr "Provjeri prijenosnu sliku usluge" + +#: src/portable/org.freedesktop.portable1.policy:14 +msgid "Authentication is required to inspect a portable service image." +msgstr "Potrebna je ovjera za provjeru prijenosne slike usluge." + +#: src/portable/org.freedesktop.portable1.policy:23 +msgid "Attach or detach a portable service image" +msgstr "Dodaj ili ukloni prijenosnu sliku usluge" + +#: src/portable/org.freedesktop.portable1.policy:24 +msgid "" +"Authentication is required to attach or detach a portable service image." +msgstr "" +"Potrebna je ovjera za dodavanje ili uklanjanje prijenosne slike usluge." + +#: src/portable/org.freedesktop.portable1.policy:34 +msgid "Delete or modify portable service image" +msgstr "Obriši ili promijeni prijenosnu sliku usluge" + +#: src/portable/org.freedesktop.portable1.policy:35 +msgid "" +"Authentication is required to delete or modify a portable service image." +msgstr "Potrebna je ovjera za brisnje ili promijenu prijenosne slike usluge." + +#: src/resolve/org.freedesktop.resolve1.policy:22 +msgid "Register a DNS-SD service" +msgstr "Registriraj DNS-SD uslugu" + +#: src/resolve/org.freedesktop.resolve1.policy:23 +msgid "Authentication is required to register a DNS-SD service" +msgstr "Potrebna je ovjera za registriranje DNS-SD usluge." + +#: src/resolve/org.freedesktop.resolve1.policy:33 +msgid "Unregister a DNS-SD service" +msgstr "Ukloni registriraciju DNS-SD usluge" + +#: src/resolve/org.freedesktop.resolve1.policy:34 +msgid "Authentication is required to unregister a DNS-SD service" +msgstr "Potrebna je ovjera za uklanjanje registracije DNS-SD usluge." + +#: src/resolve/org.freedesktop.resolve1.policy:132 +msgid "Revert name resolution settings" +msgstr "Vrati izvorni naziv postavki razlučivosti" + +#: src/resolve/org.freedesktop.resolve1.policy:133 +msgid "Authentication is required to reset name resolution settings." +msgstr "Potrebna je ovjera za vraćanje izvornog naziva postavki razlučivosti." + +#: src/timedate/org.freedesktop.timedate1.policy:22 msgid "Set system time" msgstr "Postavi vrijeme sustava" -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:2 +#: src/timedate/org.freedesktop.timedate1.policy:23 msgid "Authentication is required to set the system time." msgstr "Potrebna je ovjera za postavljanje vremena sustava." -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:3 +#: src/timedate/org.freedesktop.timedate1.policy:33 msgid "Set system timezone" msgstr "Postavi vremensku zonu sustava" -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:4 +#: src/timedate/org.freedesktop.timedate1.policy:34 msgid "Authentication is required to set the system timezone." msgstr "Potrebna je ovjera za postavljanje vremenske zone sustava." -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:5 +#: src/timedate/org.freedesktop.timedate1.policy:43 msgid "Set RTC to local timezone or UTC" msgstr "Postavi RTC u lokalnu vremensku zonu ili UTC" -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:6 +#: src/timedate/org.freedesktop.timedate1.policy:44 msgid "" "Authentication is required to control whether the RTC stores the local or " "UTC time." msgstr "" "Potrebna je ovjera za postavljanje RTC-a u lokalnu vremensku zonu ili UTC." -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:7 +#: src/timedate/org.freedesktop.timedate1.policy:53 msgid "Turn network time synchronization on or off" msgstr "Uključi ili isključi mrežno uklađivanje vremena" -#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:8 +#: src/timedate/org.freedesktop.timedate1.policy:54 msgid "" "Authentication is required to control whether network time synchronization " "shall be enabled." @@ -542,30 +873,40 @@ msgstr "" "Potrebna je ovjera za uključivanje ili isključivanje mrežnog usklađivanja " "vremena." -#: ../src/core/dbus-unit.c:428 +#: src/core/dbus-unit.c:356 msgid "Authentication is required to start '$(unit)'." msgstr "Potrebna je ovjera za pokretanje '$(unit)'." -#: ../src/core/dbus-unit.c:429 +#: src/core/dbus-unit.c:357 msgid "Authentication is required to stop '$(unit)'." msgstr "Potrebna je ovjera za zaustavljanje '$(unit)'." -#: ../src/core/dbus-unit.c:430 +#: src/core/dbus-unit.c:358 msgid "Authentication is required to reload '$(unit)'." msgstr "Potrebna je ovjera za ponovno učitavnje '$(unit)'." -#: ../src/core/dbus-unit.c:431 ../src/core/dbus-unit.c:432 +#: src/core/dbus-unit.c:359 src/core/dbus-unit.c:360 msgid "Authentication is required to restart '$(unit)'." msgstr "Potrebna je ovjera za ponovno pokretanje'$(unit)'." -#: ../src/core/dbus-unit.c:535 -msgid "Authentication is required to kill '$(unit)'." -msgstr "Potrebna je ovjera za ubijanje '$(unit)'." +#: src/core/dbus-unit.c:532 +msgid "" +"Authentication is required to send a UNIX signal to the processes of " +"'$(unit)'." +msgstr "Potrebna je ovjera za slanje UNIX signala u procese '$(unit)'." -#: ../src/core/dbus-unit.c:565 +#: src/core/dbus-unit.c:563 msgid "Authentication is required to reset the \"failed\" state of '$(unit)'." msgstr "Potrebna je ovjera za vraćanje \"neuspjelog\" stanja '$(unit)'." -#: ../src/core/dbus-unit.c:597 +#: src/core/dbus-unit.c:596 msgid "Authentication is required to set properties on '$(unit)'." msgstr "Potrebna je ovjera za postavljanje svojstava na '$(unit)'." + +#: src/core/dbus-unit.c:705 +msgid "" +"Authentication is required to delete files and directories associated with " +"'$(unit)'." +msgstr "" +"Potrebna je ovjera za za brisanje datoteka i direktorija pridruženih sa " +"'$(unit)'." diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index 217e7e1a9..3ea9041c1 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -1114,7 +1114,7 @@ static int analyze_blame(int argc, char *argv[], void *userdata) { continue; r = table_add_many(table, - TABLE_TIMESPAN_MSEC, &u->time, + TABLE_TIMESPAN_MSEC, u->time, TABLE_STRING, u->name); if (r < 0) return table_log_add_error(r); @@ -1862,9 +1862,9 @@ static int dump_timespan(int argc, char *argv[], void *userdata) { return table_log_add_error(r); r = table_add_many(table, - TABLE_UINT64, &output_usecs, + TABLE_UINT64, output_usecs, TABLE_STRING, "Human:", - TABLE_TIMESPAN, &output_usecs, + TABLE_TIMESPAN, output_usecs, TABLE_SET_COLOR, ansi_highlight()); if (r < 0) return table_log_add_error(r); @@ -1917,7 +1917,7 @@ static int test_timestamp_one(const char *p) { TABLE_STRING, "Original form:", TABLE_STRING, p, TABLE_STRING, "Normalized form:", - TABLE_TIMESTAMP, &usec, + TABLE_TIMESTAMP, usec, TABLE_SET_COLOR, ansi_highlight_blue()); if (r < 0) return table_log_add_error(r); @@ -1925,7 +1925,7 @@ static int test_timestamp_one(const char *p) { if (!in_utc_timezone()) { r = table_add_many(table, TABLE_STRING, "(in UTC):", - TABLE_TIMESTAMP_UTC, &usec); + TABLE_TIMESTAMP_UTC, usec); if (r < 0) return table_log_add_error(r); } @@ -1946,7 +1946,7 @@ static int test_timestamp_one(const char *p) { r = table_add_many(table, TABLE_STRING, "From now:", - TABLE_TIMESTAMP_RELATIVE, &usec); + TABLE_TIMESTAMP_RELATIVE, usec); if (r < 0) return table_log_add_error(r); @@ -2042,7 +2042,7 @@ static int test_calendar_one(usec_t n, const char *p) { if (i == 0) { r = table_add_many(table, TABLE_STRING, "Next elapse:", - TABLE_TIMESTAMP, &next, + TABLE_TIMESTAMP, next, TABLE_SET_COLOR, ansi_highlight_blue()); if (r < 0) return table_log_add_error(r); @@ -2059,7 +2059,7 @@ static int test_calendar_one(usec_t n, const char *p) { return table_log_add_error(r); r = table_add_many(table, - TABLE_TIMESTAMP, &next, + TABLE_TIMESTAMP, next, TABLE_SET_COLOR, ansi_highlight_blue()); if (r < 0) return table_log_add_error(r); @@ -2068,14 +2068,14 @@ static int test_calendar_one(usec_t n, const char *p) { if (!in_utc_timezone()) { r = table_add_many(table, TABLE_STRING, "(in UTC):", - TABLE_TIMESTAMP_UTC, &next); + TABLE_TIMESTAMP_UTC, next); if (r < 0) return table_log_add_error(r); } r = table_add_many(table, TABLE_STRING, "From now:", - TABLE_TIMESTAMP_RELATIVE, &next); + TABLE_TIMESTAMP_RELATIVE, next); if (r < 0) return table_log_add_error(r); diff --git a/src/basic/path-util.c b/src/basic/path-util.c index 49a211a52..ba13de01f 100644 --- a/src/basic/path-util.c +++ b/src/basic/path-util.c @@ -1125,3 +1125,19 @@ bool path_strv_contains(char **l, const char *path) { return false; } + +bool prefixed_path_strv_contains(char **l, const char *path) { + char **i, *j; + + STRV_FOREACH(i, l) { + j = *i; + if (*j == '-') + j++; + if (*j == '+') + j++; + if (path_equal(j, path)) + return true; + } + + return false; +} diff --git a/src/basic/path-util.h b/src/basic/path-util.h index f49a876f3..30031fca8 100644 --- a/src/basic/path-util.h +++ b/src/basic/path-util.h @@ -173,3 +173,4 @@ static inline const char *empty_to_root(const char *path) { } bool path_strv_contains(char **l, const char *path); +bool prefixed_path_strv_contains(char **l, const char *path); diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index c1fe04597..ed81cefcd 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -155,6 +155,8 @@ if have_gnu_efi elif efi_arch == 'ia32' compile_args += ['-mno-sse', '-mno-mmx'] + elif efi_arch == 'arm' + compile_args += ['-mgeneral-regs-only'] endif if get_option('werror') == true compile_args += ['-Werror'] diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 89fa97cb6..ddd3f4081 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -678,8 +678,8 @@ static int lookup_block_device(const char *p, dev_t *ret) { return log_warning_errno(r, "Failed to determine block device backing btrfs file system '%s': %m", p); } - /* If this is a LUKS device, try to get the originating block device */ - (void) block_get_originating(*ret, ret); + /* If this is a LUKS/DM device, recursively try to get the originating block device */ + while (block_get_originating(*ret, ret) > 0); /* If this is a partition, try to get the originating block device */ (void) block_get_whole_disk(*ret, ret); diff --git a/src/core/execute.c b/src/core/execute.c index 89dbf6fbd..587b77a3f 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -2247,7 +2247,7 @@ static int setup_exec_directory( if (type != EXEC_DIRECTORY_CONFIGURATION && readlink_and_make_absolute(p, &target) >= 0) { - _cleanup_free_ char *q = NULL; + _cleanup_free_ char *q = NULL, *q_resolved = NULL, *target_resolved = NULL; /* This already exists and is a symlink? Interesting. Maybe it's one created * by DynamicUser=1 (see above)? @@ -2256,13 +2256,22 @@ static int setup_exec_directory( * since they all support the private/ symlink logic at least in some * configurations, see above. */ + r = chase_symlinks(target, NULL, 0, &target_resolved, NULL); + if (r < 0) + goto fail; + q = path_join(params->prefix[type], "private", *rt); if (!q) { r = -ENOMEM; goto fail; } - if (path_equal(q, target)) { + /* /var/lib or friends may be symlinks. So, let's chase them also. */ + r = chase_symlinks(q, NULL, CHASE_NONEXISTENT, &q_resolved, NULL); + if (r < 0) + goto fail; + + if (path_equal(q_resolved, target_resolved)) { /* Hmm, apparently DynamicUser= was once turned on for this service, * but is no longer. Let's move the directory back up. */ diff --git a/src/core/namespace.c b/src/core/namespace.c index cda9d2ca1..a461a3cce 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -1192,7 +1192,7 @@ static bool root_read_only( if (protect_system == PROTECT_SYSTEM_STRICT) return true; - if (path_strv_contains(read_only_paths, "/")) + if (prefixed_path_strv_contains(read_only_paths, "/")) return true; return false; @@ -1217,9 +1217,9 @@ static bool home_read_only( if (protect_home != PROTECT_HOME_NO) return true; - if (path_strv_contains(read_only_paths, "/home") || - path_strv_contains(inaccessible_paths, "/home") || - path_strv_contains(empty_directories, "/home")) + if (prefixed_path_strv_contains(read_only_paths, "/home") || + prefixed_path_strv_contains(inaccessible_paths, "/home") || + prefixed_path_strv_contains(empty_directories, "/home")) return true; for (i = 0; i < n_temporary_filesystems; i++) diff --git a/src/core/service.c b/src/core/service.c index 17f27a4ab..9a26271f7 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3501,6 +3501,12 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { break; case SERVICE_STOP_POST: + + if (control_pid_good(s) <= 0) + service_enter_signal(s, SERVICE_FINAL_SIGTERM, f); + + break; + case SERVICE_FINAL_SIGTERM: case SERVICE_FINAL_SIGKILL: @@ -3650,6 +3656,10 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { break; case SERVICE_STOP_POST: + if (main_pid_good(s) <= 0) + service_enter_signal(s, SERVICE_FINAL_SIGTERM, f); + break; + case SERVICE_FINAL_SIGTERM: case SERVICE_FINAL_SIGKILL: if (main_pid_good(s) <= 0) diff --git a/src/home/pam_systemd_home.c b/src/home/pam_systemd_home.c index a2235bfb2..67aff9350 100644 --- a/src/home/pam_systemd_home.c +++ b/src/home/pam_systemd_home.c @@ -36,7 +36,7 @@ static int parse_argv( for (i = 0; i < argc; i++) { const char *v; - if ((v = startswith(argv[1], "suspend="))) { + if ((v = startswith(argv[i], "suspend="))) { int k; k = parse_boolean(v); diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 3fa98dfda..56a6a9c43 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -435,7 +435,7 @@ _public_ void sd_journal_flush_matches(sd_journal *j) { detach_location(j); } -_pure_ static int compare_with_location(JournalFile *f, Location *l) { +_pure_ static int compare_with_location(const JournalFile *f, const Location *l, const JournalFile *current_file) { int r; assert(f); @@ -448,7 +448,8 @@ _pure_ static int compare_with_location(JournalFile *f, Location *l) { l->realtime_set && f->current_realtime == l->realtime && l->xor_hash_set && - f->current_xor_hash == l->xor_hash) + f->current_xor_hash == l->xor_hash && + f != current_file) return 0; if (l->seqnum_set && @@ -787,7 +788,7 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc if (j->current_location.type == LOCATION_DISCRETE) { int k; - k = compare_with_location(f, &j->current_location); + k = compare_with_location(f, &j->current_location, j->current_file); found = direction == DIRECTION_DOWN ? k > 0 : k < 0; } else diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 6abcbfca9..0fc5501e6 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -469,7 +469,7 @@ int ask_password_tty( (void) loop_write(ttyfd, message, strlen(message), false); (void) loop_write(ttyfd, " ", 1, false); - if (!(flags & ASK_PASSWORD_SILENT)) { + if (!(flags & ASK_PASSWORD_SILENT) && !(flags & ASK_PASSWORD_ECHO)) { if (use_color) (void) loop_write(ttyfd, ANSI_GREY, STRLEN(ANSI_GREY), false); (void) loop_write(ttyfd, PRESS_TAB, strlen(PRESS_TAB), false); diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 1ac6549ba..1ef69fdf4 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -425,10 +425,11 @@ int dissect_image( m->encrypted = streq_ptr(fstype, "crypto_LUKS"); - r = loop_wait_for_partitions_to_appear(fd, d, 0, flags, &e); - if (r < 0) - return r; - + if (!streq(usage, "filesystem")) { + r = loop_wait_for_partitions_to_appear(fd, d, 0, flags, &e); + if (r < 0) + return r; + } *ret = TAKE_PTR(m); return 0; diff --git a/src/shared/format-table.c b/src/shared/format-table.c index 425013046..a4b412ecb 100644 --- a/src/shared/format-table.c +++ b/src/shared/format-table.c @@ -1010,6 +1010,24 @@ int table_set_empty_string(Table *t, const char *empty) { return free_and_strdup(&t->empty_string, empty); } +int table_set_display_all(Table *t) { + size_t allocated; + + assert(t); + + allocated = t->n_display_map; + + if (!GREEDY_REALLOC(t->display_map, allocated, MAX(t->n_columns, allocated))) + return -ENOMEM; + + for (size_t i = 0; i < t->n_columns; i++) + t->display_map[i] = i; + + t->n_display_map = t->n_columns; + + return 0; +} + int table_set_display(Table *t, size_t first_column, ...) { size_t allocated, column; va_list ap; @@ -1069,6 +1087,34 @@ int table_set_sort(Table *t, size_t first_column, ...) { return 0; } +int table_hide_column_from_display(Table *t, size_t column) { + size_t allocated, cur = 0; + int r; + + assert(t); + assert(column < t->n_columns); + + /* If the display map is empty, initialize it with all available columns */ + if (!t->display_map) { + r = table_set_display_all(t); + if (r < 0) + return r; + } + + allocated = t->n_display_map; + + for (size_t i = 0; i < allocated; i++) { + if (t->display_map[i] == column) + continue; + + t->display_map[cur++] = t->display_map[i]; + } + + t->n_display_map = cur; + + return 0; +} + static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t index_b) { assert(a); assert(b); diff --git a/src/shared/format-table.h b/src/shared/format-table.h index 870a29d38..62f1ed740 100644 --- a/src/shared/format-table.h +++ b/src/shared/format-table.h @@ -101,9 +101,11 @@ void table_set_header(Table *table, bool b); void table_set_width(Table *t, size_t width); void table_set_cell_height_max(Table *t, size_t height); int table_set_empty_string(Table *t, const char *empty); +int table_set_display_all(Table *t); int table_set_display(Table *t, size_t first_column, ...); int table_set_sort(Table *t, size_t first_column, ...); int table_set_reverse(Table *t, size_t column, bool b); +int table_hide_column_from_display(Table *t, size_t column); int table_print(Table *t, FILE *f); int table_format(Table *t, char **ret); diff --git a/src/shared/json-internal.h b/src/shared/json-internal.h index bf158bff0..fabff0c86 100644 --- a/src/shared/json-internal.h +++ b/src/shared/json-internal.h @@ -26,21 +26,34 @@ assert_cc(sizeof(JsonValue) == 16U); /* We use fake JsonVariant objects for some special values, in order to avoid memory allocations for them. Note that * effectively this means that there are multiple ways to encode the same objects: via these magic values or as * properly allocated JsonVariant. We convert between both on-the-fly as necessary. */ -#define JSON_VARIANT_MAGIC_TRUE ((JsonVariant*) 1) -#define JSON_VARIANT_MAGIC_FALSE ((JsonVariant*) 2) -#define JSON_VARIANT_MAGIC_NULL ((JsonVariant*) 3) -#define JSON_VARIANT_MAGIC_ZERO_INTEGER ((JsonVariant*) 4) -#define JSON_VARIANT_MAGIC_ZERO_UNSIGNED ((JsonVariant*) 5) -#define JSON_VARIANT_MAGIC_ZERO_REAL ((JsonVariant*) 6) -#define JSON_VARIANT_MAGIC_EMPTY_STRING ((JsonVariant*) 7) -#define JSON_VARIANT_MAGIC_EMPTY_ARRAY ((JsonVariant*) 8) -#define JSON_VARIANT_MAGIC_EMPTY_OBJECT ((JsonVariant*) 9) -#define _JSON_VARIANT_MAGIC_MAX ((JsonVariant*) 10) +enum +{ + _JSON_VARIANT_MAGIC_TRUE = 1, +#define JSON_VARIANT_MAGIC_TRUE ((JsonVariant*) _JSON_VARIANT_MAGIC_TRUE) + _JSON_VARIANT_MAGIC_FALSE, +#define JSON_VARIANT_MAGIC_FALSE ((JsonVariant*) _JSON_VARIANT_MAGIC_FALSE) + _JSON_VARIANT_MAGIC_NULL, +#define JSON_VARIANT_MAGIC_NULL ((JsonVariant*) _JSON_VARIANT_MAGIC_NULL) + _JSON_VARIANT_MAGIC_ZERO_INTEGER, +#define JSON_VARIANT_MAGIC_ZERO_INTEGER ((JsonVariant*) _JSON_VARIANT_MAGIC_ZERO_INTEGER) + _JSON_VARIANT_MAGIC_ZERO_UNSIGNED, +#define JSON_VARIANT_MAGIC_ZERO_UNSIGNED ((JsonVariant*) _JSON_VARIANT_MAGIC_ZERO_UNSIGNED) + _JSON_VARIANT_MAGIC_ZERO_REAL, +#define JSON_VARIANT_MAGIC_ZERO_REAL ((JsonVariant*) _JSON_VARIANT_MAGIC_ZERO_REAL) + _JSON_VARIANT_MAGIC_EMPTY_STRING, +#define JSON_VARIANT_MAGIC_EMPTY_STRING ((JsonVariant*) _JSON_VARIANT_MAGIC_EMPTY_STRING) + _JSON_VARIANT_MAGIC_EMPTY_ARRAY, +#define JSON_VARIANT_MAGIC_EMPTY_ARRAY ((JsonVariant*) _JSON_VARIANT_MAGIC_EMPTY_ARRAY) + _JSON_VARIANT_MAGIC_EMPTY_OBJECT, +#define JSON_VARIANT_MAGIC_EMPTY_OBJECT ((JsonVariant*) _JSON_VARIANT_MAGIC_EMPTY_OBJECT) + __JSON_VARIANT_MAGIC_MAX +#define _JSON_VARIANT_MAGIC_MAX ((JsonVariant*) __JSON_VARIANT_MAGIC_MAX) +}; /* This is only safe as long as we don't define more than 4K magic pointers, i.e. the page size of the simplest * architectures we support. That's because we rely on the fact that malloc() will never allocate from the first memory * page, as it is a faulting page for catching NULL pointer dereferences. */ -assert_cc((uintptr_t) _JSON_VARIANT_MAGIC_MAX < 4096U); +assert_cc((unsigned) __JSON_VARIANT_MAGIC_MAX < 4096U); enum { /* JSON tokens */ JSON_TOKEN_END, diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 146e2263f..07f060e95 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -400,6 +400,12 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) { return log_oom(); table_set_header(table, !arg_no_legend); + if (arg_no_legend) { + /* Hide the 'glyph' column when --no-legend is requested */ + r = table_hide_column_from_display(table, 0); + if (r < 0) + return log_error_errno(r, "Failed to hide column: %m"); + } if (arg_full) table_set_width(table, 0); @@ -461,12 +467,9 @@ static int output_units_list(const UnitInfo *unit_infos, unsigned c) { if (job_count == 0) { /* There's no data in the JOB column, so let's hide it */ - /* Also, convert all number constants to size_t so va_arg() - * in table_set_display() fetches a correct number of bytes from - * the stack */ - r = table_set_display(table, (size_t) 0, (size_t) 1, (size_t) 2, (size_t) 3, (size_t) 4, (size_t) 6, (size_t) -1); + r = table_hide_column_from_display(table, 5); if (r < 0) - return log_error_errno(r, "Failed to set columns to display: %m"); + return log_error_errno(r, "Failed to hide column: %m"); } r = table_print(table, NULL); @@ -1980,6 +1983,12 @@ static int output_machines_list(struct machine_info *machine_infos, unsigned n) return log_oom(); table_set_header(table, !arg_no_legend); + if (arg_no_legend) { + /* Hide the 'glyph' column when --no-legend is requested */ + r = table_hide_column_from_display(table, 0); + if (r < 0) + return log_error_errno(r, "Failed to hide column: %m"); + } if (arg_full) table_set_width(table, 0); diff --git a/src/test/test-execute.c b/src/test/test-execute.c index 92a0516df..4e0fd7d5b 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -561,6 +561,7 @@ static void test_exec_dynamicuser(Manager *m) { test(__func__, m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED); test(__func__, m, "exec-dynamicuser-statedir-migrate-step2.service", can_unshare ? 0 : EXIT_NAMESPACE, CLD_EXITED); + test(__func__, m, "exec-dynamicuser-statedir-migrate-step1.service", 0, CLD_EXITED); (void) rm_rf("/var/lib/test-dynamicuser-migrate", REMOVE_ROOT|REMOVE_PHYSICAL); (void) rm_rf("/var/lib/test-dynamicuser-migrate2", REMOVE_ROOT|REMOVE_PHYSICAL); diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index b9b350d1e..b990f68e9 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -921,7 +921,7 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp op = OP_ASSIGN; } - r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, NULL); + r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, attr); } else if (streq(key, "RUN")) { if (is_match || op == OP_REMOVE) return log_token_invalid_op(rules, key); diff --git a/test/TEST-47-ISSUE-14566/Makefile b/test/TEST-47-ISSUE-14566/Makefile new file mode 120000 index 000000000..e9f93b110 --- /dev/null +++ b/test/TEST-47-ISSUE-14566/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-47-ISSUE-14566/repro.sh b/test/TEST-47-ISSUE-14566/repro.sh new file mode 100755 index 000000000..521760225 --- /dev/null +++ b/test/TEST-47-ISSUE-14566/repro.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +sleep infinity & +echo $! > /leakedtestpid +wait $! diff --git a/test/TEST-47-ISSUE-14566/test.sh b/test/TEST-47-ISSUE-14566/test.sh new file mode 100755 index 000000000..35f862331 --- /dev/null +++ b/test/TEST-47-ISSUE-14566/test.sh @@ -0,0 +1,43 @@ +#!/bin/bash +set -e +TEST_DESCRIPTION="Test that KillMode=mixed does not leave left over proccesses with ExecStopPost=" +. $TEST_BASE_DIR/test-functions + +test_setup() { + create_empty_image_rootdir + + ( + LOG_LEVEL=5 + eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) + + setup_basic_environment + mask_supporting_services + + # setup the testsuite service + cat >$initdir/etc/systemd/system/testsuite.service < $initdir/etc/systemd/system/issue_14566_test.service << EOF +[Unit] +Description=Issue 14566 Repro + +[Service] +ExecStart=/repro.sh +ExecStopPost=/bin/true +KillMode=mixed +EOF + + cp testsuite.sh $initdir/ + cp repro.sh $initdir/ + + setup_testsuite + ) + setup_nspawn_root +} + +do_test "$@" diff --git a/test/TEST-47-ISSUE-14566/testsuite.sh b/test/TEST-47-ISSUE-14566/testsuite.sh new file mode 100755 index 000000000..a0ba32530 --- /dev/null +++ b/test/TEST-47-ISSUE-14566/testsuite.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -ex +set -o pipefail + +systemd-analyze log-level debug +systemd-analyze log-target console + +systemctl start issue_14566_test +sleep 1 +systemctl status issue_14566_test + +leaked_pid=$(cat /leakedtestpid) + +systemctl stop issue_14566_test + +# Leaked PID will still be around if we're buggy. +# I personally prefer to see 42. +ps -p "$leaked_pid" && exit 42 + +systemd-analyze log-level info + +echo OK > /testok + +exit 0 diff --git a/test/test-execute/exec-capabilityboundingset-invert.service b/test/test-execute/exec-capabilityboundingset-invert.service index 5f3742760..4486f6c25 100644 --- a/test/test-execute/exec-capabilityboundingset-invert.service +++ b/test/test-execute/exec-capabilityboundingset-invert.service @@ -2,7 +2,7 @@ Description=Test for CapabilityBoundingSet [Service] -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c '! capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep "^Bounding set .*cap_chown"' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c '! capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep "^Bounding set .*cap_chown"' Type=oneshot CapabilityBoundingSet=~CAP_CHOWN diff --git a/test/test-execute/exec-privatedevices-no-capability-mknod.service b/test/test-execute/exec-privatedevices-no-capability-mknod.service index 4d61d9ffa..8f135be0b 100644 --- a/test/test-execute/exec-privatedevices-no-capability-mknod.service +++ b/test/test-execute/exec-privatedevices-no-capability-mknod.service @@ -3,6 +3,6 @@ Description=Test CAP_MKNOD capability for PrivateDevices=no [Service] PrivateDevices=no -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c 'capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_mknod' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c 'capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_mknod' Type=oneshot diff --git a/test/test-execute/exec-privatedevices-no-capability-sys-rawio.service b/test/test-execute/exec-privatedevices-no-capability-sys-rawio.service index f7f7a1673..30ce54925 100644 --- a/test/test-execute/exec-privatedevices-no-capability-sys-rawio.service +++ b/test/test-execute/exec-privatedevices-no-capability-sys-rawio.service @@ -3,6 +3,6 @@ Description=Test CAP_SYS_RAWIO capability for PrivateDevices=no [Service] PrivateDevices=no -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c 'capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_sys_rawio' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c 'capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_sys_rawio' Type=oneshot diff --git a/test/test-execute/exec-privatedevices-yes-capability-mknod.service b/test/test-execute/exec-privatedevices-yes-capability-mknod.service index 5bcace084..b98cfb5c7 100644 --- a/test/test-execute/exec-privatedevices-yes-capability-mknod.service +++ b/test/test-execute/exec-privatedevices-yes-capability-mknod.service @@ -3,6 +3,6 @@ Description=Test CAP_MKNOD capability for PrivateDevices=yes [Service] PrivateDevices=yes -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c '! capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_mknod' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c '! capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_mknod' Type=oneshot diff --git a/test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service b/test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service index a246f950c..5b0c0700f 100644 --- a/test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service +++ b/test/test-execute/exec-privatedevices-yes-capability-sys-rawio.service @@ -3,6 +3,6 @@ Description=Test CAP_SYS_RAWIO capability for PrivateDevices=yes [Service] PrivateDevices=yes -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c '! capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_sys_rawio' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c '! capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_sys_rawio' Type=oneshot diff --git a/test/test-execute/exec-protectkernellogs-no-capabilities.service b/test/test-execute/exec-protectkernellogs-no-capabilities.service index 47d88534a..36aae7caf 100644 --- a/test/test-execute/exec-protectkernellogs-no-capabilities.service +++ b/test/test-execute/exec-protectkernellogs-no-capabilities.service @@ -3,6 +3,6 @@ Description=Test CAP_SYSLOG for ProtectKernelLogs=no [Service] ProtectKernelLogs=no -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c 'capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_syslog' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c 'capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_syslog' Type=oneshot diff --git a/test/test-execute/exec-protectkernellogs-yes-capabilities.service b/test/test-execute/exec-protectkernellogs-yes-capabilities.service index 11350f288..4a5f1a08e 100644 --- a/test/test-execute/exec-protectkernellogs-yes-capabilities.service +++ b/test/test-execute/exec-protectkernellogs-yes-capabilities.service @@ -3,6 +3,6 @@ Description=Test CAP_SYSLOG for ProtectKernelLogs=yes [Service] ProtectKernelLogs=yes -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c '! capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_syslog' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c '! capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_syslog' Type=oneshot diff --git a/test/test-execute/exec-protectkernelmodules-no-capabilities.service b/test/test-execute/exec-protectkernelmodules-no-capabilities.service index 8d7e2b52d..1b7365630 100644 --- a/test/test-execute/exec-protectkernelmodules-no-capabilities.service +++ b/test/test-execute/exec-protectkernelmodules-no-capabilities.service @@ -3,6 +3,6 @@ Description=Test CAP_SYS_MODULE ProtectKernelModules=no [Service] ProtectKernelModules=no -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c 'capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_sys_module' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c 'capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_sys_module' Type=oneshot diff --git a/test/test-execute/exec-protectkernelmodules-yes-capabilities.service b/test/test-execute/exec-protectkernelmodules-yes-capabilities.service index fe2ae208d..e43e72733 100644 --- a/test/test-execute/exec-protectkernelmodules-yes-capabilities.service +++ b/test/test-execute/exec-protectkernelmodules-yes-capabilities.service @@ -3,6 +3,6 @@ Description=Test CAP_SYS_MODULE for ProtectKernelModules=yes [Service] ProtectKernelModules=yes -# sed: remove dropped capabilities (cap_xxx-[epi]) from the output -ExecStart=/bin/sh -x -c '! capsh --print | sed -r "s/[^ ]+?\-[epi]+//g" | grep cap_sys_module' +# sed: remove dropped (cap_xxx-[epi]) and IAB capabilities from the output +ExecStart=/bin/sh -x -c '! capsh --print | sed -re "s/[^ ]+?\-[epi]+//g" -e '/IAB/d' | grep cap_sys_module' Type=oneshot diff --git a/units/systemd-homed.service.in b/units/systemd-homed.service.in index 512804cf0..7cf98e6fa 100644 --- a/units/systemd-homed.service.in +++ b/units/systemd-homed.service.in @@ -8,7 +8,7 @@ # (at your option) any later version. [Unit] -Description=Home Manager +Description=Home Area Manager Documentation=man:systemd-homed.service(8) RequiresMountsFor=/home