起動エージェントが.plistファイルを実行したときに、「ファイルの疑わしい所有権」エラーを取得するのはなぜですか?
-
16-10-2019 - |
質問
.plistファイルを実行するように構成された起動エージェントがあります。 /Library/LaunchAgent/foo.plist
. 。この.plist内では、その中に実行するように設定されています LoginWindow
と Aqua
.
コンピューターを起動してログイン画面に到達しようとすると、このプリストは実行されますが、代わりに次のエラー(コンソール内)が表示されます。
launchctl:ファイル上の疑わしい所有権(スキップ):/library/launchagents/foo.plist
ADMIN以外のアカウントにログインしようとすると、まったく同じエラーメッセージが表示されます。管理者アカウントでログインしようとすると、正常に動作します。
正直に言うと、Mac OS Xの特権と許可についてはあまり知りません。
ファイルを作成するには、で開きました emacs
, 、 と sudo
管理アカウント(例:を使用して su
他のアカウントにはsudo特権がないのでコマンド)そしてそれを保存しました。
ファイルがすべてのユーザーに機能するように、ファイルを作成するために使用する必要があるアカウントはどれですか?
Sudoコマンドを使用する必要がありますか?
ファイル許可を変更する必要がありますか(例: chmod
)?
ファイルを再作成する代わりに、既存のファイルを取得して所有権を変更する簡単な方法はありますか?
このエラーが起こる理由を誰かが説明できますか?
解決
プリストがrootが所有し、root以外のユーザーが執筆可能な場合、それはセキュリティの問題です。
所有者を変更してルート化できます sudo chown root <filename>
, 、および許可を変更します sudo chmod 644 <filename>
(読み取りアクセスの場合は4、書き込みアクセスの場合は2、実行アクセスの場合は1つ、追加されます。最初の番号は所有者、2番目はグループの2番目、3番目はすべての人です。)
他のヒント
から launchctl(1) マンページの説明 load
subcommand:
ユーザーごとの構成ファイル(LashingAgents)は、ユーザーがそれらをロードすることで所有されている必要があることに注意してください。すべてのシステム全体のデーモン(LaunchDaemons)は、rootが所有する必要があります。構成ファイルは、グループや世界的に作成できるものであってはなりません。これらの制限はセキュリティ上の理由で導入されています。起動された構成ファイルへのライター性により、どの実行可能ファイルが起動するかを指定できるためです。
launchctl いくつかの「疑わしい…」メッセージがあります。 起動しました 10.6.7(たとえば)のコードには、そのようなメッセージが3つあります launchctl.c
(関数を参照してください path_goodness_check
).
Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
これらのメッセージを回避するには、パス名は(#3)通常のファイルまたはディレクトリである必要があります1 (またはsymlink to one)は(#1)rootまたは呼び出しユーザーが所有しています。 chmod go-w
).
1名前付きパイプ、ブロック/キャラクターの特別なデバイスノード、ローカルドメインソケットなど。
ファイルはおそらく管理者ユーザーが所有している可能性があります。なぜなら、そのユーザーとしてログインするときにメッセージが表示されないと言っているためです(その場合、パス名は呼び出されるユーザーが所有しています)。
他のユーザーのパス名を機能させるには、rootが所有する必要があります。
これを手配するには、次のことを行います。
sudo chown root /Library/LaunchAgent/foo.plist
答えをありがとう(所有者をルートに変更します) - それが私が必要としていたすべてです。
これを「私も」の投稿よりも少し多くするために...私はここで複雑なパスを経由してここに到達しました。それに対する答えを探していると、私はに導かれました デーモンとエージェントに関するAppleのテクノート 「Aquaセッション」エラーを解決する方法を説明しましたが、それは私に「疑わしい所有権」の問題を残しました。それが私がここに来た方法であり、私の最終的な問題が解決されました。
これらすべてをこのディスカッションに追加すると、検索エンジンがこのページを前身の問題の1つにリンクさせ、それにより将来の冒険家を節約できるようになる可能性があります。
ルートではなくユーザーが所有する〜/library/launchagentのファイルの場合、rootユーザーからロードしているので所有権を変更する必要があります。
これは、人々がどのように知らないときに起こることです sudo
作品。ユーザーが所有するファイル上にあるサービスを無効にするには、電話するだけです launchtl
それなし sudo
.