Ondersteuning > Programmeren
python PyQT6 programma werkt niet als root (wel als user)
peer:
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:
--- Code: ---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.
--- Einde van code ---
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??
vanadium:
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.
peer:
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.
peer:
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:
--- Code: ---echo wachtwoord | if su -c true root; then echo "Correct password"; fi
--- Einde van code ---
Deze 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.
vanadium:
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.
Navigatie
[0] Berichtenindex
[#] Volgende pagina
Naar de volledige versie