Hallo Linuxphone-Fans,
ich habe da mal die Taschenlampen App etwas vereinfacht und von Eurem Phosh aufrufbar gemacht.
Pinephone: Taschenlampen App – die Zweite
Auf Github habe ich Euch die Sourcen dafĂŒr heute bereitgestellt. Ok, ok.. es ging nicht eher, ich hab es erst heute geschrieben đ
https://github.com/Cyborgscode/pinephone/tree/main/flashlight
Der Unterschied von dieser Version zu der Bash Version mit Sudo ist, es kommt ohne Sudo aus … und ist nicht mehr Bash, sondern C . Alles was Ihr zum Kompilieren braucht, ist das gcc Packet und das eine oder andere Develpaket. In einem Develpaket sind Strukturen, Definition und Macros gespeichert, die fĂŒr die Benutzung einer Library benötigt werden. Man kann da auch andere Sachen reinschreiben, aber das fĂŒhrt jetzt zu weit.
Wie bauen wir die neue Taschenlampe jetzt?
Wenn wir uns das Makefile ansehen, welches hier wirklich ein Makefile ist und nicht ein File fĂŒr den „make“ Befehl, ist die Sache ganz einfach:
gcc flashlight.c -o flashlight
Damit bauen wir das Binary, also die ausfĂŒhrbare Datei. Wenn Ihr das direkt auf Eurem Pinephone macht, wird da automatisch ein fĂŒr die laufende Architektur gedachtes File erzeugt. Hier ist das „aarch64“. Wenn Ihr das spaĂeshalber auf Eurem groĂen PC macht, und dann die Datei auf das Pine kopiert, werdet Ihr feststellen, daĂ es nicht funktioniert. Auf Eurem groĂen PC wurde es fĂŒr x86_64 gebaut.
Ist das Binary fertig, setzen wir die nötigen Rechte: Hier „Jeder darf es ausfĂŒhren und bei AusfĂŒhrung darf es das als Root tun“. Wir erinnern uns: Rootrechte sind nötig, um die LED Helligkeit setzen zu dĂŒrfen.
chmod 755 flashlight
chmod u+s flashlight
Nun kopieren wir das Binary „flashlight“ an seinen AusfĂŒhrungsort: /usr/local/bin
rm -f /usr/local/bin/flashlight
mv flashlight /usr/local/bin/
Jetzt noch die Desktopdatei ins passende Applicationsverzeichnis verschieben:
rm -f /usr/share/applications/flashlight.desktop
cp flashlight.desktop /usr/share/applications/
Wieso ist hier „cp“ im Spiel und nicht „mv“ wie beim Binary?
Vielleicht wollt Ihr ja mal ein Update machen und dann wĂ€r es doch Schade, wenn das Desktopfile weg wĂ€re. Das Binary baut Ihr ja jedes mal neu, ob das fĂŒr einen zweiten Durchlauf noch vorhanden ist, spielt keine Rolle. Das Desktopfile wĂ€re dann weg đ
Wieso ist das dem Sudo-Bash Konstrukt ĂŒberlegen?
FĂŒr das korrekte Sudofile muĂ man wissen, wie der Username des ausfĂŒhrenden Benutzers lautet. Seine UID wĂŒrde vielleicht auch noch gehen. AuĂerdem muĂten wir erstmal die sudoers-Datei Ă€ndern, damit die Anweisung ausgefĂŒhrt wurde. Das fĂ€llt alles komplett weg.
Damit das Programm so auf jeder Distribution einsetzbar, völlig egal von den UmstÀnden.
Gibt es Sicherheitsbedenken?
Die gibt es immer, es ist ein SUID Programm. Nun ist in dem Programm nichts drin, was gefĂ€hrlich ist, solange die echten Betriebssystem Libs benutzt werden. Schafft es ein Angreifer, dem Befehl eine eigene Kopie einer benutzten System-Lib unterzujubeln, und dafĂŒr gibt es Möglichkeiten, könnte er die FunktionsaufrĂŒfe nutzen und einfach irgendwas anderes machen.
Ich denke aber nicht, daĂ das mit diesem Build möglich ist. Falls Ihr Verbesserungen habt, schickt einen Pull-Request in Github-Repo oder lasst einen Kommentar da. C ist nicht gerade mein Steckenpferd und die GCC Options schon gar nicht đ
Wann kommt das endlich in den Fedora Build rein?
Ăberraschung !… Torbuntu baut schon dran đ