Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: python PyQT6 programma werkt niet als root (wel als user)  (gelezen 3241 keer)

Offline peer

  • Lid
python PyQT6 programma werkt niet als root (wel als user)
« Gepost op: 2025/04/17, 14:17:49 »
os: debian 12 kde plasma X11

Ik ben een gui wrapper aan het maken voor dd in python PyQt6.
Het programma start normaal op als ik het als normale gebruiker uitvoer. maar als ik het programma als root uitvoer dan stopt het op het moment dat de grafische omgeving wordt geladen.
Dit is de foutmelding in de terminal:
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: vnc, minimalegl, linuxfb, minimal, offscreen, wayland-egl, xcb, vkkhrdisplay, wayland, eglfs.

Het lijkt erop alsof de instellingen voor het rootaccount niet goed staan of dat het rootaccount beveiligd is voor grafische programma's.
Is hie een eenvoudige (oplossing) voor te vinden??

Offline vanadium

  • Lid
Re: python PyQT6 programma werkt niet als root (wel als user)
« Reactie #1 Gepost op: 2025/04/17, 14:35:50 »
Grafische programma's ontwerpen om als root te draaien is jaren negentig. Dit is niet meer de praktijk van vandaag. En op moderne display managers gebaseerd op Wayland is dat al helemaal niet meer mogelijk.

Wat je in plaats moet doen, is een grafische interface ontwerpen die altijd als gebruiker draait. In dat programma start je dan een niet-grafisch proces op als root, enkel om dat te doen enkel als root gedaan kan worden.

Offline peer

  • Lid
Re: python PyQT6 programma werkt niet als root (wel als user)
« Reactie #2 Gepost op: 2025/04/17, 15:12:01 »
Zoiets dacht ik al. Inmiddels heb ik ondekt dat het programma wel draait als ik het vooraf laat gaan door het commando sudo Maar dat is ook niet goed sudo is immers niet bedoeld voor grafische programma's. Dat ga ik dus niet doen. Ook kan ik in kde een starter aanmaken waarin ik het programma als root laat uitvoeren. Dat werkt ook. Maar of dit lijkt mij ook een variant die niet echt wenselijk is.
Dus ik ga maar eens nadenken over jouw voorstel.   

Offline peer

  • Lid
Re: python PyQT6 programma werkt niet als root (wel als user)
« Reactie #3 Gepost op: 2025/04/17, 17:09:33 »
probleem is dat ik het wachtwoord van root nodig heb. Dit kan ik met een grafische dialog opvragen en dan kan ik het later bij het sudo command (sudo <wachtwoord> | sudo -S dd......) invoegen.

Maar ik loop tegen het probleem aan dat ik het root wachtwoord niet kan checken in het programma(althans zonder root).
Ik heb een bash regel gevonden waarmee dit wel zou kunnen:
echo wachtwoord | if su -c true root; then   echo "Correct password"; fiDeze regel werkt in de terminal maar in python lukt het niet. Misschien is de regel te complex voor de interpreter.
Ander probleem is dat het python program makkelijk leesbaar is en aan te passen zodat een wachtwoord ook gemakkelijk zichtbaar gemaakt kan worden. Dat voelt niet echt fijn.

Offline vanadium

  • Lid
Re: python PyQT6 programma werkt niet als root (wel als user)
« Reactie #4 Gepost op: 2025/04/17, 21:07:23 »
Hoe je het best oplost, weet ik helaas niet. In plaats van het paswoord te capteren en te testen (wat je nooit zou mogen doen), laat je de gebruiker best zelf het paswoord ingeven, met "pkexec" als het een grafisch programma is. Je aanpak om het paswoord vooraf te testen met bash wel op Debian werken, maar bijvoorbeeld  niet op Ubuntu: daar is de root account niet geactiveerd.

Offline peer

  • Lid
Re: python PyQT6 programma werkt niet als root (wel als user)
« Reactie #5 Gepost op: 2025/04/18, 10:21:12 »
geprobeerd: pkexec ./ddgui.py
Ik krijg dezelfde foutmelding als wanneer ik eerst het su - commando geef. Vermoedelijk moet ik dan ook nog een policy-bestand maken voor dgui.py. Dat gaat me te ver.

Ik moet ook eerst nog goed uitzoeken wat er gebeurt als ik bashcommando's in python mbv. subprocess wil uitvoeren. Ik merk dat de output niet altijd is wat ik verwacht en ik ben een beetje huiverig omdat ik een paar jaar geleden heb geprobeerd om het dd commando vanuit python uit te voeren. Ik had een werkend commando (getest in de terminal) naar python gekopieerd en bij het uitvoeren bleek dat mijn hdd beschreven werd ipv van de usbstick. Ik snap nog steeds niet hoe dit fout heeft kunnen gaan omdat ik het werkende commando gewoon gekopieerd had zonder aan te passen. Grote kans dat ik dit programma niet af ga maken. Maar dat geeft niet. Ik leer er in ieder geval van