core: add id-mapped mount support for Exec directories
This commit is contained in:
@@ -2089,7 +2089,7 @@ static int mount_partition(
|
||||
(void) fs_grow(node, -EBADF, p);
|
||||
|
||||
if (userns_fd >= 0) {
|
||||
r = remount_idmap_fd(STRV_MAKE(p), userns_fd);
|
||||
r = remount_idmap_fd(STRV_MAKE(p), userns_fd, /* extra_mount_attr_set= */ 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -1386,7 +1386,8 @@ int make_userns(uid_t uid_shift, uid_t uid_range, uid_t source_owner, uid_t dest
|
||||
|
||||
int remount_idmap_fd(
|
||||
char **paths,
|
||||
int userns_fd) {
|
||||
int userns_fd,
|
||||
uint64_t extra_mount_attr_set) {
|
||||
|
||||
int r;
|
||||
|
||||
@@ -1423,7 +1424,7 @@ int remount_idmap_fd(
|
||||
/* Set the user namespace mapping attribute on the cloned mount point */
|
||||
if (mount_setattr(mntfd, "", AT_EMPTY_PATH,
|
||||
&(struct mount_attr) {
|
||||
.attr_set = MOUNT_ATTR_IDMAP,
|
||||
.attr_set = MOUNT_ATTR_IDMAP | extra_mount_attr_set,
|
||||
.userns_fd = userns_fd,
|
||||
}, sizeof(struct mount_attr)) < 0)
|
||||
return log_debug_errno(errno, "Failed to change bind mount attributes for clone of '%s': %m", paths[i]);
|
||||
@@ -1460,7 +1461,7 @@ int remount_idmap(
|
||||
if (userns_fd < 0)
|
||||
return userns_fd;
|
||||
|
||||
return remount_idmap_fd(p, userns_fd);
|
||||
return remount_idmap_fd(p, userns_fd, /* extra_mount_attr_set= */ 0);
|
||||
}
|
||||
|
||||
static void sub_mount_clear(SubMount *s) {
|
||||
|
||||
@@ -163,7 +163,7 @@ typedef enum RemountIdmapping {
|
||||
} RemountIdmapping;
|
||||
|
||||
int make_userns(uid_t uid_shift, uid_t uid_range, uid_t host_owner, uid_t dest_owner, RemountIdmapping idmapping);
|
||||
int remount_idmap_fd(char **p, int userns_fd);
|
||||
int remount_idmap_fd(char **p, int userns_fd, uint64_t extra_mount_attr_set);
|
||||
int remount_idmap(char **p, uid_t uid_shift, uid_t uid_range, uid_t host_owner, uid_t dest_owner, RemountIdmapping idmapping);
|
||||
|
||||
int bind_mount_submounts(
|
||||
|
||||
Reference in New Issue
Block a user