Ubuntu – disable shutdown/suspend if there is other user logged in via ssh

11.04shutdownssh

I remember that in versions of ubuntu around 9.04 was possible to disable user to shutdown ( and maybe suspend too ) system if there was other user logged in.Something like policykit or similar.

Is it possible to do in 11.04 ?

Thanks

edit:

if someone needs ( for own risk ), little change in /usr/lib/pm-utils/bin/pm-action will allow user to suspend machine if he is only user logged in or when user will run sudo pm-suspend. Probably not best piece of code, but for now works.

diff -r 805887c5c0f6 pm-action
--- a/pm-action Wed Jun 29 23:32:01 2011 +0200
+++ b/pm-action Wed Jun 29 23:37:23 2011 +0200
@@ -47,6 +47,14 @@
    exit 1
 fi

+if [ "$(id -u )" == 0 -o `w -h | cut -f 1 -d " " | sort | uniq | wc -l` -eq 1 ]; then
+                echo "either youre root or root isnt here and youre only user, continuing" 1>&2
+                else
+                echo "Not suspending, root is here or there is more users" 1>&2
+                exit 2
+                fi
+
+
 remove_suspend_lock()
 {
    release_lock "${STASHNAME}.lock"

Question still stands, is it possible to forbid shutdown or suspend when there is more than one user logged in ( without rewriting pm-suspend or halt ( or other hack ) )?

Best Answer

  • Update (thanks to enzotib):

    The files I listed in the original answer should not be edited, as a package update can overwrite your changes.

    PolicyKit should instead be configured using configuration files placed in /var/lib/polkit-1/localauthority/, as detailed in the pklocalauthority manual page.

    Original answer:

    With the deprecation of HAL, this is now controlled in /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy

    Set allow_active in the two action sections shown below to no (they are set to auth_admin_keep by default):

      <action id="org.freedesktop.consolekit.system.stop-multiple-users">
        <description>Stop the system when multiple users are logged in</description>
        <message>System policy prevents stopping the system when other users are logged in</message>
        <defaults>
          <allow_inactive>no</allow_inactive>
          <allow_active>no</allow_active>
        </defaults>
      </action>
    

    ...

      <action id="org.freedesktop.consolekit.system.restart-multiple-users">
        <description>Restart the system when multiple users are logged in</description>
        <message>System policy prevents restarting the system when other users are logged in</message>
        <defaults>
          <allow_inactive>no</allow_inactive>
          <allow_active>no</allow_active>
        </defaults>
      </action>