udev-extraconf: Allow FAT mount group to be specified

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.

(From OE-Core rev: c723dbc329d4cf2a75022f8dd1cfa304383bb4f5)

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Watt
2025-01-10 09:00:55 -07:00
committed by Richard Purdie
parent 15ebdb6fcc
commit 58bbcc3de4
2 changed files with 10 additions and 7 deletions

View 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 ;;

View 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
}