]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
udev-extraconf: Allow FAT mount group to be specified
authorJoshua Watt <JPEWhacker@gmail.com>
Fri, 10 Jan 2025 16:00:55 +0000 (09:00 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 14 Jan 2025 11:57:45 +0000 (11:57 +0000)
Adds a variable that allows the group given permissions to access FAT
mounted file systems to be specified, instead of being hardcoded to
'disk'.

As a note, the usage of 'disk' as the mount group is not a very secure
default, since the disk user usually has read/write access to all block
devices in /dev/, meaning that adding a user to this group for the
purpose of accessing FAT file systems effectively gives the write access
to all block devices.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-core/udev/udev-extraconf/mount.sh
meta/recipes-core/udev/udev-extraconf_1.1.bb

index eb84a468be51af78475b4ac6954af8bf159e3835..0cbae48729bcbe6673b3e3bc93ca76b6aec4789a 100644 (file)
@@ -83,11 +83,11 @@ automount_systemd() {
 
     MOUNT="$MOUNT -o silent"
 
-    # If filesystemtype is vfat, change the ownership group to 'disk', and
+    # If filesystemtype is vfat, change the ownership group to mount group, and
     # grant it with  w/r/x permissions.
     case $ID_FS_TYPE in
     vfat|fat)
-        MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`"
+        MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^@MOUNT_GROUP@:/{print $3}' /etc/group`"
         ;;
     swap)
         return ;;
@@ -138,11 +138,11 @@ automount() {
                MOUNT="$MOUNT -o silent"
        fi
 
-       # If filesystem type is vfat, change the ownership group to 'disk', and
+       # If filesystem type is vfat, change the ownership group to mount group, and
        # grant it with  w/r/x permissions.
        case $ID_FS_TYPE in
        vfat|fat)
-               MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`"
+               MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^@MOUNT_GROUP@:/{print $3}' /etc/group`"
                ;;
        swap)
                return ;;
index 0e2abcd42435acb9b6717e9426763921a0237833..0d7e4f4f36989abc87950cd5b202dfbec47e0ed6 100644 (file)
@@ -17,6 +17,7 @@ S = "${WORKDIR}/sources"
 UNPACKDIR = "${S}"
 
 MOUNT_BASE = "/run/media"
+MOUNT_GROUP ?= "disk"
 
 do_install() {
     install -d ${D}${sysconfdir}/udev/rules.d
@@ -31,9 +32,11 @@ do_install() {
     install -d ${D}${sysconfdir}/udev/scripts/
 
     install -m 0755 ${S}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
-    sed -i 's|@systemd_unitdir@|${systemd_unitdir}|g' ${D}${sysconfdir}/udev/scripts/mount.sh
-    sed -i 's|@base_sbindir@|${base_sbindir}|g' ${D}${sysconfdir}/udev/scripts/mount.sh
-    sed -i 's|@MOUNT_BASE@|${MOUNT_BASE}|g' ${D}${sysconfdir}/udev/scripts/mount.sh
+    sed -e 's|@systemd_unitdir@|${systemd_unitdir}|g' \
+        -e 's|@base_sbindir@|${base_sbindir}|g' \
+        -e 's|@MOUNT_BASE@|${MOUNT_BASE}|g' \
+        -e 's|@MOUNT_GROUP@|${MOUNT_GROUP}|g' \
+        -i ${D}${sysconfdir}/udev/scripts/mount.sh
 
     install -m 0755 ${S}/network.sh ${D}${sysconfdir}/udev/scripts
 }