summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-01-29 14:23:31 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2018-02-02 09:09:24 +0100
commitd1e4b8fd963ba43190ec824a803819612ff80441 (patch)
tree4abb94fcbd6f6b326ebf8e524e9812eaa83bef32
parent75aaade16b00ff519fbaedb4cc773b654c11a34a (diff)
downloadsystemd-d1e4b8fd963ba43190ec824a803819612ff80441.tar.gz
sysusers: emit a bit more info at debug level when locking fails
This is the first error message when running unprivileged, and the message is unspecific, so let's at least add some logging at debug level to make this less confusing.
-rw-r--r--src/basic/user-util.c8
-rw-r--r--src/basic/user-util.h2
-rw-r--r--src/sysusers/sysusers.c2
3 files changed, 7 insertions, 5 deletions
diff --git a/src/basic/user-util.c b/src/basic/user-util.c
index 17a9b5a8f1..011b29ad02 100644
--- a/src/basic/user-util.c
+++ b/src/basic/user-util.c
@@ -553,18 +553,18 @@ int take_etc_passwd_lock(const char *root) {
* awfully racy, and thus we just won't do them. */
if (root)
- path = prefix_roota(root, "/etc/.pwd.lock");
+ path = prefix_roota(root, ETC_PASSWD_LOCK_PATH);
else
- path = "/etc/.pwd.lock";
+ path = ETC_PASSWD_LOCK_PATH;
fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0600);
if (fd < 0)
- return -errno;
+ return log_debug_errno(errno, "Cannot open %s: %m", path);
r = fcntl(fd, F_SETLKW, &flock);
if (r < 0) {
safe_close(fd);
- return -errno;
+ return log_debug_errno(errno, "Locking %s failed: %m", path);
}
return fd;
diff --git a/src/basic/user-util.h b/src/basic/user-util.h
index 5f0391f2b8..290d17a0c6 100644
--- a/src/basic/user-util.h
+++ b/src/basic/user-util.h
@@ -63,6 +63,8 @@ int take_etc_passwd_lock(const char *root);
#define UID_NOBODY ((uid_t) 65534U)
#define GID_NOBODY ((gid_t) 65534U)
+#define ETC_PASSWD_LOCK_PATH "/etc/.pwd.lock"
+
static inline bool uid_is_dynamic(uid_t uid) {
return DYNAMIC_UID_MIN <= uid && uid <= DYNAMIC_UID_MAX;
}
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index 510d5fa59e..288f6a1665 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -1841,7 +1841,7 @@ int main(int argc, char *argv[]) {
lock = take_etc_passwd_lock(arg_root);
if (lock < 0) {
- log_error_errno(lock, "Failed to take lock: %m");
+ log_error_errno(lock, "Failed to take /etc/passwd lock: %m");
goto finish;
}