Xcode / Mac OS'de yönetici olmayan bir geliştiriciyi yetkilendirin


109

Mac OS'de günlük görevlerim için standart bir kullanıcı hesabı kullanıyorum. Snow Leopard'a yükseltme yaptığımdan beri, Xcode içinden bir program çalıştırıldığında aşağıdakileri yapmam isteniyor:

"Geliştirici Araçları Erişiminin değişiklik yapmasına izin vermek için 'Geliştirici Araçları' grubuna bir kullanıcının adını ve şifresini yazın"

Yönetici kullanıcı adını / şifresini bilmeme rağmen, bu can sıkıcı bir durum (ancak her giriş için bir kez gerekli).

Geliştirici araçları erişimi, gdb-i386-apple-darwin uygulamasından "system.privilege.taskport.debug" için haklar istiyor.

Bunu aşmanın en iyi yolu nedir?

Yanıtlar:


134

OS X kullanıcı adınızı _developergruba eklemeniz gerekir . Daha fazla bilgi için bu konudaki gönderilere bakın . Aşağıdaki komut hile yapmalıdır:

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

1
Bu çözüm benim için yaklaşık 10 dakika çalıştı ve sonra bir nedenden dolayı kullanıcı adımı / şifremi tekrar sormaya başladı. Tekrar Terminal'e yazmayı denedim ama artık yanıt vermiyor.
jowie

Bu benim için çalışıyor ve şimdiye kadar sorunum yok. Sadece referans için not edildi.
eonil

9
-u <name-of-account-with-root-access>Seçeneklere eklenene kadar bu çözüm benim için işe yaramadı . Yani tam dscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
komutum

1
Bu satırı sürekli bir entegrasyon betiğine eklerseniz, 'ekleme' yerine 'birleştirme' kullanmayı düşünmelisiniz. Zaten varsa Birleştirme onu eklemeyecektir. Daha fazla ayrıntı için 'man dscl'ye bakın.
Russ Van Bert

1
Bu beni gruba eklemek için çalıştı, ancak yalnızca @Kheldar önerisini önce bir kök hesaba su vermek için kullandıktan sonra.
b01

24

Sonunda DevToolsSecurity -enableTerminal'i kullanarak ondan kurtulmayı başardım . @Joar_at_work'e teşekkürler !

Bilginize : Xcode 4.3'teyim ve ilk başlatıldığında devre dışı bırak düğmesine bastım, nedenini sormayın, sadece köpeğimin bana yaptırdığını varsayın :)


2
DevToolsSecurity'den bahsettiğiniz için +1. Böyle bir aracın var olduğu hakkında hiçbir fikrim yoktu. Hemen yerini hiç :) Ben devre dışı tekrar yap istediğini ve bu araç sayesinde nihayet başardı, ters problem vardı -enableile -disablebeklendiği gibi eserler ve o!
Mecki

1
Bu komutun hiçbir etkisi yok gibi görünüyor. Xcode 4.3, -enable veya -disable kullanılıp kullanılmadığına bakılmaksızın yine de _developer grubundaki birinin kimlik doğrulamasını gerektirir.
wcochran

Sadece açıklığa kavuşturmak için, bu adım, en azından bazı durumlarda, kullanıcıyı _developer grubunadscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

XCode 7.3 ile macOS "El Capitan" üzerinde çalışmıyor gibi görünüyor. @ Kheldar'ın çözümü benim için çalıştı.
Laryx Decidua

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

5
Benim mütevazı görüşüme göre, bu cevap gerçekten ne yaptığını biraz daha açıklamaktan fayda sağlayabilir. Sistemimde sudo rm -rf / yazmayı sevmediğimden değil, ama benim fikrimi anladın. : D
Kheldar

8

Kendinizi Geliştirici Araçları grubuna eklemelisiniz. OS X'te bir gruba kullanıcı eklemenin genel sözdizimi aşağıdaki gibidir:

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

DevTools grubunun adının olduğuna inanıyorum _developer.


3

Ned Deily'nin çözümü, kullanıcınızın izin vermesi koşuluyla mükemmel şekilde çalışıyor sudo.

Değilse, subir yönetici hesabına girebilir , ardından onun dscl . append /Groups/_developer GroupMembership $userkullanıcı adını kullanabilirsiniz , burada $ user kullanıcı adıdır.

Ancak, yanlışlıkla komutta kullanıcının adını yanlış yazdığım ve sessizce başarısız olduğu için bunun olmadığını düşündüm.

Bu nedenle, bu komutu girdikten sonra, kontrol etmelisiniz. Bu, $ user'ın $ group içinde olup olmadığını kontrol eder, burada değişkenler sırasıyla kullanıcı adını ve grup adını temsil eder.

dsmemberutil checkmembership -U $user -G $group

Bu komut ya mesajı yazdıracak ya user is not a member of the groupda user is a member of the group.


2
Teşekkürler! Bu benim için çalıştı! OS X Mavericks için çalışan komutlar dscl . append /Groups/_developer GroupMembership username vedsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode

2

@Stacy Simpson tarafından önerilen cevap:

Bu başlıklarda açıklanan sorunla mücadele ediyoruz ve çözümlerin hiçbiri işe yaramıyor gibi görünüyor:

SO'da yeniyim, her iki konuya da mesaj gönderemiyorum. (İlki aslında kapalı ve yerelleştirme mantığına katılmıyorum ...)

Her neyse, AppleScript kullanarak insanların ilgilenebileceği bir çözüm oluşturduk. Aşağıdaki komut dosyası, otomatik testinizi başlatmadan önce eşzamansız olarak yürütülmelidir:

osascript <script name> <password> &

İşte senaryo:

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

Muhtemelen çok güvenli değil, ancak kullanıcı müdahalesi gerektirmeden testlerin çalışmasına izin vermek için bulduğumuz en iyi çözüm budur.

Umarım cevabı göndermek için yeterli puan alabilirim; veya birisi bu sorunun korumasını kaldırabilir. Saygılarımızla.


2

İşte Mac OS X'ten daha iyi bir çözüm
, projeyi derlerken sistem anahtar zincirini kullanmak istiyor

  1. Anahtar Zinciri Erişimini açın.
  2. Sol üst köşede anahtar zincirinin kilidini açın (kilitliyse).
  3. Sol üst köşeden Sistem anahtar zincirini seçin.
  4. Dağıtım sertifikanızı bulun ve açıklama üçgenini tıklayın.
  5. Dağıtım sertifikanızın altındaki "Özel anahtar" ı çift tıklayın.
  6. Açılır pencerede Erişim Kontrolü sekmesine gidin.
  7. 'Tüm uygulamaların bu öğeye erişmesine izin ver'i seçin.
  8. Değişiklikleri kaydedin.
  9. Tüm pencereleri kapatın.
  10. Uygulamayı çalıştırın.


1

Kar Leoparındayım ve bu benim için pek işe yaramadı. Ancak aşağıdaki prosedür işe yaradı:

  1. Önce Hesaplar altında "Kullanıcının bu bilgisayarı yönetmesine izin ver" seçeneğini işaretleyerek yönetici ayrıcalıklarına sahip başka bir hesap eklendi, örneğin kullanıcı adı testine sahip bir hesap
  2. Giriş testi hesabında
  3. Xcode'u başlattım, iPhone projemi derledim ve çalıştırdım. Tamam, izinlerle ilgili hiçbir hata atılmadı
  4. Test hesabından çıkış yapıldı
  5. Yönetici ayrıcalıklarına sahip başka bir hesapla giriş yaptınız
  6. Hesaplar altındaki "Kullanıcının bu bilgisayarı yönetmesine izin ver" onay işaretini kaldırarak test hesabından yönetici ayrıcalıklarını aldı
  7. Test hesabına tekrar giriş yaptınız
  8. İPhone proje dizinini sildi ve tekrar depodan kontrol edildi (benim durumumda svn)
  9. Xcode'u başlattı, projeyi derledi ve çalıştırdı. Herhangi bir hata almadım ve Uygulama iPhone Simulator'da iyi çalıştı.

0

Koştuktan sonra:

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

Yukarıdaki cevaba göre, yine de kendi şifrenizi girmeniz istenebilir:

Hata ayıklayıcıyı çalıştırmak için bir yönetici kullanıcıdan yetki almamız gerekiyor. Bu, oturum başına yalnızca bir kez gerçekleşecektir.

Gerçekte anlamı, herhangi bir _developer grup üyesi kullanıcısıdır, bu nedenle yalnızca yönetici olmayan kullanıcı / şifreniz burada çalışacaktır, ancak ondan tamamen kurtulmak için (yeniden başlatmadan sonra istem yok) ayrıca çalıştırmanız gerekir:

sudo DevToolsSecurity -enable

(sudo ile yönetici kullanıcı olarak / root olarak çalıştırmak, bunu bir gui şifre istemi olmadan uzaktan yapabilmenizi sağlar)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.