Mac OSでの日常のタスクには標準ユーザーアカウントを使用します。 Snow Leopardにアップグレードしてから、Xcode内からプログラムを実行するときに次のことを行うように求められます。
「開発者ツールのアクセスを変更できるようにするには、「開発者ツール」グループにユーザーの名前とパスワードを入力してください」
私は管理者のユーザー名/パスワードを知っていますが、これは面倒です(ただし、ログインごとに1回だけ必要です)。
開発者ツールのアクセスは、アプリケーションgdb-i386-Apple-darwinから「system.privilege.taskport.debug」への権利を要求しています。
これを回避する最善の方法は何ですか?
OS Xユーザー名を_developer
グループに追加する必要があります。詳細については、 this thread の投稿を参照してください。次のコマンドでトリックを実行する必要があります。
Sudo dscl . append /Groups/_developer GroupMembership <username>
最後に、ターミナルでDevToolsSecurity -enable
を使用してそれを取り除くことができました。 @ joar_at_work に感謝します!
FYI:Xcode 4.3で、初めて起動したときにdisableボタンを押した私の犬が私にそれをさせたと仮定してください:)
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
開発者ツールグループに自分を追加する必要があります。 OS Xでグループにユーザーを追加するための一般的な構文は次のとおりです。
Sudo dscl . append /Groups/<group> GroupMembership <username>
DevToolsグループの名前は_developer
だと思います。
ユーザーが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
を出力します。
@ 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
おそらくあまり安全ではありませんが、ユーザーの介入を必要とせずにテストを実行できるようにするための最善の回避策です。
うまくいけば、答えを投稿するのに十分なポイントを獲得できます。または、誰かがこの質問の保護を解除できます。よろしく。
ここからのより良いソリューションです
Mac OS Xはプロジェクトのコンパイル時にシステムキーチェーンを使用したい
- キーチェーンアクセスを開きます。
- 左上隅で、キーチェーンのロックを解除します(ロックされている場合)。
- 左上隅からシステムキーチェーンを選択します。
- 配布証明書を見つけて、開閉用三角ボタンをクリックします。
- 配布証明書の下にある「秘密鍵」をダブルクリックします。
- ポップアップで、[アクセス制御]タブに移動します。
- [すべてのアプリケーションにこのアイテムへのアクセスを許可する]を選択します。
- 変更を保存します。
- すべてのウィンドウを閉じます。
- アプリケーションを実行します。
私はSnow Leopardを使用していますが、これは私にとってはうまくいきませんでした。しかし、次の手順は機能しました。
実行後:
Sudo dscl . append /Groups/_developer GroupMembership <username>
上記の答えに従って、あなたはstill自身のパスワードを入力するように促されます:
デバッガを実行するには、管理者ユーザーの承認が必要です。これは、ログインセッションごとに1回だけ発生します。
本当に意味するのは、任意の_ developerグループメンバーユーザーです。したがって、管理者以外のユーザー/パスワードだけがここで機能しますが、完全に削除します(後のプロンプトはありません)再起動)また、実行する必要があります:
Sudo DevToolsSecurity -enable
(管理者ユーザーとして/ rootとしてSudoを実行すると、GUIパスワードプロンプトなしでリモートで実行できるようになります)
私にとって、次のスレッドの提案が助けになったことがわかりました。
「続行するには、デバッグのために開発者ツールのアクセスが別のプロセスを制御する必要がある」という警告を停止する
Terminalアプリケーションで次のコマンドを実行することを提案しました。
Sudo /usr/sbin/DevToolsSecurity --enable