Xcode / Mac OSで管理者以外の開発者を承認する


109

Mac OSでの日常的なタスクには標準ユーザーアカウントを使用しています。Snow Leopardにアップグレードしてから、Xcode内からプログラムを実行するときに、次のことを行うように求められます。

「「開発者ツール」グループにユーザーの名前とパスワードを入力して、開発者ツールアクセスが変更を行えるようにします。」

私は管理者のユーザー名/パスワードを知っていますが、これは面倒です(ただし、ログインごとに1回だけ必要です)。

開発者ツールへのアクセスは、アプリケーションgdb-i386-apple-darwinから「system.privilege.taskport.debug」への権限を要求しています。

これを回避する最良の方法は何ですか?

回答:


134

OS Xユーザー名を_developerグループに追加する必要があります。詳細については、このスレッドの投稿を参照してください。次のコマンドでうまくいくはずです。

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

1
このソリューションは約10分間機能しましたが、何らかの理由でユーザー名/パスワードの再入力を求められました。もう一度ターミナルに入力してみましたが、応答しなくなりました。
ジョウイ

これは私にとってはうまくいき、今まで問題はありません。参考までに記載しました。
eonil 2013年

9
このソリューションは-u <name-of-account-with-root-access>、オプションを追加するまで機能しませんでした。だから私の完全なコマンドはdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
dsjoerg 2013

1
この行を継続的インテグレーションスクリプトに追加する場合は、「追加」ではなく「マージ」の使用を検討する必要があります。Mergeはすでに存在する場合は追加しません。詳細については、「man dscl」を参照してください。
Russ Van Bert

1
これは私をグループに追加するのに役立ちましたが、@ Kheldarの提案を使用して最初にrootアカウントにsuした後でのみです。
b01

24

最後に、私はDevToolsSecurity -enableターミナルでそれを取り除くことができました。おかげ@joar_at_work

FYI:私はXcodeの4.3の上だし、押された無効ちょうど私の犬は私がそれを行う作っ想定し、理由を聞いていない、それは最初に起動した場合、ボタンを:)


2
DevToolsSecurityについて言及した場合は+1。そのようなツールが存在することを私は知りませんでした。私は反対の問題を抱えていました、もう一度無効にしたかったのですが、このツールのおかげでようやく次のことができるようになりました:)に置き換えただけ-enable-disable、期待どおりに機能します!
Mecki

1
このコマンドはまったく効果がないようです。Xcode 4.3では、-enableまたは-disableが使用されているかどうかに関係なく、_developerグループの誰かからの認証が必要です。
wcochran

明確にするために、このステップは、少なくとも一部のケースで、ユーザーを_developerグループに追加することに加えてdscl -u <root-account> . append /Groups/_developer GroupMembership <my-account>
Marmoy

XCode 7.3を搭載したmacOS「El Capitan」では動作しないようです。@Kheldarの解決策がうまくいきました。
Laryx Decidua

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

5
私の控えめな意見では、この答えはそれが何をするかについてもう少し説明することから本当に恩恵を受けることができます。私のシステムでsudo rm -rf /と入力するのが嫌いというわけではありませんが、あなたの言うとおりです。:D
Kheldar 2014

8

自分をDeveloper Toolsグループに追加する必要があります。OS Xでグループにユーザーを追加するための一般的な構文は次のとおりです。

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

DevToolsグループの名前はだと思います_developer


3

ユーザーに許可されていれば、Ned Deilyのソリューションは完璧に機能しますsudo

そうでない場合はsu、管理者アカウントにアクセスしてから、彼のを使用できdscl . append /Groups/_developer GroupMembership $userます。$ userはユーザー名です。

しかし、コマンドにユーザーの名前を誤って入力したため、メッセージが表示されずに失敗するため、誤ってそうではないと考えました。

したがって、このコマンドを入力した後、それを確認する必要があります。これにより、$ userが$ groupにあるかどうかが確認されます。変数はそれぞれユーザー名とグループ名を表します。

dsmemberutil checkmembership -U $user -G $group

このコマンドは、メッセージuser is not a member of the groupまたはを出力しuser is a member of the groupます。


2
ありがとう!これは私のために働いた!したOS Xマーベリックスのために働いたコマンドdscl . append /Groups/_developer GroupMembership username dsmemberutil checkmembership -U "username goes here" -G "group goes here"
MoralCode

2

@Stacy Simpsonによって提案された回答:

これらのスレッドで説明されている問題に取り組んでおり、解決策がどれも機能しないようです。

SOは初めてなので、どちらのスレッドにも投稿できません。(最初のものは実際に閉鎖されており、ローカリゼーションの推論に同意しません...)

とにかく、AppleScriptを使用して回避策を作成しました。以下のスクリプトは、自動テストを起動する前に非同期で実行する必要があります。

osascript <script name> <password> &

スクリプトは次のとおりです。

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

おそらくそれほど安全ではありませんが、ユーザーの介入を必要とせずにテストを実行できるようにするために考え出された最善の回避策です。

うまくいけば、答えを投稿するのに十分なポイントを獲得できます。または、誰かがこの質問の保護を解除できます。よろしく。


2

プロジェクトのコンパイル時にシステムキーチェーンを使用したいMac OS Xのより良いソリューション
を次に示します

  1. キーチェーンアクセスを開きます。
  2. 左上隅で、キーチェーンのロックを解除します(ロックされている場合)。
  3. 左上隅からシステムキーチェーンを選択します。
  4. 配布証明書を見つけて、三角形の三角形をクリックします。
  5. 配布証明書の下にある「秘密鍵」をダブルクリックします。
  6. ポップアップで、[アクセス制御]タブに移動します。
  7. [すべてのアプリケーションにこのアイテムへのアクセスを許可する]を選択します。
  8. 変更を保存します。
  9. すべてのウィンドウを閉じます。
  10. アプリケーションを実行します。


1

私はSnow Leopardを使用していますが、これはうまくいきませんでした。しかし、次の手順はうまくいきました:

  1. 最初に、[アカウント]で[ユーザーにこのコンピュータの管理を許可する]をチェックして、管理者権限を持つ別のアカウントを追加しました(例:ユーザー名testのアカウント)
  2. テストアカウントにログインしました
  3. Xcodeを起動し、私のiPhoneプロジェクトをコンパイルして実行しました。すべてOK、権限に関連するエラーはスローされませんでした
  4. テストアカウントからログアウトしました
  5. 管理者権限を持つ別のアカウントでログインしました
  6. [アカウント]の[ユーザーがこのコンピュータを管理することを許可する]のチェックを外して、テストアカウントから管理者権限を取り除きました。
  7. テストアカウントに再度ログインしました
  8. iPhoneプロジェクトディレクトリを削除し、再びリポジトリからチェックアウトしました(私の場合はsvn)
  9. Xcodeを起動し、プロジェクトをコンパイルして実行しました。エラーは発生せず、iPhoneシミュレーターでアプリは正常に実行されました。

0

実行した後:

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

上記の解答ごとに、あなたはあり、まだ自分自身のパスワードを入力するように求められます:

デバッガーを実行するには、管理ユーザーの承認が必要です。これは、ログインセッションごとに1回だけ発生します。

それが実際に意味することは、任意の_developerグループメンバーユーザーであるため、管理者以外のユーザー/パスワードだけがここで機能しますが、完全に取り除くには(再起動後にプロンプ​​トが表示されない)、次のコマンドも実行する必要があります。

sudo DevToolsSecurity -enable

(sudoをadminユーザーとして、またはrootとして実行すると、GUIパスワードプロンプトなしでリモートで実行できるようになります)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.