diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index 87bd3fd92a..59b6919a75 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -450,16 +450,16 @@
BindPaths=
BindReadOnlyPaths=
- Configures unit-specific bind mounts. A bind mount makes a particular file or directory
- available at an additional place in the unit's view of the file system. Any bind mounts created with this
- option are specific to the unit, and are not visible in the host's mount table. This option expects a
- whitespace separated list of bind mount definitions. Each definition consists of a colon-separated triple of
- source path, destination path and option string, where the latter two are optional. If only a source path is
- specified the source and destination is taken to be the same. The option string may be either
- rbind or norbind for configuring a recursive or non-recursive bind
- mount. If the destination path is omitted, the option string must be omitted too.
- Each bind mount definition may be prefixed with -, in which case it will be ignored
- when its source path does not exist.
+ Configures unit-specific bind mounts. A bind mount makes a particular file or
+ directory available at an additional place in the unit's view of the file system. Any bind mounts
+ created with this option are specific to the unit, and are not visible in the host's mount
+ table. This option expects a whitespace separated list of bind mount definitions. Each definition
+ consists of a colon-separated triple of source path, destination path and option string, where the
+ latter two are optional. If only a source path is specified the source and destination is taken to be
+ the same. The option string may be either rbind or norbind for
+ configuring a recursive or non-recursive bind mount. If the destination path is omitted, the option
+ string must be omitted too. Each bind mount definition may be prefixed with -, in
+ which case it will be ignored when its source path does not exist or is not accessible.
BindPaths= creates regular writable bind mounts (unless the source file system mount
is already marked read-only), while BindReadOnlyPaths= creates read-only bind mounts. These
diff --git a/src/core/namespace.c b/src/core/namespace.c
index 680ee26285..e348d26c43 100644
--- a/src/core/namespace.c
+++ b/src/core/namespace.c
@@ -2016,12 +2016,20 @@ static int apply_one_mount(
}
r = chase(mount_entry_source(m), NULL, CHASE_TRAIL_SLASH|CHASE_TRIGGER_AUTOFS, &chased, NULL);
- if (r == -ENOENT && m->ignore) {
- log_debug_errno(r, "Path %s does not exist, ignoring.", mount_entry_source(m));
- return 0;
- }
- if (r < 0)
+ if (r < 0) {
+ if (m->ignore) {
+ if (r == -ENOENT) {
+ log_debug_errno(r, "Path '%s' does not exist, ignoring.", mount_entry_source(m));
+ return 0;
+ }
+ if (ERRNO_IS_NEG_PRIVILEGE(r)) {
+ log_debug_errno(r, "Path '%s' is not accessible, ignoring: %m", mount_entry_source(m));
+ return 0;
+ }
+ }
+
return log_debug_errno(r, "Failed to follow symlinks on %s: %m", mount_entry_source(m));
+ }
log_debug("Followed source symlinks %s %s %s.",
mount_entry_source(m), glyph(GLYPH_ARROW_RIGHT), chased);