Search
SailfishOS Open Build Service
>
Projects
>
nemo
:
testing:hw
:
motorola
:
moto_msm8960_jbbl
:
4.4.0.68
>
udisks2
> _service:tar_git:0004-Introduce-mount-sd-service-that-is-executed-as-user.patch
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File _service:tar_git:0004-Introduce-mount-sd-service-that-is-executed-as-user.patch of Package udisks2
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Marko Kenttala <marko.kenttala@jolla.com> Date: Tue, 15 Oct 2019 17:57:19 +0300 Subject: [PATCH] Introduce mount-sd service that is executed as user --- data/80-udisks2.rules | 5 +++++ data/Makefile.am | 7 +++++-- data/mount-sd@.service.in | 13 +++++++++++++ tools/Makefile.am | 3 +++ tools/udisksctl-user | 4 ++++ 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 data/mount-sd@.service.in create mode 100644 tools/udisksctl-user diff --git a/data/80-udisks2.rules b/data/80-udisks2.rules index 39bfa28b..64ac2836 100644 --- a/data/80-udisks2.rules +++ b/data/80-udisks2.rules @@ -48,6 +48,11 @@ KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}== KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="SDcombo", ENV{ID_DRIVE_FLASH_SD_COMBO}="1", ENV{ID_DRIVE_MEDIA_FLASH_SD}="1", ENV{ID_DRIVE_MEDIA_FLASH_SDIO}="1" # compatibility fallback in case of an unavailable MMC_TYPE attr KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="", ENV{ID_DRIVE_FLASH_SD}="1", ENV{ID_DRIVE_MEDIA_FLASH_SD}="1" + +KERNEL=="mmcblk[0-9]*|sd[a-z][0-9]", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_DRIVE_THUMB}=="1", ACTION=="add", MODE="0660", TAG+="systemd", ENV{SYSTEMD_WANTS}="mount-sd@%k.service" +KERNEL=="mmcblk[0-9]*|sd[a-z][0-9]", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_DRIVE_MEDIA_FLASH_SD}=="1", ACTION=="add", MODE="0660", TAG+="systemd", ENV{SYSTEMD_WANTS}="mount-sd@%k.service" +KERNEL=="mmcblk[0-9]*|sd[a-z][0-9]", SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="filesystem", ENV{ID_DRIVE_MEDIA_FLASH_SDIO}=="1", ACTION=="add", MODE="0660", TAG+="systemd", ENV{SYSTEMD_WANTS}="mount-sd@%k.service" + # import ID_SERIAL and related for "mmcblk_boot" devices from its parent KERNEL=="mmcblk[0-9]boot[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", IMPORT{parent}="ID_*" # ditto for memstick diff --git a/data/Makefile.am b/data/Makefile.am index 758644be..9bce130a 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -18,14 +18,17 @@ dbusconf_DATA = $(dbusconf_in_files:.conf.in=.conf) $(dbusconf_DATA): $(dbusconf_in_files) Makefile cp $< $@ -systemdservice_in_files = udisks2.service.in +systemdservice_in_files = udisks2.service.in mount-sd@.service.in if HAVE_SYSTEMD systemdservicedir = $(systemdsystemunitdir) systemdservice_DATA = $(systemdservice_in_files:.service.in=.service) $(systemdservice_DATA): $(systemdservice_in_files) Makefile - @sed -e "s|\@udisksdprivdir\@|$(libexecdir)/udisks2|" $< > $@ + @sed -e "s|\@udisksdprivdir\@|$(libexecdir)/udisks2|" \ + -e "s|\@bindir\@|$(bindir)|" \ + -e "s|\@localstatedir\@|$(localstatedir)|" \ + $@.in > $@ endif udevrulesdir = $(udevdir)/rules.d diff --git a/data/mount-sd@.service.in b/data/mount-sd@.service.in new file mode 100644 index 00000000..b61f0e4c --- /dev/null +++ b/data/mount-sd@.service.in @@ -0,0 +1,13 @@ +[Unit] +Description=Handle udisks sd mount +After=udisks2.service dev-%i.device start-user-session.service +Requisite=dev-%i.device +Requires=udisks2.service +Conflicts=rescue.target actdead.target factory-test.target + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile=-@localstatedir@/environment/udisks2/*.conf +ExecStart=@bindir@/udisksctl-user mount $UDISKS2_MOUNT_OPTIONS -b /dev/%i +ExecStop=@bindir@/udisksctl unmount -b /dev/%i diff --git a/tools/Makefile.am b/tools/Makefile.am index 5f9a84ac..f4a1d287 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -36,6 +36,9 @@ udisksctl_LDADD = \ $(top_builddir)/udisks/libudisks2.la \ $(NULL) +extradir = $(bindir) +extra_DATA = udisksctl-user + # ------------------------------------------------------------------------------ if ENABLE_DAEMON diff --git a/tools/udisksctl-user b/tools/udisksctl-user new file mode 100644 index 00000000..04a745d2 --- /dev/null +++ b/tools/udisksctl-user @@ -0,0 +1,4 @@ +#!/bin/sh +ARGS=$@ +DEVICEUSER=$(loginctl list-sessions | grep seat0 | tr -s " " | cut -d " " -f 4) +/bin/su -l $DEVICEUSER -c "/usr/bin/udisksctl $ARGS" -- 2.34.1