]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - debian/guest-account.sh
Replace loginctl action terminate-user with kill-user, which seems more efficient...
[sojka/lightdm.git] / debian / guest-account.sh
index 46874f3565a7ac25d5e21f9697bb2ccc3cdcc5f3..63d3b1f79357bd72dc40af5bab2e99b7d7b830f8 100644 (file)
@@ -34,7 +34,7 @@ add_account ()
 {
   temp_home=$(mktemp -td guest-XXXXXX)
   GUEST_HOME=$(echo ${temp_home} | tr '[:upper:]' '[:lower:]')
-  GUEST_USER=$(echo ${GUEST_HOME} | sed 's/\(.*\)guest/guest/')
+  GUEST_USER=${GUEST_HOME#/tmp/}
   [ ${GUEST_HOME} != ${temp_home} ] && mv ${temp_home} ${GUEST_HOME}
 
   # if ${GUEST_USER} already exists, it must be a locked system account with no existing
@@ -65,7 +65,7 @@ add_account ()
     fi
   else
     # does not exist, so create it
-    useradd --system --home-dir / --comment $(gettext "Guest") --user-group --shell /bin/bash ${GUEST_USER} || {
+    useradd --system --home-dir ${GUEST_HOME} --comment $(gettext "Guest") --user-group --shell /bin/bash ${GUEST_USER} || {
       rm -rf ${GUEST_HOME}
       exit 1
     }
@@ -132,8 +132,6 @@ add_account ()
     chown -R ${GUEST_USER}:${GUEST_USER} ${GUEST_HOME}
   fi
 
-  usermod -d ${GUEST_HOME} ${GUEST_USER}
-
   # setup session
   su ${GUEST_USER} -c "env HOME=${GUEST_HOME} site_gs=${site_gs} ${dist_gs}/setup.sh"
 
@@ -143,7 +141,7 @@ add_account ()
 remove_account ()
 {
   GUEST_USER=${1}
-  
+
   PWENT=$(getent passwd ${GUEST_USER}) || {
     echo "Error: invalid user ${GUEST_USER}"
     exit 1
@@ -158,25 +156,25 @@ remove_account ()
 
   GUEST_HOME=$(echo ${PWENT} | cut -f6 -d:)
 
-  if [ ${GUEST_HOME} = ${GUEST_HOME#/tmp/} ]; then
-    echo "Error: home directory ${GUEST_HOME} is not in /tmp/."
-    exit 1
-  fi
-
   # kill all remaining processes
   if [ -x /bin/loginctl ] || [ -x /usr/bin/loginctl ]; then
-    loginctl terminate-user ${GUEST_USER} >/dev/null || true
+    loginctl kill-user ${GUEST_USER} >/dev/null || true
   else
-    while ps h -u ${GUEST_USER} >/dev/null; do 
+    while ps h -u ${GUEST_USER} >/dev/null
+    do
       killall -9 -u ${GUEST_USER} || true
-      sleep 0.2; 
+      sleep 0.2;
     done
   fi
 
-  umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # BindFS mount
-  umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # union mount
-  umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # tmpfs mount
-  rm -rf ${GUEST_HOME}
+  if [ ${GUEST_HOME} = ${GUEST_HOME#/tmp/} ]; then
+    echo "Warning: home directory ${GUEST_HOME} is not in /tmp/. It won't be removed."
+  else
+    umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # BindFS mount
+    umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # union mount
+    umount ${GUEST_HOME} || umount -l ${GUEST_HOME} || true # tmpfs mount
+    rm -rf ${GUEST_HOME}
+  fi
 
   # remove leftovers in /tmp
   find /tmp -mindepth 1 -maxdepth 1 -uid ${GUEST_UID} -print0 | xargs -0 rm -rf || true