Skript aus einem Programm heraus mit erhöhten Berechtigungen ausführen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Skript aus einem Programm heraus mit erhöhten Berechtigungen ausführen

    Hallo,

    über eine auf StackOverflow diskutierten Lösung lassen sich Terminal Kommandos im Swift-Code ausführen, was sich beispielsweise für "git --version" sehr gut eignet. Möchte ich nun aber über einen neuen Prozess den Status auslesen: "cd /absolute/path/to/repo/ && git status", scheitert der zweite Part des Befehls an mangelnden Berechtigungen.

    Ich dachte, dass ein Prozess mit den gleichen Berechtigungen ausgeführt wird, wie das Programm und das wiederum mit denen des angemeldeten Benutzers, aber es scheint, als bekämen Prozesse und Threads aus Sicherheitsgründen nur minimale Berechtigungen (was ja grundsätzlich sehr erwünschenswert ist).

    Es ginge mir also darum, für einen bzw. mehrere Prozesse User Privilegien zu erlangen. Ist das grundsätzlich möglich? In der Doku habe ich die Authorization Services gefunden, käme das für mein Anliegen in Frage?

    Mich würde außerdem interessieren, ob AppleScript genau so mächtig ist wie die Bash oder zumindest die Interaktion mit git erlaubt (also ein Programmaufruf mit Parameterübergabe und dem speichern der Ausgabe als String - und das alles mit User Privilegien).

    Vielen Dank und einen guten Start ins Wochenende! ;)
  • Tazaki schrieb:


    Ich dachte, dass ein Prozess mit den gleichen Berechtigungen ausgeführt wird, wie das Programm und das wiederum mit denen des angemeldeten Benutzers, aber es scheint, als bekämen Prozesse und Threads aus Sicherheitsgründen nur minimale Berechtigungen (was ja grundsätzlich sehr erwünschenswert ist).
    Von woher hast Du denn das?

    Dein Problem liegt vermutlich wo anders. Genauso wird „git status“ im Terminal gut gehen. Da liegt dein Problem eher im Code. „cd /absolute/path/to/repo/ &&“ brauchst Du nicht. Stichwort „current working directory“.
  • Ich hatte beim Versuch etwas hilfreiches zu finden sehr viele Tabs offen, die Quelle finde ich leider nicht mehr.. dann ist es demnach also falsch? Also welche Berechtigungen besitzt ein Prozess?

    Die Befehle habe ich zuerst immer erst im Terminal getestet und da haben beide funktioniert. Mir ist beim Testen gerade aber aufgefallen, dass es funktioniert, wenn ich die App Sandbox deaktiviere. Dabei benötige ich keinen Zugriff auf die dort aufgelisteten Ressourcen (Camera, Contacts, Fotos, usw.). Gibt es einen Weg, lesenden Zugriff auf Documents und Desktop zu erfragen und die App trotzdem im Sandkasten auszuführen?

    /Update: eventuell bekomme ich es mit User Selected Files (lesend) hin, wenn ich das Repo über einen Open-Dialog festlege.

    /noch ein Update: mit den User Selected Files funktioniert es! :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tazaki ()