1
0
mirror of https://github.com/systemd/systemd.git synced 2024-11-01 09:21:26 +03:00

dissect: automatically mark partitions read-only that have a read-only file system

Specifically, squashfs and iso9660 are always read-only, hence make sure
we never even think about mounting them writable.
This commit is contained in:
Lennart Poettering 2017-09-29 14:19:22 +02:00
parent 01a65d4180
commit 896f937f58
3 changed files with 17 additions and 0 deletions

View File

@ -578,6 +578,19 @@ bool fstype_is_api_vfs(const char *fstype) {
return nulstr_contains(table, fstype);
}
bool fstype_is_ro(const char *fstype) {
/* All Linux file systems that are necessarily read-only */
static const char table[] =
"DM_verity_hash\0"
"iso9660\0"
"squashfs\0"
;
return nulstr_contains(table, fstype);
}
int repeat_unmount(const char *path, int flags) {
bool done = false;

View File

@ -45,6 +45,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
bool fstype_is_network(const char *fstype);
bool fstype_is_api_vfs(const char *fstype);
bool fstype_is_ro(const char *fsype);
union file_handle_union {
struct file_handle handle;

View File

@ -591,6 +591,9 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI
if (streq_ptr(p->fstype, "crypto_LUKS"))
m->encrypted = true;
if (p->fstype && fstype_is_ro(p->fstype))
p->rw = false;
}
*ret = m;