Public bug reported:

On 16.04 and using the Xubuntu session (this isn't limited to XFCE) I
noticed that my notebook fails to suspend via power-management when the
idle timeout expires. When returning to it, if it still has power, I see
a polkit-agent GUI dialog asking me to authenticate.

In /var/log/auth.log is:

polkitd(authority=local): Operator of unix-session:c2 FAILED to
authenticate to gain authorization for action
org.freedesktop.login1.suspend for system-bus-name::1.47 [xfce4-power-
manager --restart --sm-client-id 2992705d4-6fa2-4fba-966c-f7631ecd0b46]
(owned by unix-user:tj)

So I started digging:

# inactive sleep is enabled
$ xfconf-query -c xfce4-power-manager -lv | grep inactivity
/xfce4-power-manager/inactivity-on-ac                   14
/xfce4-power-manager/inactivity-on-battery              15
/xfce4-power-manager/inactivity-sleep-mode-on-battery   1

$ awk '/login1\.suspend"/ {E=1;print} /defaults/ && E == 1 {E++} E > 1 {print} 
/<\/action>/ && E > 1 {exit}' 
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
        <action id="org.freedesktop.login1.suspend">
                <defaults>
                        <allow_any>auth_admin_keep</allow_any>
                        <allow_inactive>auth_admin_keep</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>

# member of sudo and adm
$ groups
tj adm dialout cdrom sudo dip plugdev lpadmin sambashare sbuild lxd libvirtd 
two_factor_auth

$ sudo find /etc/polkit-1/ -type f -exec sh -c 'echo === {} ===; cat {}' \; | 
egrep -v '^(#|$)'
=== /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla ===
[Enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
ResultInactive=yes
[Enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes
ResultInactive=yes
=== /etc/polkit-1/nullbackend.conf.d/50-nullbackend.conf ===
[Configuration]
Priority=-10
=== /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf ===
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin
=== /etc/polkit-1/localauthority.conf.d/50-localauthority.conf ===
[Configuration]
AdminIdentities=unix-user:0

ubuntu-admin.conf policy sets AdminIdentities to include group 'sudo'
but seems to be ignored

"man 8 pklocalauthority" states that these files are parsed in C locale
lexical order, and gives examples of "...given the name 60-desktop-
policy.conf to ensure that it is evaluted after the
50-localauthority.conf file shipped with PolicyKit."

However:

$ sudo inotifywait -r -m /etc/polkit-1/localauthority.conf.d
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/etc/polkit-1/localauthority.conf.d/ OPEN,ISDIR
/etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR
/etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR
/etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE,ISDIR
/etc/polkit-1/localauthority.conf.d/ OPEN 51-ubuntu-admin.conf
/etc/polkit-1/localauthority.conf.d/ ACCESS 51-ubuntu-admin.conf
/etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 51-ubuntu-admin.conf
/etc/polkit-1/localauthority.conf.d/ OPEN 50-localauthority.conf
/etc/polkit-1/localauthority.conf.d/ ACCESS 50-localauthority.conf
/etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 50-localauthority.conf

This seems to show that the sort order might be high-low not low-high
(unless they're sorted once in memory).

In view of the fact that ubuntu-admin.conf appears to be ignored I
suspect 50-localauthority.conf is replacing the ubuntu conf with the
default:

AdminIdentities=unix-group:sudo;unix-group:admin
AdminIdentities=unix-user:0

** Affects: policykit-1 (Ubuntu)
     Importance: Undecided
         Status: New

** Description changed:

  On 16.04 and using the Xubuntu session (this isn't limited to XFCE) I
  noticed that my notebook fails to suspend via power-management when the
  idle timeout expires. When returning to it, if it still has power, I see
  a polkit-agent GUI dialog asking me to authenticate.
  
  In /var/log/auth.log is:
  
  polkitd(authority=local): Operator of unix-session:c2 FAILED to
  authenticate to gain authorization for action
  org.freedesktop.login1.suspend for system-bus-name::1.47 [xfce4-power-
  manager --restart --sm-client-id 2992705d4-6fa2-4fba-966c-f7631ecd0b46]
  (owned by unix-user:tj)
  
  So I started digging:
  
  # inactive sleep is enabled
  $ xfconf-query -c xfce4-power-manager -lv | grep inactivity
  /xfce4-power-manager/inactivity-on-ac                   14
  /xfce4-power-manager/inactivity-on-battery              15
  /xfce4-power-manager/inactivity-sleep-mode-on-battery   1
  
- $ awk '/login1\.suspend"/ {E=1;print} /defaults/ && E == 1 {E++} E > 1 
{print} /<\/action>/ && E > 1 {exit}' 
/usr/share/polkit-1/actions/org.freedesktop.login1.policy 
-         <action id="org.freedesktop.login1.suspend">
-                 <defaults>
-                         <allow_any>auth_admin_keep</allow_any>
-                         <allow_inactive>auth_admin_keep</allow_inactive>
-                         <allow_active>yes</allow_active>
-                 </defaults>
-         </action>
+ $ awk '/login1\.suspend"/ {E=1;print} /defaults/ && E == 1 {E++} E > 1 
{print} /<\/action>/ && E > 1 {exit}' 
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
+         <action id="org.freedesktop.login1.suspend">
+                 <defaults>
+                         <allow_any>auth_admin_keep</allow_any>
+                         <allow_inactive>auth_admin_keep</allow_inactive>
+                         <allow_active>yes</allow_active>
+                 </defaults>
+         </action>
  
  # member of sudo and adm
  $ groups
  tj adm dialout cdrom sudo dip plugdev lpadmin sambashare sbuild lxd libvirtd 
two_factor_auth
- 
  
  $ sudo find /etc/polkit-1/ -type f -exec sh -c 'echo === {} ===; cat {}' \; | 
egrep -v '^(#|$)'
  === /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla ===
  [Enable hibernate by default in upower]
  Identity=unix-user:*
  Action=org.freedesktop.upower.hibernate
  ResultActive=yes
  ResultInactive=yes
  [Enable hibernate by default in logind]
  Identity=unix-user:*
  
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
  ResultActive=yes
  ResultInactive=yes
  === /etc/polkit-1/nullbackend.conf.d/50-nullbackend.conf ===
  [Configuration]
  Priority=-10
  === /etc/polkit-1/localauthority.conf.d/51-localauthority.conf ===
  [Configuration]
  AdminIdentities=unix-user:0
  === /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf ===
  [Configuration]
  AdminIdentities=unix-group:sudo;unix-group:admin
  === /etc/polkit-1/localauthority.conf.d/50-localauthority.conf ===
  [Configuration]
  AdminIdentities=unix-user:0
  
  ubuntu-admin.conf policy sets AdminIdentities to include group 'sudo'
  but seems to be ignored
  
  "man 8 pklocalauthority" states that these files are parsed in C locale
  lexical order, and gives examples of "...given the name 60-desktop-
  policy.conf to ensure that it is evaluted after the
  50-localauthority.conf file shipped with PolicyKit."
  
  However:
  
- $ sudo inotifywait -r -m /etc/polkit-1/localauthority.conf.d                  
                                                                                
                         
+ $ sudo inotifywait -r -m /etc/polkit-1/localauthority.conf.d
  Setting up watches.  Beware: since -r was given, this may take a while!
  Watches established.
- /etc/polkit-1/localauthority.conf.d/ OPEN,ISDIR 
- /etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR 
- /etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR 
- /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE,ISDIR 
+ /etc/polkit-1/localauthority.conf.d/ OPEN,ISDIR
+ /etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR
+ /etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR
+ /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE,ISDIR
  /etc/polkit-1/localauthority.conf.d/ OPEN 51-ubuntu-admin.conf
  /etc/polkit-1/localauthority.conf.d/ ACCESS 51-ubuntu-admin.conf
  /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 51-ubuntu-admin.conf
  /etc/polkit-1/localauthority.conf.d/ OPEN 51-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ ACCESS 51-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 
51-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ OPEN 50-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ ACCESS 50-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 
50-localauthority.conf
  
  This seems to show that the sort order might be high-low not low-high
  (unless they're sorted once in memory).
  
- In view of the fact that ubutun-admin.conf appears to be ignored I
+ In view of the fact that ubuntu-admin.conf appears to be ignored I
  suspect 50-localauthority.conf is replacing the ubuntu conf with the
  default:
  
  AdminIdentities=unix-group:sudo;unix-group:admin
  AdminIdentities=unix-user:0

** Description changed:

  On 16.04 and using the Xubuntu session (this isn't limited to XFCE) I
  noticed that my notebook fails to suspend via power-management when the
  idle timeout expires. When returning to it, if it still has power, I see
  a polkit-agent GUI dialog asking me to authenticate.
  
  In /var/log/auth.log is:
  
  polkitd(authority=local): Operator of unix-session:c2 FAILED to
  authenticate to gain authorization for action
  org.freedesktop.login1.suspend for system-bus-name::1.47 [xfce4-power-
  manager --restart --sm-client-id 2992705d4-6fa2-4fba-966c-f7631ecd0b46]
  (owned by unix-user:tj)
  
  So I started digging:
  
  # inactive sleep is enabled
  $ xfconf-query -c xfce4-power-manager -lv | grep inactivity
  /xfce4-power-manager/inactivity-on-ac                   14
  /xfce4-power-manager/inactivity-on-battery              15
  /xfce4-power-manager/inactivity-sleep-mode-on-battery   1
  
  $ awk '/login1\.suspend"/ {E=1;print} /defaults/ && E == 1 {E++} E > 1 
{print} /<\/action>/ && E > 1 {exit}' 
/usr/share/polkit-1/actions/org.freedesktop.login1.policy
          <action id="org.freedesktop.login1.suspend">
                  <defaults>
                          <allow_any>auth_admin_keep</allow_any>
                          <allow_inactive>auth_admin_keep</allow_inactive>
                          <allow_active>yes</allow_active>
                  </defaults>
          </action>
  
  # member of sudo and adm
  $ groups
  tj adm dialout cdrom sudo dip plugdev lpadmin sambashare sbuild lxd libvirtd 
two_factor_auth
  
  $ sudo find /etc/polkit-1/ -type f -exec sh -c 'echo === {} ===; cat {}' \; | 
egrep -v '^(#|$)'
  === /etc/polkit-1/localauthority/50-local.d/com.ubuntu.desktop.pkla ===
  [Enable hibernate by default in upower]
  Identity=unix-user:*
  Action=org.freedesktop.upower.hibernate
  ResultActive=yes
  ResultInactive=yes
  [Enable hibernate by default in logind]
  Identity=unix-user:*
  
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
  ResultActive=yes
  ResultInactive=yes
  === /etc/polkit-1/nullbackend.conf.d/50-nullbackend.conf ===
  [Configuration]
  Priority=-10
- === /etc/polkit-1/localauthority.conf.d/51-localauthority.conf ===
- [Configuration]
- AdminIdentities=unix-user:0
  === /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf ===
  [Configuration]
  AdminIdentities=unix-group:sudo;unix-group:admin
  === /etc/polkit-1/localauthority.conf.d/50-localauthority.conf ===
  [Configuration]
  AdminIdentities=unix-user:0
  
  ubuntu-admin.conf policy sets AdminIdentities to include group 'sudo'
  but seems to be ignored
  
  "man 8 pklocalauthority" states that these files are parsed in C locale
  lexical order, and gives examples of "...given the name 60-desktop-
  policy.conf to ensure that it is evaluted after the
  50-localauthority.conf file shipped with PolicyKit."
  
  However:
  
  $ sudo inotifywait -r -m /etc/polkit-1/localauthority.conf.d
  Setting up watches.  Beware: since -r was given, this may take a while!
  Watches established.
  /etc/polkit-1/localauthority.conf.d/ OPEN,ISDIR
  /etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR
  /etc/polkit-1/localauthority.conf.d/ ACCESS,ISDIR
  /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE,ISDIR
  /etc/polkit-1/localauthority.conf.d/ OPEN 51-ubuntu-admin.conf
  /etc/polkit-1/localauthority.conf.d/ ACCESS 51-ubuntu-admin.conf
  /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 51-ubuntu-admin.conf
- /etc/polkit-1/localauthority.conf.d/ OPEN 51-localauthority.conf
- /etc/polkit-1/localauthority.conf.d/ ACCESS 51-localauthority.conf
- /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 
51-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ OPEN 50-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ ACCESS 50-localauthority.conf
  /etc/polkit-1/localauthority.conf.d/ CLOSE_NOWRITE,CLOSE 
50-localauthority.conf
  
  This seems to show that the sort order might be high-low not low-high
  (unless they're sorted once in memory).
  
  In view of the fact that ubuntu-admin.conf appears to be ignored I
  suspect 50-localauthority.conf is replacing the ubuntu conf with the
  default:
  
  AdminIdentities=unix-group:sudo;unix-group:admin
  AdminIdentities=unix-user:0

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1757266

Title:
  /etc/polkit-1/localauthority.conf.d/ parsed in wrong order?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/policykit-1/+bug/1757266/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to