Autorizzare uno sviluppatore non-admin in Xcode / Mac OS
-
11-09-2019 - |
Domanda
Io uso un account utente standard per le mie attività quotidiane su Mac OS. Dal momento che l'aggiornamento a Snow Leopard mi viene chiesto di eseguire le seguenti operazioni quando un programma viene eseguito all'interno di Xcode:
"Digitare il nome e la password di un utente nel gruppo 'Developer Tools' per consentire Developer Tools effettuare le impostazioni"
Anche se so che l'admin username / password, questo è fastidioso (anche se solo una volta per ogni richiesta di accesso).
L'accesso strumenti di sviluppo sta chiedendo diritti di "system.privilege.taskport.debug" dall'applicazione gdb-i386-apple-Darwin.
Qual è il modo migliore per aggirare questo?
Soluzione
È necessario aggiungere il nome utente OS X al gruppo _developer
. Vedere i messaggi in questo discussione per ulteriori informazioni. Il seguente comando dovrebbe fare il trucco:
sudo dscl . append /Groups/_developer GroupMembership <username>
Altri suggerimenti
Infine, sono stato in grado di sbarazzarsi di esso utilizzando DevToolsSecurity -enable
su Terminal.
Grazie alla @joar_at_work !
FYI : sono in Xcode 4.3, e premette il Disattiva quando ha lanciato per la prima volta, non chiedere perché, basta assumere il mio cane ha fatto fare a me:)
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
Si dovrebbe aggiungere se stessi al gruppo Developer Tools. La sintassi generale per l'aggiunta di un utente a un gruppo in OS X è la seguente:
sudo dscl . append /Groups/<group> GroupMembership <username>
Credo che il nome per il gruppo DevTools è _developer
.
La soluzione di Ned deily funziona perfettamente bene, a condizione che l'utente è autorizzato a sudo
.
Se non lo è, si può su
ad un account amministratore, quindi utilizzare il suo dscl . append /Groups/_developer GroupMembership $user
, dove $ utente è il nome utente.
Tuttavia, ho erroneamente pensato che non lo fece perché erroneamente digitato il nome dell'utente nel comando e viene a mancare in silenzio.
Quindi, dopo aver inserito questo comando, si dovrebbe prova di controllarlo. Questo controlla se $ utente è nel gruppo di $, dove le variabili rappresentano rispettivamente il nome utente e il nome del gruppo.
dsmemberutil checkmembership -U $user -G $group
Questo comando o stampare il messaggio o user is not a member of the group
user is a member of the group
.
Risposta suggerita da @Stacy Simpson:
sono alle prese con il problema descritto in questi fili e nessuna delle risoluzioni sembra funzionare:
- Stop "sviluppatore accesso strumenti ha bisogno di prendere il controllo di un altro processo per il debug per continuare" avviso
- Autorizza uno sviluppatore non-admin in Xcode / Mac OS
Come io sono nuovo a SO, non posso postare in entrambi i thread. (Il primo è in realtà chiuso e non sono d'accordo con il ragionamento di localizzazione ...)
In ogni caso, abbiamo creato un work-around usando AppleScript che le persone potrebbero essere interessati a Lo script di seguito deve essere eseguito in modo asincrono prima di lanciare il test automatizzato:.
osascript <script name> <password> &
Ecco lo script:
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
Probabilmente non molto sicuro, ma è il miglior lavoro-around che è venuta in mente per permettere test di eseguire senza richiedere l'intervento dell'utente.
Si spera, posso ottenere abbastanza punti per inviare la risposta; o, qualcuno può rimuovere la protezione a questa domanda. Saluti.
Qui è una soluzione migliore da
Mac OS X vuole usare portachiavi di sistema quando si compila il progetto
- Apri Accesso Portachiavi.
- In alto a sinistra, sbloccare il portachiavi (se è bloccato).
- Scegli il portachiavi di sistema dall'angolo in alto a sinistra.
- Trova il tuo certificato di distribuzione e fare clic sul triangolo.
- Fare doppio clic su ‘chiave privata’ sotto il tuo certificato di distribuzione.
- Nel popup, vai alla scheda Controllo di accesso.
- Seleziona ‘Tutte le applicazioni possono accedere a questo oggetto’.
- Salvare le modifiche.
- Chiudere tutte le finestre.
- Eseguire l'applicazione.
Sono on Snow Leopard e questo non ha funzionato del tutto per me. Ma la seguente procedura ha funzionato:
- In primo luogo ha aggiunto un altro account con privilegi di amministratore barrando "L'utente può amministrare questo computer" in Account, ad esempio un account con nome utente test
- Inserito nel test conto
- Lanciata Xcode, compilato e corse il mio progetto iPhone. Tutto ok, nessun errore sono stati gettati relative alle autorizzazioni
- disconnesso da test conto
- Accesso effettuato con i privilegi di amministratore di un altro account con
- ha tolto il priviliges Admin dal test conto togliendo il segno di spunta da "L'utente può amministrare questo computer" in Account
- Collegato indietro nel test conto
- soppresso directory del progetto iPhone e di nuovo controllato dal repository (nel mio caso svn)
- Lanciata Xcode, compilato e corse il progetto. Non ho ricevuto eventuali errori e l'App ha funzionato bene in iPhone Simulator.
Dopo aver eseguito:
sudo dscl . append /Groups/_developer GroupMembership <username>
per la risposta di cui sopra, si può ancora get chiesto di inserire la vostra password:
Abbiamo bisogno di autorizzazione da un utente amministratore per eseguire il debugger. Questo avverrà solo una volta per sessione di login.
Che cosa significa in realtà è un qualsiasi _developer utente groupmember così appena l'utente non-admin / password funzionerà qui, ma per sbarazzarsi di completamente (nessuna richiesta dopo un riavvio) avrete anche bisogno per eseguire:
sudo DevToolsSecurity -enable
(in esecuzione con sudo come un utente amministratore / root farà in modo che si può fare in remoto, senza una richiesta di password gui)
Per quanto mi riguarda, ho trovato il suggerimento in questo thread ha aiutato:
Si consiglia di eseguire il seguente comando nella Terminale applicazione:
sudo /usr/sbin/DevToolsSecurity --enable