Otorisasi pengembang non-admin di Xcode / Mac OS

109

Saya menggunakan akun pengguna standar untuk tugas harian saya di Mac OS. Sejak memutakhirkan ke Snow Leopard, saya diminta untuk melakukan hal berikut saat program dijalankan dari dalam Xcode:

"Ketik nama dan sandi pengguna di grup 'Alat Pengembang' untuk mengizinkan Akses Alat Pengembang membuat perubahan"

Meskipun saya tahu nama pengguna / kata sandi admin, ini mengganggu (meski hanya diperlukan sekali per login).

Akses alat pengembang meminta hak untuk "system.privilege.taskport.debug" dari aplikasi gdb-i386-apple-darwin.

Apa cara terbaik untuk mengatasi ini?

Andrew Cain
sumber

Jawaban:

134

Anda perlu menambahkan nama pengguna OS X Anda ke _developergrup. Lihat posting di utas ini untuk informasi lebih lanjut. Perintah berikut harus melakukan triknya:

sudo dscl . append /Groups/_developer GroupMembership <username>
Ned Deily
sumber
1
Solusi ini berfungsi untuk saya selama sekitar 10 menit, dan kemudian karena alasan tertentu mulai meminta nama pengguna / kata sandi saya lagi. Saya mencoba mengetiknya ke Terminal lagi, tetapi tidak lagi merespons.
jowie
Ini bekerja untuk saya dan saya tidak memiliki masalah sampai sekarang. Dicatat hanya untuk referensi.
eonil
9
Solusi ini tidak berhasil untuk saya sampai saya menambahkan -u <name-of-account-with-root-access>ke opsi. Jadi perintah penuh saya adalahdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg
1
Anda harus mempertimbangkan untuk menggunakan 'merge' daripada 'append' jika Anda menambahkan baris ini ke skrip integrasi berkelanjutan. Penggabungan tidak akan menambahkannya jika sudah ada. Lihat 'man dscl' untuk lebih jelasnya.
Russ Van Bert
1
Ini berfungsi untuk menambahkan saya ke grup tetapi hanya setelah saya menggunakan saran @Kheldar untuk masuk ke akun root terlebih dahulu.
b01
24

Akhirnya, saya bisa menyingkirkannya menggunakan DevToolsSecurity -enabledi Terminal. Terima kasih untuk @joar_at_work !

FYI : Saya menggunakan Xcode 4.3, dan menekan tombol nonaktifkan ketika diluncurkan untuk pertama kalinya, jangan tanya mengapa, anggap saja anjing saya menyuruh saya melakukannya :)

chunkyguy
sumber
2
1 untuk menyebutkan DevToolsSecurity. Saya tidak tahu alat seperti itu ada. Saya memiliki masalah sebaliknya, saya ingin menonaktifkannya lagi dan berkat alat ini saya akhirnya bisa :) Hanya diganti -enabledengan -disabledan itu berfungsi seperti yang diharapkan!
Mecki
1
Perintah ini sepertinya tidak berpengaruh sama sekali. Xcode 4.3 masih memerlukan otentikasi dari seseorang di grup _developer terlepas dari apakah -enable atau -disable digunakan.
wcochran
Hanya untuk memperjelas, langkah ini, setidaknya dalam beberapa kasus, selain menambahkan pengguna ke grup _developer dengandscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy
Sepertinya tidak berfungsi pada macOS "El Capitan" dengan XCode 7.3. Solusi @ Kheldar berhasil untuk saya.
Laryx Decidua
9
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
cdespinosa.dll
sumber
5
Menurut pendapat saya, jawaban ini benar-benar bisa mendapatkan keuntungan dari sedikit lebih banyak penjelasan tentang apa yang dilakukannya. Bukannya saya tidak suka mengetik sudo rm -rf / di sistem saya, tetapi Anda mengerti maksud saya. : D
Kheldar
8

Anda harus menambahkan diri Anda sendiri ke grup Alat Pengembang. Sintaks umum untuk menambahkan pengguna ke grup di OS X adalah sebagai berikut:

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

Saya yakin nama untuk grup DevTools adalah _developer.

phoebus.dll
sumber
3

Solusi Ned Deily bekerja dengan baik, asalkan pengguna Anda diizinkan sudo.

Jika tidak, Anda bisa suke akun admin, lalu gunakan miliknya dscl . append /Groups/_developer GroupMembership $user, di mana $ user adalah nama pengguna.

Namun, saya salah mengira itu bukan karena saya salah mengetik nama pengguna di perintah dan diam-diam gagal.

Oleh karena itu, setelah memasukkan perintah ini, Anda harus melakukan pengecekan ulang. Ini akan memeriksa apakah $ user ada di $ group, di mana variabel mewakili masing-masing nama pengguna dan nama grup.

dsmemberutil checkmembership -U $user -G $group

Perintah ini akan mencetak pesan user is not a member of the groupatau user is a member of the group.

Kheldar
sumber
2
Terima kasih! Ini berhasil untuk saya! Perintah yang bekerja untuk OS X Mavericks adalah dscl . append /Groups/_developer GroupMembership username dandsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode
2

Jawaban yang disarankan oleh @Stacy Simpson:

Kami sedang berjuang dengan masalah yang dijelaskan dalam utas ini dan tidak ada resolusi yang berhasil:

Karena saya baru mengenal SO, saya tidak dapat memposting di salah satu utas. (Yang pertama sebenarnya ditutup dan saya tidak setuju dengan alasan pelokalan ...)

Bagaimanapun, kami membuat penyelesaian menggunakan AppleScript yang mungkin menarik bagi orang-orang. Skrip di bawah ini harus dijalankan secara asinkron sebelum meluncurkan pengujian otomatis Anda:

osascript <script name> <password> &

Berikut skripnya:

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

Mungkin tidak terlalu aman, tetapi ini adalah solusi terbaik yang kami buat untuk memungkinkan pengujian berjalan tanpa memerlukan campur tangan pengguna.

Semoga saya mendapatkan poin yang cukup untuk memposting jawabannya; atau, seseorang dapat membuka proteksi pertanyaan ini. Salam.

Martin Turjak
sumber
2

Berikut adalah solusi yang lebih baik dari
Mac OS X yang ingin menggunakan rantai kunci sistem saat menyusun proyek

  1. Buka Akses Rantai Kunci.
  2. Di pojok kiri atas, buka kunci rantai kunci (jika terkunci).
  3. Pilih rantai kunci Sistem dari sudut kiri atas.
  4. Temukan sertifikat distribusi Anda dan klik segitiga pengungkapan.
  5. Klik dua kali 'Kunci pribadi' di bawah sertifikat distribusi Anda.
  6. Di popup, buka tab Access Control.
  7. Pilih 'Izinkan semua aplikasi untuk mengakses item ini'.
  8. Simpan perubahannya.
  9. Tutup semua jendela.
  10. Jalankan aplikasinya.
Raj
sumber
1

Saya menggunakan Snow Leopard dan yang ini tidak cukup berhasil untuk saya. Tetapi prosedur berikut berhasil:

  1. Pertama-tama tambahkan akun lain dengan hak istimewa admin dengan mencentang "Izinkan pengguna untuk mengatur komputer ini" di bawah Akun, misalnya akun dengan uji nama pengguna
  2. Masuk ke akun pengujian
  3. Meluncurkan Xcode, mengkompilasi dan menjalankan proyek iPhone saya. Semua baik-baik saja, tidak ada kesalahan terkait izin
  4. Keluar dari akun pengujian
  5. Masuk dengan akun lain yang memiliki hak istimewa admin
  6. Mengambil hak istimewa admin dari akun pengujian dengan menghapus centang dari "Izinkan pengguna untuk mengatur komputer ini" di bawah Akun
  7. Masuk kembali ke akun pengujian
  8. Menghapus direktori proyek iPhone dan memeriksa lagi dari repositori (dalam kasus saya svn)
  9. Meluncurkan Xcode, mengompilasi, dan menjalankan proyek. Saya tidak mendapatkan kesalahan apa pun dan Aplikasi berjalan dengan baik di Simulator iPhone.
Naveen Kansara
sumber
0

Setelah Anda berlari:

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

sesuai jawaban di atas, Anda mungkin masih diminta untuk memasukkan kata sandi Anda sendiri:

Kami membutuhkan otorisasi dari pengguna admin untuk menjalankan debugger. Ini hanya akan terjadi sekali per sesi login.

Apa artinya sebenarnya adalah setiap pengguna _developer groupmember jadi hanya pengguna / kata sandi non-admin Anda yang akan berfungsi di sini tetapi untuk menghapusnya sepenuhnya (tidak ada perintah setelah reboot) Anda juga harus menjalankan:

sudo DevToolsSecurity -enable

(menjalankannya dengan sudo sebagai pengguna admin / sebagai root akan membuatnya sehingga Anda dapat melakukannya dari jarak jauh tanpa prompt kata sandi gui)

timofei7
sumber