• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Gelöst] Tumbleweed KDE Polkit hibernate:

revealed

Guru
Lösung hier:
http://linux-club.de/forum/viewtopic.php?f=93&t=120567&p=768360#p768360

Hallo.

Ich wollte die hibernate Funktion in KDE deaktivieren, da ich eine SSD benutze. Damit nichts passieren kann, selbst wenn ich aus Versehen darauf klicke. Ich habe einige Anleitungen im Internet mit vielen Möglichkeiten gesucht. Schliesslich hat es funktionert. Allerdings habe ich gelesen, dass die Konfiguration von einem Update überschrieben werden kann. Ich wüsste bitte gerne, wie ich das korrekt sauber einstellen kann.

Hier wie ich es gelöst habe:
1. Die Datei: /usr/share/polkit-1/actions/org.freedesktop.login1.policy editiert.
2. In Sektionen mit vorkommnis von "hibernate" folgendes gesetzt:
Code:
<allow_active>no</allow_active>
3. Sektion mit '<action id="org.freedesktop.login1.hibernate-ignore-inhibit"> beinhaltete keinen wert 'allow':
Code:
<allow_active>no</allow_active>

Danach habe ich noch folgendes abgesetzt:
Code:
set_polkit_default_privs
Davon weiss ich garnicht ob es nötig ist.

Nach dem relog war wie gewünscht die Hibernate Funktion im Kmenü ausgeblendet.

Und nochmal die Frage: Wie mache ich das in schön, in einer lokalen einstellung so dass es nicht überschrieben wird von einem Update?

Gruß,

R

org.freedesktop.login1.inhibit-handle-hibernate-key
org.freedesktop.login1.hibernate
org.freedesktop.login1.hibernate-multiple-sessions
org.freedesktop.login1.hibernate-ignore-inhibit
alle: <allow_active>no</allow_active>
 

josef-wien

Ultimate Guru
revealed schrieb:
Ich wollte die hibernate Funktion in KDE deaktivieren, da ich eine SSD benutze.
Auch bei einer 840 EVO wirst Du deren Ableben wohl nicht erleben.

Zeige einmal als root:
Code:
ls -l /etc/polkit-default-privs.*
grep org.freedesktop.login1.hibernate /etc/polkit-default-privs.*
grep -A1 org.freedesktop.login1.hibernate /etc/polkit-1/rules.d/90-default-privs.rules
 
OP
revealed

revealed

Guru
Hau mich jetzt bitte nicht. Mir wurde im IRC geholfen:
Code:
//
// override openSUSE hibernate default settings
// Dont want to hibernate on SSD.
// [ 'allow_any', 'allow_inactive', 'allow_active' ],
// NO-NO-NO for hibernate. 60-local.rules.
//
polkit.addRule(function(action, subject) {
        // set to true for debugging
        var debug = false;
        rules = {
                'org.freedesktop.login1.inhibit-handle-hibernate-key':
                                ['no', 'no', 'no'],
                'org.freedesktop.login1.hibernate':
                                ['no', 'no', 'no'],
                'org.freedesktop.login1.hibernate-multiple-sessions':
                                ['no', 'no', 'no'],
                'org.freedesktop.login1.hibernate-ignore-inhibit':
                                ['no', 'no', 'no'],
        };
        var i = 0;
        if (subject.local) {
                if (subject.active) {
                        i = 2;
                } else {
                        i = 1;
                }
        }
        if (debug)
                polkit.log(subject);
 
        if (rules[action.id]) {
                if (debug)
                        polkit.log(action.id + " => " + rules[action.id][i]);
                return rules[action.id][i];
        } else {
                if (debug)
                        polkit.log(action.id + " => no override found");
        }
});

Gruß,

R
 
OP
revealed

revealed

Guru
Hier die Ausgaben:

WILD-THING:/etc/polkit-1 # ls -l /etc/polkit-default-privs.*
Code:
-rw-r--r-- 1 root root   486  3. Jul 02:31 /etc/polkit-default-privs.local
-rw-r--r-- 1 root root 29757  3. Jul 02:31 /etc/polkit-default-privs.restrictive
-rw-r--r-- 1 root root 32900  3. Jul 02:31 /etc/polkit-default-privs.standard
WILD-THING:/etc/polkit-1 # grep org.freedesktop.login1.hibernate /etc/polkit-default-privs.*
Code:
/etc/polkit-default-privs.restrictive:org.freedesktop.login1.hibernate-multiple-sessions                auth_admin_keep
/etc/polkit-default-privs.restrictive:org.freedesktop.login1.hibernate-ignore-inhibit                   auth_admin_keep
/etc/polkit-default-privs.restrictive:org.freedesktop.login1.hibernate                                auth_admin_keep:auth_admin_keep:yes
/etc/polkit-default-privs.standard:org.freedesktop.login1.hibernate-multiple-sessions           auth_admin_keep
/etc/polkit-default-privs.standard:org.freedesktop.login1.hibernate-ignore-inhibit                      auth_admin_keep
/etc/polkit-default-privs.standard:org.freedesktop.login1.hibernate                                auth_admin_keep:auth_admin_keep:yes
WILD-THING:/etc/polkit-1 # grep -A1 org.freedesktop.login1.hibernate /etc/polkit-1/rules.d/90-default-privs.rules
Code:
                'org.freedesktop.login1.hibernate':
                        [ 'auth_admin_keep', 'auth_admin_keep', 'yes' ],
--
                'org.freedesktop.login1.hibernate-ignore-inhibit':
                        [ 'auth_admin_keep', 'auth_admin_keep', 'auth_admin_keep' ],
--
                'org.freedesktop.login1.hibernate-multiple-sessions':
                        [ 'auth_admin_keep', 'auth_admin_keep', 'auth_admin_keep' ],
WILD-THING:/etc/polkit-1 #

Gruß,

R
 

josef-wien

Ultimate Guru
Im Augenblick verstehe ich nicht, warum es nach
- Editieren von /usr/share/polkit-1/actions/org.freedesktop.login1.policy
- Ausführen von set_polkit_default_privs
funktioniert hat. Wieso ist /usr/share/polkit-1/actions/org.freedesktop.login1.policy stärker als /etc/polkit-1/rules.d/90-default-privs.rules (aber schwächer als später /etc/polkit-1/rules.d/60-local.rules, da ich annehme, daß Du /usr/share/polkit-1/actions/org.freedesktop.login1.policy rückgebaut hast)?

An und für sich sollte es reichen, in /etc/polkit-default-privs.local Eintragungen nach dem Muster
Code:
org.freedesktop.login1.hibernate     no
vorzunehmen und set_polkit_default_privs auszuführen, dann stehen die gewünschten Ergebnisse in /etc/polkit-1/rules.d/90-default-privs.rules.
 
OP
revealed

revealed

Guru
Hab in der manpage gelesen, dass die hierarchisch abgerufen werden nach Nummer.

Müsste ich das dann für die alle machen? :
Code:
# Format:
# <privilege> <any>:<inactive>:<active>
So?
Code:
## Disable hibernate on all levels:
org.freedesktop.login1.inhibit-handle-hibernate-key     no:no:no
org.freedesktop.login1.hibernate                        no:no:no
org.freedesktop.login1.hibernate-multiple-sessions      no:no:no
org.freedesktop.login1.hibernate-ignore-inhibit         no:no:no

Nein die andere Datei habe ich nicht rückgebaut. Ich gehe davon aus, dass die überschrieben wird. Schon von den SUSE regeln her.

Ich sage schonmal vielen Dank und teste das gleich (nehme meine raus und baue das ein.)!

-> (klappt nicht) ich versuche noch die allererste modifikation zurückzusetzen. Und teste nochmal.
-> Datei zurückgesetzt und geht immernoch nicht, leider. Falsche Syntax meinerseits?
-> auch nach vollständigem reboot klappt es noch nicht.

Ohje: set_polkit_default_privs hab ich nich gelesen. --- Und nochmal!

Gruß,

R
 
OP
revealed

revealed

Guru
So jetz aber:

Es geht!
Code:
set_polkit_default_privs
Musste ich noch ausführen. Das habe ich überlesen. Evtl schon bissl spät.

Würde das gerne so ins Wiki verfrachten. Fändest du das für diesen Zweck sinnvoll gelöst?

Gruß,

R
 

josef-wien

Ultimate Guru
revealed schrieb:
Würde das gerne so ins Wiki verfrachten.
Ich kann mir nicht vorstellen, daß größerer Bedarf danach besteht, aber das Gefühl habe ich bei anderen Beiträgen auch.

revealed schrieb:
Die Datei: /usr/share/polkit-1/actions/org.freedesktop.login1.policy editiert.
revealed schrieb:
Danach habe ich noch folgendes abgesetzt:
Code:
set_polkit_default_privs
Bei mir hat das keine Auswirkungen, bei meinem 13.1 ist mein Weltbild daher immer noch in Ordnung.

Mein erster Ansatz zur Lösung des Problems wäre übrigens die Zeile
Code:
org.freedesktop.upower.hibernate     no
in /etc/polkit-default-privs.local (samt anschließenden set_polkit_default_privs) gewesen. Wenn Du Lust hast, kannst Du das an Stelle Deiner vier Zeilen probieren.
 

josef-wien

Ultimate Guru
Ich habe als display manager KDM 4 und als window manager KDE 3, und bei mir verschwindet auch bei Deinen vier Zeilen nichts. Bei Deinen vier Zeilen wird hibernate ausgeführt, bei meiner Zeile wird hibernate nicht ausgeführt. Ob bei anderen window managers etwas verschwindet, müßten deren Verwender herausfinden.
 
OP
revealed

revealed

Guru
ok. Bei mir funktioniert nämlich leider deine Lösung nicht.

Vermutlich ist der Unterschied zwischen polkit und DE - Versionen ausschlaggebend. Bei mir Plasma5 (kwin) und sddm.

Gruß,

R
 

josef-wien

Ultimate Guru
Dann solltest Du in einem allfälligen Linupedia-Beitrag darauf hinweisen, daß es in Deiner Umgebung so funktioniert und es in anderen Umgebungen anders ist bzw. sein kann.
 
OP
revealed

revealed

Guru
Irgendwie fehlt dieses KCM polkit Modul. Leider gibts das Modul momentan nicht für SUSE. Und ich glaube gelesen zu haben, dass es bei der Entwicklung auch leichte Schwierigkeiten gibt. Und dass SUSE nich so wirklich will, dass irgendwer an den sicherheitsrelevanten Einstellungen (presets) was ändert.....

Bin jetzt wirklich am überlegen. Das kann ja gerade zu von System zu System unterschiedlich sein.

Und den ganzen Weg zu beschreiben finde ich auch wieder zu überladen.

Gruß,

R

PS.: Unter gnome können die sowas glaub mit gconf machen. Unter KDE fehlt das entsprechende KCM Modul. Und eine nicht DE unabhängige alternative außer manuell konnte ich zumindest noch nicht finden?

Ich möchte nochmal die Tumbleweed und openSUSE 13.2 mit Plasma5 - Lösung sauber zusammenfassen:

Deaktiviert s2disk und lässt den Knopf dafür aus dem Menü verschwinden:
Code:
pico /etc/polkit-default-privs.local
## Disable hibernate on all levels:
org.freedesktop.login1.inhibit-handle-hibernate-key no:no:no
org.freedesktop.login1.hibernate no:no:no
org.freedesktop.login1.hibernate-multiple-sessions no:no:no
org.freedesktop.login1.hibernate-ignore-inhibit no:no:no
Aktivieren mit:
Code:
set_polkit_default_privs
Nach einem relog ist es in Kraft.
 
OP
revealed

revealed

Guru
Hab grad noch am Notebook getestet mit openSUSE 13.2 KDE4 funktioniert es auch.

Und ins Wiki verfrachtet hab ich es auch schon.

Gruß,

R
 
OP
revealed

revealed

Guru
Krass!

In plasma 5 gibts schonmal einen ganz massiven Unterschied:
s2ram heisst in plasma5: Tiefschlaf
und sdisk heisst hier: Ruhezustand

Und bei KDE4 ist es genau andersrum:
s2ram heisst in plasma5: Ruhezustand
und sdisk heisst hier: Tiefschlaf

Beim Erstellen des Artikels bin ich deswegen jetzt total durcheinander gekommen.
 

Keks Dose

Member
Die Idee, Strom zu verschwenden, damit die SSD länger hält, erscheint mir total abwegig. Vielleicht schreibt die SSD im laufenden Betrieb mehr Daten als bei S2Ram...

Wie auch immer, vielen Dank für die Diskussion, die mir endlich geholfen hat, ein nervendes Problem mit smb4k zu lösen: Die von openSuse gelieferte Version verlangt root-Rechte, um Freigaben einzubinden und wieder auszuhängen. Legt man das Notebook schlafen mit eingehängten Freigaben, kann die Kiste minutenlang hängen beim Aufwachen. Also will ich schnell Ein- und Aushängen.

Dazu muss man nur in der Datei /etc/polkit-default-privs.local die Zeilen

Code:
de.berlios.smb4k.mounthelper.mount yes
de.berlios.smb4k.mounthelper.unmount yes

ändern und /sbin/set_polkit_default_privs ausführen.

Falls jemand mit Ahnung das hier liest: Wäre es besser, folgenden Code zu verwenden:

Code:
de.berlios.smb4k.mounthelper.mount auth_admin:auth_admin:yes
de.berlios.smb4k.mounthelper.unmount auth_admin:auth_admin:yes

, wie http://www.grim.se/guide/smb4k-policy empfohlen?
 
OP
revealed

revealed

Guru
Ich zwing da ja niemanden dazu. Sage ja nur ich mache das so, und "kann". Und zu deiner mount frage wäre es mir ehrlich lieber gewesen, du machst ein extra topic auf. Weil das hat hiermit überhaupt nix zu tun. Das soll nich heissen, dass ich das uninteressant finde. Aber das hilf hier inhaltlich wirklich nicht weiter.

Aber ich tippe mal auf die hier: (Wobei du dir da ne riesen Sicherheitslücke bei falscher Handhabung reinreissen kannst).

Code:
org.freedesktop.udisks2.policy:  <action id="org.freedesktop.udisks2.filesystem-mount">
org.freedesktop.udisks2.policy:    <message>Authentication is required to mount the filesystem</message>
org.freedesktop.udisks2.policy:    <message xml:lang="en_GB">Authentication is required to mount the filesystem</message>
org.freedesktop.udisks2.policy:  <action id="org.freedesktop.udisks2.filesystem-mount-system">
org.freedesktop.udisks2.policy:    <message>Authentication is required to mount the filesystem</message>
org.freedesktop.udisks2.policy:    <message xml:lang="en_GB">Authentication is required to mount the filesystem</message>
org.freedesktop.udisks2.policy:  <action id="org.freedesktop.udisks2.filesystem-mount-other-seat">
org.freedesktop.udisks2.policy:    <message>Authentication is required to mount the filesystem</message>
org.freedesktop.udisks2.policy:    <message xml:lang="en_GB">Authentication is required to mount the filesystem</message>
org.freedesktop.udisks2.policy:    <description>Mount/unmount filesystems defined in the fstab file with the x-udisks-auth option</description>
org.freedesktop.udisks2.policy:    <description xml:lang="en_GB">Mount/unmount filesystems defined in the fstab file with the x-udisks-auth option</description>
org.freedesktop.udisks2.policy:    <message>Authentication is required to mount/unmount the filesystem</message>
org.freedesktop.udisks2.policy:    <message xml:lang="en_GB">Authentication is required to mount/unmount the filesystem</message>
org.freedesktop.udisks2.policy:  <action id="org.freedesktop.udisks2.filesystem-unmount-others">
org.freedesktop.udisks2.policy:    <description>Unmount a device mounted by another user</description>
org.freedesktop.udisks2.policy:    <description xml:lang="en_GB">Unmount a device mounted by another user</description>
org.freedesktop.udisks2.policy:    <message>Authentication is required to unmount a filesystem mounted by another user</message>
org.freedesktop.udisks2.policy:    <message xml:lang="en_GB">Authentication is required to unmount a filesystem mounted by another user</message>

Gruß,

R
 

josef-wien

Ultimate Guru
Was hat udisks2 mit smb4k zu tun?

Keks Dose schrieb:
Ja, denn man soll immer nur das erlauben, was gebraucht wird.

Keks Dose schrieb:
Die Idee, Strom zu verschwenden, damit die SSD länger hält, erscheint mir total abwegig. Vielleicht schreibt die SSD im laufenden Betrieb mehr Daten als bei S2Ram...
Hast Du über diese beiden Sätze vor dem Schreiben nachgedacht? Im übrigen befaßt sich das Thema von revealed mit suspend to disk.
 

Keks Dose

Member
josef-wien schrieb:
Was hat udisks2 mit smb4k zu tun?
Ja, nichts, oder?

Keks Dose schrieb:
Ja, denn man soll immer nur das erlauben, was gebraucht wird.
Äh, ja, sch..., nein, danke! -- Ich hatte nur auf einen Satz mehr spekuliert: was für Rechte setzen denn die drei Angaben, also z.B. yes:no:yes ?

Keks Dose schrieb:
Die Idee, Strom zu verschwenden, damit die SSD länger hält, erscheint mir total abwegig. Vielleicht schreibt die SSD im laufenden Betrieb mehr Daten als bei S2Ram...
Hast Du über diese beiden Sätze vor dem Schreiben nachgedacht? Im übrigen befaßt sich das Thema von revealed mit suspend to disk.
Nachgedacht, klar, meine Finger schreiben noch nicht von alleine. Aber bitte, ich hätte sagen sollen: Die Idee, Strom zu verschwenden, damit die SSD länger hält, erscheint mir total abwegig. Vielleicht schreibt die SSD im laufenden Betrieb mehr Daten, als wenn man ab und zu den Rechner schlafen legt. Wenn ich tagsüber eine Pause habe => s2ram; wenn ich abends aufhöre zu arbeiten: s2disk. So, und nun will jemand das Ding 12 Stunden durchlaufen lassen, um Abnutzung seiner SSD zu sparen? Strom kostet doch auch Geld.

Gruß,

Alexander
 
Oben