Xcode / Mac OS で管理者以外の開発者を承認する
-
11-09-2019 - |
質問
私は Mac OS での日常業務に標準ユーザー アカウントを使用しています。Snow Leopard にアップグレードしてから、Xcode 内からプログラムを実行するときに次のことを行うように求められます。
「開発者ツールへのアクセスを許可するには、「開発者ツール」グループのユーザーの名前とパスワードを入力してください。」
管理者のユーザー名とパスワードは知っていますが、これは面倒です (ログインごとに 1 回だけ必要ですが)。
開発者ツールへのアクセスでは、アプリケーション gdb-i386-apple-darwin から「system.privilege.taskport.debug」への権限が求められます。
これを回避する最善の方法は何でしょうか?
解決
あなたは_developer
グループにあなたのOS Xのユーザー名を追加する必要があります。詳細については、このスレッドをrel="noreferrer"> href="https://discussions.apple.com/thread/2654321"
sudo dscl . append /Groups/_developer GroupMembership <username>
他のヒント
最後に、を使用してそれを取り除くことができました DevToolsSecurity -enable
ターミナル上で。おかげで @joar_at_work!
ご参考までに:私は Xcode 4.3 を使用しており、 無効にする 初めてボタンを起動したとき、理由は聞かずに、犬が私にそうさせたと思ってください:)
$ dseditgroup -o edit -u <adminusername> -t user -a <developerusername> _developer
あなたは、開発者ツールグループに自分を追加する必要があります。次のようにOS Xのグループにユーザーを追加するための一般的な構文は、
sudo dscl . append /Groups/<group> GroupMembership <username>
私は、デベロッパーツールグループの名前が_developer
であると考えています。
ネッドDeilyのソリューションは、ユーザーがsudo
を許可されて、完全に正常に動作します。
、あなたは$のユーザーがユーザー名である彼のsu
を、使用した後、管理者アカウントにdscl . append /Groups/_developer GroupMembership $user
することができます。
しかし、私は誤ってそれがなかったと思った。の
そのため、このコマンドを入力した後、あなたがそれを証明-確認する必要があります。 $ユーザーが変数は、それぞれのユーザー名とグループ名を表す$グループ、である場合、これはチェックされます。
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 を使用していますが、これは私にとってはうまくいきませんでした。ただし、次の手順は機能しました。
- まず、[アカウント] の下にある [ユーザーにこのコンピュータの管理を許可する] にチェックを入れて、管理者権限を持つ別のアカウント (たとえば、ユーザー名のアカウント) を追加します。 テスト
- にログインしました テスト アカウント
- Xcode を起動し、iPhone プロジェクトをコンパイルして実行しました。すべてOK、権限に関連するエラーはスローされませんでした
- からログアウトしました テスト アカウント
- 管理者権限を持つ別のアカウントでログインしている
- から管理者権限を剥奪しました テスト [アカウント] の下の [ユーザーにこのコンピュータの管理を許可する] のチェックを外してアカウントを削除します。
- に再度ログインしました テスト アカウント
- iPhoneプロジェクトディレクトリを削除し、リポジトリ(私の場合はsvn)から再度チェックアウトしました。
- Xcodeを起動し、プロジェクトをコンパイルして実行しました。エラーは発生せず、アプリは iPhone シミュレーターで正常に実行されました。
あなたが実行した後:
sudo dscl . append /Groups/_developer GroupMembership <username>
上記の解答ごとに、あなたはのまだを自分のパスワードに入力するように促されることがあります。
私たちは、デバッガを実行するために管理者ユーザからの承認を必要としています。 これは、ログインセッションごとに一度発生します。の
それは何が本当に意味することは任意のの_developer のgroupmemberユーザーである(再起動後に何のプロンプトを)ので、ちょうどあなたの管理者以外のユーザー/パスワードはここで働いていないだろうが、完全にそれを取り除くために、あなたも必要になります実行するには:
sudo DevToolsSecurity -enable
(あなたは、GUIパスワードプロンプトなしでリモートでそれを行うことができますので、rootとして管理者ユーザ/としてはsudoでそれを実行すると、それを行います)の
私にとっては、次のスレッドの提案が役に立ちました。
「デバッグを続行するには、開発者ツール アクセスが別のプロセスの制御を取得する必要があります」アラートを停止します
次のコマンドを実行することを提案しました。 ターミナル 応用:
sudo /usr/sbin/DevToolsSecurity --enable