it-swarm.com.de

Autorisieren Sie einen Nicht-Administrator-Entwickler in Xcode / Mac OS

Ich verwende ein Standard-Benutzerkonto für meine täglichen Aufgaben unter Mac OS. Seit dem Upgrade auf Snow Leopard werde ich gebeten, Folgendes zu tun, wenn ein Programm in Xcode ausgeführt wird:

"Geben Sie den Namen und das Kennwort eines Benutzers in die Gruppe" Developer Tools "ein, damit Developer Tools Access Änderungen vornehmen kann."

Ich kenne zwar den Benutzernamen/das Passwort des Administrators, aber das ist ärgerlich (obwohl es nur einmal pro Anmeldung erforderlich ist).

Der Zugriff auf die Entwicklertools fordert von der Anwendung gdb-i386-Apple-darwin Rechte für "system.privilege.taskport.debug" an.

Was ist der beste Weg, um dies zu umgehen?

106
Andrew Cain

Sie müssen Ihren OS X-Benutzernamen zur Gruppe _developer Hinzufügen. Weitere Informationen finden Sie in den Beiträgen in diesem Thread . Der folgende Befehl sollte den Trick ausführen:

Sudo dscl . append /Groups/_developer GroupMembership <username>
131
Ned Deily

Endlich konnte ich es mit DevToolsSecurity -enable Auf dem Terminal loswerden. Vielen Dank an @ joar_at_work !

[~ # ~] fyi [~ # ~] : Ich bin auf Xcode 4.3 und habe die Deaktivierung gedrückt Knopf, wenn es zum ersten Mal gestartet wird, frag nicht warum, nimm einfach an, mein Hund hat mich dazu gebracht :)

23
chunkyguy
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
9
cdespinosa

Sie sollten sich der Gruppe "Entwicklertools" hinzufügen. Die allgemeine Syntax zum Hinzufügen eines Benutzers zu einer Gruppe in OS X lautet wie folgt:

Sudo dscl . append /Groups/<group> GroupMembership <username>

Ich glaube, der Name für die DevTools-Gruppe ist _developer.

8
phoebus

Die Lösung von Ned Deily funktioniert einwandfrei, vorausgesetzt, Ihr Benutzer darf Sudo.

Ist dies nicht der Fall, können Sie su zu einem Administratorkonto hinzufügen. Verwenden Sie dann sein dscl . append /Groups/_developer GroupMembership $user, wobei $ user der Benutzername ist.

Ich dachte jedoch fälschlicherweise, dass dies nicht der Fall ist, weil ich den Namen des Benutzers im Befehl falsch eingegeben habe und dies im Hintergrund fehlschlägt.

Nach der Eingabe dieses Befehls sollten Sie ihn daher überprüfen. Dies überprüft, ob sich $ user in $ group befindet, wobei die Variablen jeweils den Benutzernamen und den Gruppennamen darstellen.

dsmemberutil checkmembership -U $user -G $group

Dieser Befehl gibt entweder die Nachricht user is not a member of the group oder user is a member of the group.

3
Kheldar

Antwort vorgeschlagen von @Stacy Simpson:

Wir haben Probleme mit dem in diesen Threads beschriebenen Problem, und keine der Auflösungen scheint zu funktionieren:

Da ich neu bei SO bin, kann ich in keinem der Threads posten. (Die erste ist tatsächlich geschlossen und ich bin mit der Begründung der Lokalisierung nicht einverstanden ...)

Wie auch immer, wir haben eine Problemumgehung mit AppleScript erstellt, an der die Leute interessiert sein könnten. Das folgende Skript sollte vor dem Start Ihres automatisierten Tests asynchron ausgeführt werden:

osascript <script name> <password> &

Hier ist das Skript:

on run argv
    # Delay for 10 seconds as this script runs asynchronously to the automation process and is kicked off first.
    delay 10

    # Inspect all running processes
    tell application "System Events"
        set ProcessList to name of every process
        # Determine if authentication is being requested
        if "SecurityAgent" is in ProcessList then
            # Bring this dialogue to the front
            tell application "SecurityAgent" to activate
            # Enter provided password
            keystroke item 1 of argv
            keystroke return
        end if
    end tell
end run

Wahrscheinlich nicht sehr sicher, aber es ist die beste Lösung, die wir gefunden haben, um Tests ohne Benutzereingriff ausführen zu können.

Hoffentlich bekomme ich genug Punkte, um die Antwort zu posten. oder jemand kann den Schutz dieser Frage aufheben. Grüße.

2
Martin Turjak

Hier ist eine bessere Lösung von
Mac OS X möchte beim Kompilieren des Projekts den Systemschlüsselbund verwenden

  1. Öffnen Sie den Schlüsselbund.
  2. Entsperren Sie in der oberen linken Ecke den Schlüsselbund (falls dieser gesperrt ist).
  3. Wählen Sie den Systemschlüsselbund in der oberen linken Ecke.
  4. Suchen Sie Ihr Vertriebszertifikat und klicken Sie auf das Dreieck.
  5. Doppelklicken Sie unter Ihrem Vertriebszertifikat auf "Privater Schlüssel".
  6. Wechseln Sie im Popup zur Registerkarte Zugriffssteuerung.
  7. Wählen Sie "Allen Anwendungen den Zugriff auf dieses Element erlauben".
  8. Speichern Sie die Änderungen.
  9. Schließe alle Fenster.
  10. Führen Sie die Anwendung aus.
1
Raj

Ich bin auf Snow Leopard und dieser hat für mich nicht ganz funktioniert. Aber das folgende Verfahren hat funktioniert:

  1. Fügen Sie zunächst ein weiteres Konto mit Administratorrechten hinzu, indem Sie unter "Konten" die Option "Benutzer darf diesen Computer verwalten" aktivieren, z. B. ein Konto mit dem Benutzernamen test
  2. Eingeloggt in den Test Account
  3. Starte Xcode, kompiliere und starte mein iPhone-Projekt. Alles in Ordnung, es wurden keine Fehler im Zusammenhang mit Berechtigungen ausgegeben
  4. Abgemeldet vom Test Konto
  5. Mit einem anderen Konto mit Administratorrechten angemeldet
  6. Entfernen Sie die Administratorrechte aus dem Test - Konto, indem Sie das Häkchen bei "Benutzer darf diesen Computer verwalten" unter "Konten" entfernen
  7. Zurück in den Test Account eingeloggt
  8. IPhone-Projektverzeichnis gelöscht und erneut aus dem Repository ausgecheckt (in meinem Fall svn)
  9. Starte Xcode, kompiliere und starte das Projekt. Ich habe keine Fehler bekommen und die App lief gut im iPhone Simulator.
1
Naveen Kansara

Nachdem du gelaufen bist:

Sudo dscl . append /Groups/_developer GroupMembership <username>

laut der obigen Antwort können Sie noch aufgefordert werden, Ihr eigenes Passwort einzugeben:

Wir benötigen die Berechtigung eines Administrators, um den Debugger auszuführen. Dies geschieht nur einmal pro Anmeldesitzung.

Was es wirklich bedeutet, ist jeder _ Entwickler Gruppenmitglied-Benutzer, so dass nur Ihr Nicht-Administrator-Benutzer/Passwort hier funktioniert, aber um es vollständig zu entfernen (keine Eingabeaufforderungen danach) einen Neustart) müssen Sie auch ausführen:

Sudo DevToolsSecurity -enable

(Wenn Sie es mit Sudo als Administrator/als root ausführen, können Sie es auch ohne Aufforderung zur Eingabe eines GUI-Passworts aus der Ferne ausführen.)

0
timofei7

Für mich hat der Vorschlag in folgendem Thread geholfen:

Stop "Der Zugriff auf Entwicklertools muss die Kontrolle über einen anderen Prozess übernehmen, damit das Debuggen fortgesetzt werden kann"

Es wurde vorgeschlagen, den folgenden Befehl in der Terminalanwendung auszuführen:

Sudo /usr/sbin/DevToolsSecurity --enable
0
Mike Gledhill