Warum bekomme ich einen "zweifelhaften Eigentümer der Datei", wenn der Startagenten meine .plist -Datei ausführt?

apple.stackexchange https://apple.stackexchange.com/questions/3250

Frage

Ich habe einen Startagenten konfiguriert, um eine .plist -Datei zum Beispiel auszuführen: /Library/LaunchAgent/foo.plist. In diesem .plisten soll es während LoginWindow und Aqua.

Wenn ich versuche, meinen Computer zu starten und zum Anmeldebildschirm zu gelangen, sollte dieser Plan ausgeführt werden, sondern gibt stattdessen den folgenden Fehler (in der Konsole):

LaunchCTL: Zweifelhafte Eigentümer in Datei (überspringen): /library/launchagents/foo.plist

Wenn ich versuche, mich bei einem Nicht-Adminampfer-Konto anzumelden, gibt es genau die gleiche Fehlermeldung an. Wenn ich versuche, mich mit einem Admin -Konto anzumelden, funktioniert es einwandfrei.

Ich werde ehrlich sein, ich weiß nicht viel über Mac OS X -Privilegien und Berechtigungen.

Um die Datei zu erstellen, habe ich sie geöffnet in emacs, mit sudo auf dem Administratorkonto (zB mit der Verwendung des su Befehl Da das andere Konto keine Sudo -Privilegien hat) und es dann gespeichert.

Welches Konto muss ich verwenden, um die Datei so zu erstellen, dass sie für alle Benutzer funktioniert?
Muss ich den Sudo -Befehl verwenden?
Muss ich die Dateiberechtigungen ändern (z. B. Verwendung chmod)?
Gibt es eine einfache Möglichkeit, eine vorhandene Datei einzunehmen und ihr Eigentum zu ändern, anstatt die Datei neu erstellen zu müssen?
Könnte jemand bitte erklären, warum dieser Fehler passiert?

War es hilfreich?

Lösung

Wenn ein Standpunkt im Besitz von Root und beschreibbar ist und einem anderen Benutzer als Root beschreibt, ist dies ein Sicherheitsproblem.

Sie können den Eigentümer in den Wurzeln ändern sudo chown root <filename>, und ändern die Berechtigungen mit sudo chmod 644 <filename> (4 für den Lesezugriff, 2 für Schreibzugriff, 1 für den Ausführen von Zugriff, addiert. Die erste Nummer ist für den Eigentümer, die zweite für die Gruppe, die dritte für alle.)

Andere Tipps

Von dem LaunchCTL (1) Manpage's Beschreibung der load Unterbefehl:

Beachten Sie, dass die Konfigurationsdateien von Per-User (Launchagents) im Besitz des Benutzers im Besitz sein müssen. Alle systemweiten Daemons (LaunchdaMons) müssen von Root gehören. Konfigurationsdateien dürfen nicht gruppen- oder weltweit geschrieben sein. Diese Einschränkungen sind aus Sicherheitsgründen vorhanden, da die Schreibfähigkeit für eine LaunchD -Konfigurationsdatei angeben kann, welche ausführbare Datei gestartet werden.

LaunchCTL hat mehrere "zweifelhafte ..." Nachrichten. Das starten Der Code für 10.6.7 (zum Beispiel) enthält drei solcher Nachrichten in seiner launchctl.c (Siehe die Funktion 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>

Um diese Nachrichten zu vermeiden, muss ein Pfadname (#3) eine reguläre Datei oder ein Verzeichnis sein1 (oder ein Symlink zu einem), das (#1) im Besitz von Root oder dem aufgerufenen Benutzer ist und (#2) nicht „Gruppen“ oder „andere“ beschreibbar ist (dh chmod go-w).

1Keine benannten Rohre, Block-/Zeichen -Spezialgeräteknoten, lokale Domänenhöhlen usw.


Ihre Datei gehört wahrscheinlich dem Administratorbenutzer, da Sie sagen, dass Sie die Nachricht nicht erhalten, wenn Sie sich als dieser Benutzer anmelden (der Pfadname ist in diesem Fall dem aufgerufenen Benutzer gehört).
Damit der Pfadname für andere Benutzer funktioniert, sollte er Root gehören.

Um dies zu arrangieren, tun Sie:

sudo chown root /Library/LaunchAgent/foo.plist

Vielen Dank für die Antwort (Eigentümer wechseln in Root) - das ist alles, was ich brauchte.

Um dies ein bisschen mehr zu machen als einen "Ich auch" Post ... Ich bin hier über einen verwickelten Pfad hierher gekommen: Ich habe "Diese API kann nur durch einen Prozess verwendet werden, der in einer Aqua -Sitzung ausgeführt wird." Die Suche nach einer Antwort darauf führte mich dazu Apples Technote über Daemons und Agenten Dies erklärte, wie man den Fehler "Aqua Session" behebt, aber das hat mich mit "zweifelhaften Eigentumsbesitz" -Anproblemen zurückgelassen. So kam ich hierher, wo mein letztes Problem gelöst war.

Vielleicht führt das Hinzufügen all dessen zu dieser Diskussion dazu, dass eine Suchmaschine diese Seite mit einem der vorläufigen Probleme verknüpft und so einige Zeit einen zukünftigen Abenteurer speichert.

Für die Datei in ~/bibliothek/launchagent im Besitz des Benutzer und nicht in Root Don't sudo, wenn Sie das Eigentum ändern müssen, da Sie sie aus dem Root -Benutzer laden

Dies passiert, wenn Menschen nicht wissen, wie sudo Arbeiten. Dienste zu deaktivieren, die auf Dateien gehören, die Ihrem Benutzer gehören, rufen Sie einfach an launchtl ohne sudo.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit apple.stackexchange
scroll top