Launch Agentが.plistファイルを実行すると「ファイルの疑わしい所有権」エラーが表示されるのはなぜですか?


54

たとえば、.plistファイルを実行するように起動エージェントを構成しています/Library/LaunchAgent/foo.plist。この.plist内では、LoginWindowおよびの間に実行するように設定されていますAqua

コンピューターを起動してログイン画面を表示しようとすると、このplistが実行されますが、代わりに(コンソールで)次のエラーが表示されます。

launchctl:ファイルの疑わしい所有権(スキップ):/Library/LaunchAgents/foo.plist

管理者以外のアカウントにログインしようとすると、まったく同じエラーメッセージが表示されます。管理者アカウントでログインしようとすると、うまくいきます。

正直なところ、Mac OS Xの特権と許可についてはあまり知りません。

ファイルを作成するには、私はそれを開いたemacsと、sudo(使用して、たとえば管理者アカウントにsu他のアカウントは、sudo権限を持っていないので、コマンド)をし、それを救いました。

すべてのユーザーに対して機能するように、どのアカウントを使用してファイルを作成する必要がありますか?
sudoコマンドを使用する必要がありますか?
ファイルのアクセス権を変更する必要がありますchmodか(例:を使用)。
ファイルを再作成する代わりに、既存のファイルを取得してその所有権を変更する簡単な方法はありますか?
誰かがこのエラーが発生する理由を説明できますか?


LSは/Library/LaunchAgent/foo.plistのために何を与える-lん
user151019

1
@マーク:それは次のようになります:-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
Senseful

ロードを強制することもでき-Fます()。
ケノーブ

回答:


51

plistがrootによって所有され、root以外のユーザーによって書き込み可能な場合、それはセキュリティの問題です。

で所有者をrootにsudo chown root <filename>変更し、(許可でsudo chmod 644 <filename>4、読み取りアクセスで2、書き込みアクセスで1、実行アクセスで1、合計でアクセス権を変更できます。最初の番号は所有者、2番目はグループ、3番目は全員。)


これは動作します。所有者をrootに変更しなければならなかった理由について、私はただ混乱しています。rootはLaunchAgentに使用されるユーザーですか?
賢明な

1
はい、そう思います。
ミシェル・デ・マー

1
私はこれが古い投稿であることを知っていますが、これは素晴らしい答えです!Appleが推奨する修正を試みるために/system/library/launchdaemons/com.apple.mdnsresponderのアクセス権を変更しましたが、後でロードしようとすると上記のエラーが発生します。上記のように所有者と権限を変更することが、インターネット接続を回復する唯一の方法でした。ありがとう!

今同じに直面し、解決しました。私はファイルの所有者が多くを呼び出すと考えましたlaunchctl。通常のユーザーとしてファイルを作成し、で実行していましたsudo。したがって、エラー。rootはファイルの所有者ではないため、No sudoは不要です。私はなしsudoで走り、それはうまく働きました。
-Bibhas

14

からにlaunchctl(1) manページのの説明load:サブコマンド

ユーザーごとの構成ファイル(LaunchAgents)は、それらを読み込むユーザーが所有する必要があることに注意してください。すべてのシステム全体のデーモン(LaunchDaemons)は、rootが所有する必要があります。構成ファイルは、グループまたは世界中から書き込み可能ではありません。launchd構成ファイルへの書き込みを許可すると、起動する実行可能ファイルを指定できるため、これらの制限はセキュリティ上の理由から設定されています。

launchctlにはいくつかの「Dubious…」メッセージがあります。10.6.7 のlaunchdコード(たとえば)には、そのようなメッセージが3つありますlaunchctl.c(関数を参照path_goodness_check)。

  1. Dubious permissions on file (skipping): <pathname>
  2. Dubious ownership on file (skipping): <pathname>
  3. Dubious path. Not a regular file or directory (skipping): <pathname>

これらのメッセージを回避するには、パス名は(#3)通常のファイルまたはディレクトリ1(またはシンボリックリンク)であり、(#1)ルートまたは呼び出しユーザーが所有し、(#2)「グループ」または「その他」書き込み可能(つまりchmod go-w)。

1 名前付きパイプ、ブロック/キャラクタースペシャルデバイスノード、ローカルドメインソケットなどはありません。


そのユーザーとしてログインするときにメッセージを取得しないと言うので、ファイルはおそらくadminユーザーが所有しています(その場合、パス名は呼び出しユーザーによって所有されます)。
パス名を他のユーザーに対して機能させるには、ルートが所有する必要があります。

これを調整するには、次を実行します。

sudo chown root /Library/LaunchAgent/foo.plist

1

答えてくれてありがとう(所有者をルートに変更)-それが私に必要なすべてです。

これを「私も」投稿以上にするには...複雑なパスでここに到達しました:launchdaemonで「このAPIはAquaセッション内で実行されているプロセスでのみ使用できます」というエラーが表示されていました。それに対する答えを探すと、デーモンとエージェントに関するAppleの技術情報に行き、「Aquaセッション」エラーを解決する方法を説明しましたが、それは「疑わしい所有権」の問題を残しました。私がここにたどり着いたのは、私の最後の問題が解決したところでした。

これらすべてをこのディスカッションに追加すると、一部の検索エンジンがこのページを先駆的な問題の1つにリンクさせ、将来の冒険者をある程度節約できるかもしれません。


これは回答ではなくコメントであることに注意してください。
スタッドギーク

1
私はコメントしたでしょうが、私の評判ポイントは十分に高くありませんでした。(評判が低いがコメントはできないが「答える」ことができるとは思えない?)
マットストレンジ

-2

rootではなくユーザーが所有する〜/ Library / LaunchAgentのファイルの場合、rootユーザーからロードしているため所有権を変更する必要がある場合


-3

これは、人々がどのようにsudo機能するかを知らないときに起こることです。ユーザーが所有するファイルにあるサービスを無効にするには、launchtlなしで呼び出しますsudo

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