0

Ich mache eine Linux-Anwendung mit Python3 und Qt5. Wenn Benutzer diese Anwendung installieren, erstellt es einige Dateien in /usr/share Ordner. Um die Dateien zu erstellen, benötigt die Anwendung Root-Zugriff.Wie Root-Zugriff auf Linux-Anwendung geben

Ich plane, dass die Anwendung eine Eingabeaufforderungsbox für den Benutzer anzeigt, und der Benutzer wird das root-Passwort eingeben, um Root-Zugriff auf die Anwendung zu geben. Aber ich weiß nicht, wie kann ich Root-Zugriff auf die Anwendung mit diesem Passwort geben?

+1

Normalerweise bitten Sie das Betriebssystem, die Erhöhung zu behandeln. Einmal erhöht, kopieren Sie einfach die Dateien und ändern Sie die Aufschläge. Sie behandeln niemals das Passwort des Benutzers. – jww

+1

Es ist die Installation, nicht das Programm selbst, das als root ausgeführt werden sollte. Lassen Sie den Benutzer einfach 'sudo installieren' und scheitern Sie ansonsten mit einer hilfreichen Fehlermeldung. – rodrigo

Antwort

1

Dies ist eine Welt der Schmerzen. Es ist sicherlich möglich, dass eine Anwendung, die als normaler Benutzer ausgeführt wird, bestimmte Aktionen als privilegierter Benutzer ausführt, aber ich denke immer, dass die Notwendigkeit, dies zu tun, darauf hindeutet, dass die Installation und Wartung nicht richtig durchdacht wurde.

Um Privilegien zu erhöhen, und angenommen, das "sudo" ist nicht geeignet (es wird wahrscheinlich nicht in diesem Fall sein), müssen Sie entweder ein Betriebssystem-Tool verwenden, das den Job (Aufforderung zur Eingabe von Anmeldeinformationen und dann etwas ausführen), oder implementieren Sie einen Helfer für Ihr Programm, das suid-Attribute auf seiner ausführbaren Datei hat.

Ich erwarte, dass alle Linux-Systeme Zugriff auf "su" haben, aber die Standard-su hat keine grafische Schnittstelle, was ein Drag für GUI-Programme ist. Sie können die Benutzeranmeldeinformationen in Ihrer Anwendung sammeln und sie dann an su übergeben (was fiddly ist), oder Sie können eines der verschiedenen grafischen Dienstprogramme su-type wie gksu verwenden. Das funktioniert natürlich nur, wenn diese Dienstprogramme auf Ihrer Plattform verfügbar sind.

Wenn Sie den Weg gehen, Ihr Programm mit einem suid-Teil zu versehen, der die Arbeit erledigt, die erhöhte Privilegien benötigt, müssen Sie in Bezug auf Sicherheit äußerst vorsichtig sein - wie Sie die Anmeldeinformationen sammeln, wie Sie überprüfen, dass Eindringlinge nicht können Dinge tun, die sie nicht sollten, etc.

Ehrlich gesagt, es ist eine Dose Würmer. Ich würde denken, dass es fast immer besser ist, Ihrer Anwendung ein Installations- oder Wartungsmodul zur Verfügung zu stellen, das als root ausgeführt werden muss. Auf diese Weise wird die ganze harte Arbeit von der Plattform erledigt.

Verwandte Themen