shared/install: fix %u expansion when running under sudo

Test case:
[Install]
DefaultInstance=bond1
WantedBy= foobar-U-%U.device
WantedBy= foobar-u-%u.device

$ sudo systemctl --root=/ enable testing4@.service
(before)
Created symlink /etc/systemd/system/foobar-U-0.device.wants/testing4@bond1.service → /etc/systemd/system/testing4@.service.
Created symlink /etc/systemd/system/foobar-u-zbyszek.device.wants/testing4@bond1.service → /etc/systemd/system/testing4@.service.

(after)
Created symlink /etc/systemd/system/foobar-U-0.device.wants/testing4@bond1.service → /etc/systemd/system/testing4@.service.
Created symlink /etc/systemd/system/foobar-u-root.device.wants/testing4@bond1.service → /etc/systemd/system/testing4@.service.

It doesn't make much sense to use a different user for %U and %u.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2016-10-20 00:27:46 -04:00
parent cfd559c9a8
commit 6309e51ea3
1 changed files with 6 additions and 2 deletions

View File

@ -108,9 +108,13 @@ static int specifier_user_name(char specifier, void *data, void *userdata, char
/* If we are UID 0 (root), this will not result in NSS,
* otherwise it might. This is good, as we want to be able to
* run this in PID 1, where our user ID is 0, but where NSS
* lookups are not allowed. */
* lookups are not allowed.
t = getusername_malloc();
* We don't user getusername_malloc() here, because we don't want to look
* at $USER, to remain consistent with specifer_user_id() below.
*/
t = uid_to_name(getuid());
if (!t)
return -ENOMEM;