dissect-image: mount the ESP with fmask=0177 (#35871)
Avoid showing the files on the ESP (i.e. a FAT formatted volume) as executable by removing the execute permission from them. IMO this makes the colored output of `ls` more sensible since the file system will be mounted with `noexec` anyway. Add a `fstype_can_fmask_dmask` function that checks if a file system type can use the `fmask` and `dmask` mount options. This replaces `fstype_can_umask` since it was only used in `partition_pick_mount_options` which only cares about the file system support for fmask & dmask now. It somewhat reduces the coverage of the feature since there are more file systems that support umask as opposed to those supporting dmask & dmask, but it should not be much of an issue since fmask & dmask are supported by vfat, exfat and ntfs3.
This commit is contained in:
@@ -560,13 +560,13 @@ const char* fstype_norecovery_option(const char *fstype) {
|
||||
return mount_option_supported(fstype, "norecovery", NULL) > 0 ? "norecovery" : NULL;
|
||||
}
|
||||
|
||||
bool fstype_can_umask(const char *fstype) {
|
||||
bool fstype_can_fmask_dmask(const char *fstype) {
|
||||
assert(fstype);
|
||||
|
||||
/* Use a curated list as first check, to avoid calling fsopen() which might load kmods, which might
|
||||
* not be allowed in our MAC context. If we don't know ourselves, on new kernels we can just ask the
|
||||
* kernel. */
|
||||
return streq(fstype, "vfat") || mount_option_supported(fstype, "umask", "0077") > 0;
|
||||
return streq(fstype, "vfat") || (mount_option_supported(fstype, "fmask", "0177") > 0 && mount_option_supported(fstype, "dmask", "0077") > 0);
|
||||
}
|
||||
|
||||
bool fstype_can_uid_gid(const char *fstype) {
|
||||
|
||||
@@ -62,7 +62,7 @@ bool fstype_is_blockdev_backed(const char *fstype);
|
||||
bool fstype_is_ro(const char *fsype);
|
||||
bool fstype_can_discard(const char *fstype);
|
||||
bool fstype_can_uid_gid(const char *fstype);
|
||||
bool fstype_can_umask(const char *fstype);
|
||||
bool fstype_can_fmask_dmask(const char *fstype);
|
||||
|
||||
const char* fstype_norecovery_option(const char *fstype);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user