From 91cd1188ffbf2c10df265431bb6e03e42f255e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?La=C3=A9rcio=20de=20Sousa?= Date: Thu, 15 Oct 2015 09:23:40 -0300 Subject: Move parts of guest-account script to separate files, and revert remaining sudo calls. --- debian/guest-account.sh | 67 +++++++----------------------------- debian/guest-session-setup.sh | 34 ++++++++++++++++++ debian/guest-session-startup.desktop | 5 +++ debian/guest-session.profile | 1 + debian/lightdm.install | 1 + debian/rules | 2 ++ 6 files changed, 56 insertions(+), 54 deletions(-) create mode 100644 debian/guest-session-setup.sh create mode 100644 debian/guest-session-startup.desktop create mode 100644 debian/guest-session.profile diff --git a/debian/guest-account.sh b/debian/guest-account.sh index 748a7511..ffc44eb5 100644 --- a/debian/guest-account.sh +++ b/debian/guest-account.sh @@ -53,7 +53,8 @@ add_account () } fi - gs_skel=/etc/guest-session/skel/ + dist_gs=/usr/share/lightdm/guest-session + site_gs=/etc/guest-session # create temporary home directory mount -t tmpfs -o mode=700,uid=${USER} none ${HOME} || { @@ -61,29 +62,31 @@ add_account () exit 1 } - if [ -d ${gs_skel} ] && [ -n $(find ${gs_skel} -type f) ]; then + if [ -d ${site_gs}/skel ] && [ -n $(find ${site_gs}/skel -type f) ]; then # Only perform union-mounting if BindFS is available if [ -x /usr/bin/bindfs ]; then bindfs_mount=true # Try OverlayFS first if modinfo -n overlay >/dev/null 2>&1; then - sudo -u ${USER} mkdir ${HOME}/upper ${HOME}/work - mount -t overlay -o lowerdir=${gs_skel},upperdir=${HOME}/upper,workdir=${HOME}/work overlay ${HOME} || { + mkdir ${HOME}/upper ${HOME}/work + chown ${USER}:${USER} ${HOME}/upper ${HOME}/work + mount -t overlay -o lowerdir=${dist_gs}/skel:${site_gs}/skel,upperdir=${HOME}/upper,workdir=${HOME}/work overlay ${HOME} || { umount ${HOME} rm -rf ${HOME} exit 1 } # If OverlayFS is not available, try AuFS elif [ -x /sbin/mount.aufs ]; then - mount -t aufs -o br=${HOME}:${gs_skel} none ${HOME} || { + mount -t aufs -o br=${HOME}:${dist_gs}/skel:${site_gs}/skel none ${HOME} || { umount ${HOME} rm -rf ${HOME} exit 1 } # If none of them is available, fall back to copy over else - cp -rT ${gs_skel} ${HOME} + cp -rT ${site_gs}/skel/ ${HOME} + cp -rT ${dist_gs}/skel/ ${HOME} chown -R ${USER}:${USER} ${HOME} bindfs_mount=false fi @@ -100,64 +103,20 @@ add_account () fi # If BindFS is not available, just fall back to copy over else - cp -rT ${gs_skel} ${HOME} + cp -rT ${site_gs}/skel/ ${HOME} + cp -rT ${dist_gs}/skel/ ${HOME} chown -R ${USER}:${USER} ${HOME} fi else cp -rT /etc/skel/ ${HOME} + cp -rT ${dist_gs}/skel/ ${HOME} chown -R ${USER}:${USER} ${HOME} fi usermod -d ${HOME} ${USER} - # # setup session - # - - # disable some services that are unnecessary for the guest session - [ -d ${HOME}/.config/autostart ] || sudo -u ${USER} mkdir -p ${HOME}/.config/autostart - cd /etc/xdg/autostart/ - services="jockey-kde.desktop jockey-gtk.desktop update-notifier.desktop user-dirs-update-gtk.desktop" - for service in ${services} - do - if [ -e /etc/xdg/autostart/${service} ] ; then - [ -f ${HOME}/.config/autostart/${service} ] || sudo -u ${USER} cp ${service} ${HOME}/.config/autostart - echo "X-GNOME-Autostart-enabled=false" >> ${HOME}/.config/autostart/${service} - fi - done - - # disable Unity shortcut hint - [ -d ${HOME}/.cache/unity ] || sudo -u ${USER} mkdir -p ${HOME}/.cache/unity - sudo -u ${USER} touch ${HOME}/.cache/unity/first_run.stamp - - STARTUP=${HOME}/.config/autostart/startup-commands.desktop - sudo -u ${USER} touch ${STARTUP} - echo "[Desktop Entry]" > ${STARTUP} - echo "Name=Startup commands" >> ${STARTUP} - echo "Type=Application" >> ${STARTUP} - echo "NoDisplay=true" >> ${STARTUP} - echo "Exec=/usr/lib/lightdm/guest-session-auto.sh" >> ${STARTUP} - - sudo -u ${USER} touch ${HOME}/.profile - echo "export DIALOG_SLEEP=4" >> ${HOME}/.profile - - [ -d ${HOME}/.kde/share/config ] || sudo -u ${USER} mkdir -p ${HOME}/.kde/share/config - [ -f ${HOME}/.kde/share/config/nepomukserverrc ] || sudo -u ${USER} touch ${HOME}/.kde/share/config/nepomukserverrc - echo "[Basic Settings]" >> ${HOME}/.kde/share/config/nepomukserverrc - echo "Start Nepomuk=false" >> ${HOME}/.kde/share/config/nepomukserverrc - - [ -f ${HOME}/.kde/share/config/notificationhelper ] || sudo -u ${USER} touch ${HOME}/.kde/share/config/notificationhelper - echo "[Event]" >> ${HOME}/.kde/share/config/notificationhelper - echo "hideHookNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper - echo "hideInstallNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper - echo "hideRestartNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper - - # Load restricted session - #dmrc='[Desktop]\nSession=guest-restricted' - #/bin/echo -e ${dmrc} > ${HOME}/.dmrc - - # set possible local guest session preferences - [ -f /etc/guest-session/prefs.sh ] && sudo -u ${USER} sh -c '. /etc/guest-session/prefs.sh' + su ${USER} -c "env HOME=${HOME} site_gs=${site_gs} ${dist_gs}/setup.sh" echo ${USER} } diff --git a/debian/guest-session-setup.sh b/debian/guest-session-setup.sh new file mode 100644 index 00000000..9e1300db --- /dev/null +++ b/debian/guest-session-setup.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +HOME=${HOME:-$(getent passwd $(whoami) | cut -f6 -d:)} +site_gs=${site_gs:-/etc/guest-session} + +# disable some services that are unnecessary for the guest session +services="jockey-kde.desktop jockey-gtk.desktop update-notifier.desktop user-dirs-update-gtk.desktop" + +for service in ${services}; do + if [ -e /etc/xdg/autostart/${service} ]; then + [ -f ${HOME}/.config/autostart/${service} ] || cp /etc/xdg/autostart/${service} ${HOME}/.config/autostart + echo "X-GNOME-Autostart-enabled=false" >> ${HOME}/.config/autostart/${service} + fi +done + +# disable Unity shortcut hint +[ -d ${HOME}/.cache/unity ] || mkdir -p ${HOME}/.cache/unity +touch ${HOME}/.cache/unity/first_run.stamp + +[ -d ${HOME}/.kde/share/config ] || mkdir -p ${HOME}/.kde/share/config +echo "[Basic Settings]" >> ${HOME}/.kde/share/config/nepomukserverrc +echo "Start Nepomuk=false" >> ${HOME}/.kde/share/config/nepomukserverrc + +echo "[Event]" >> ${HOME}/.kde/share/config/notificationhelper +echo "hideHookNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper +echo "hideInstallNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper +echo "hideRestartNotifier=true" >> ${HOME}/.kde/share/config/notificationhelper + +# Load restricted session +#dmrc='[Desktop]\nSession=guest-restricted' +#/bin/echo -e ${dmrc} > ${HOME}/.dmrc + +# set possible local guest session preferences +[ -f ${site_gs}/prefs.sh ] && . ${site_gs}/prefs.sh diff --git a/debian/guest-session-startup.desktop b/debian/guest-session-startup.desktop new file mode 100644 index 00000000..676d72e6 --- /dev/null +++ b/debian/guest-session-startup.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Custom startup commands for LightDM guest session +Type=Application +NoDisplay=true +Exec=/usr/lib/lightdm/guest-session-auto.sh diff --git a/debian/guest-session.profile b/debian/guest-session.profile new file mode 100644 index 00000000..38d441c9 --- /dev/null +++ b/debian/guest-session.profile @@ -0,0 +1 @@ +DIALOG_SLEEP=4 diff --git a/debian/lightdm.install b/debian/lightdm.install index 53becd25..01ce61ac 100644 --- a/debian/lightdm.install +++ b/debian/lightdm.install @@ -12,6 +12,7 @@ etc/apparmor.d debian/lightdm-session usr/sbin debian/config-error-dialog.sh usr/lib/lightdm debian/guest-session-auto.sh usr/lib/lightdm +debian/guest-session-startup.desktop usr/share/lightdm/guest-session/skel/.config/autostart debian/lightdm-greeter-session usr/lib/lightdm debian/source_lightdm.py usr/share/apport/package-hooks debian/50-xserver-command.conf usr/share/lightdm/lightdm.conf.d diff --git a/debian/rules b/debian/rules index d4ee0c17..8eee47a9 100755 --- a/debian/rules +++ b/debian/rules @@ -27,6 +27,8 @@ override_dh_install: # we do install pam through installpam and init through installinit dh_install -X.a -X.la -Xpam.d -X'etc/init/lightdm.conf' --fail-missing install -D debian/guest-account.sh debian/lightdm/usr/sbin/guest-account + install -D debian/guest-session-setup.sh debian/lightdm/usr/share/lightdm/guest-session/setup.sh + install -D debian/guest-session.profile debian/lightdm/usr/share/lightdm/guest-session/skel/.profile chmod +x debian/lightdm/usr/lib/lightdm/lightdm-greeter-session chmod +x debian/lightdm/usr/lib/lightdm/guest-session-auto.sh -- cgit v1.2.1