web-dev-qa-db-ja.com

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

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

「開発者ツールのアクセスを変更できるようにするには、「開発者ツール」グループにユーザーの名前とパスワードを入力してください」

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

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

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

106
Andrew Cain

OS Xユーザー名を_developerグループに追加する必要があります。詳細については、 this thread の投稿を参照してください。次のコマンドでトリックを実行する必要があります。

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

最後に、ターミナルでDevToolsSecurity -enableを使用してそれを取り除くことができました。 @ joar_at_work に感謝します!

FYI:Xcode 4.3で、初めて起動したときにdisableボタンを押した私の犬が私にそれをさせたと仮定してください:)

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

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

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

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

8
phoebus

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

そうでない場合は、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を出力します。

3
Kheldar

@ 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
Martin Turjak

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

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

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

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

実行後:

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

上記の答えに従って、あなたはstill自身のパスワードを入力するように促されます:

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

本当に意味するのは、任意の_ developerグループメンバーユーザーです。したがって、管理者以外のユーザー/パスワードだけがここで機能しますが、完全に削除します(後のプロンプトはありません)再起動)また、実行する必要があります:

Sudo DevToolsSecurity -enable

(管理者ユーザーとして/ rootとしてSudoを実行すると、GUIパスワードプロンプトなしでリモートで実行できるようになります)

0
timofei7

私にとって、次のスレッドの提案が助けになったことがわかりました。

「続行するには、デバッグのために開発者ツールのアクセスが別のプロセスを制御する必要がある」という警告を停止する

Terminalアプリケーションで次のコマンドを実行することを提案しました。

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