Ich habe einen Start - Agent konfiguriert ist, eine .plist - Datei zum Beispiel auszuführen: /Library/LaunchAgent/foo.plist
. In dieser .plist ist festgelegt, dass sie während LoginWindow
und ausgeführt wird Aqua
.
Wenn ich versuche, meinen Computer zu starten und zum Anmeldebildschirm zu gelangen, sollte diese Liste ausgeführt werden, es wird jedoch stattdessen die folgende Fehlermeldung angezeigt (in der Konsole):
launchctl: Zweifelhafter Besitz in der Datei (Überspringen): /Library/LaunchAgents/foo.plist
Wenn ich versuche, mich bei einem Nicht-Administratorkonto anzumelden, wird genau dieselbe Fehlermeldung angezeigt. Wenn ich versuche, mich mit einem Administratorkonto anzumelden, funktioniert es einwandfrei.
Ich bin ehrlich, ich weiß nicht viel über Mac OS X-Berechtigungen und -Berechtigungen.
Um die Datei zu erstellen, ich öffnete sie in emacs
, mit sudo
auf dem Admin - Konto (zB durch die Verwendung von su
Befehl seit dem anderen Konto nicht sudo - Berechtigungen hat) und speicherte es dann.
Welches Konto muss ich verwenden, um die Datei zu erstellen, damit sie für alle Benutzer funktioniert?
Muss ich den Befehl sudo verwenden?
Muss ich die Dateiberechtigungen ändern (zB verwenden chmod
)?
Gibt es eine einfache Möglichkeit, eine vorhandene Datei zu übernehmen und ihren Eigentümer zu ändern, anstatt die Datei neu erstellen zu müssen?
Könnte jemand erklären, warum dieser Fehler auftritt?
quelle
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Antworten:
Wenn eine Plist im Besitz von root ist und von einem anderen Benutzer als root beschrieben werden kann, handelt es sich um ein Sicherheitsproblem.
Sie können den Eigentümer in root mit
sudo chown root <filename>
ändern und die Berechtigungen mitsudo chmod 644 <filename>
(4 für Lesezugriff, 2 für Schreibzugriff, 1 für Ausführungszugriff, addiert. Die erste Zahl ist für den Eigentümer, die zweite für die Gruppe, die dritte für jedermann.)quelle
launchctl
. Ich habe die Datei als normaler Benutzer erstellt und mit ausgeführtsudo
. Daher der Fehler. Da root nicht der Eigentümer der Datei ist, wurde Neinsudo
nicht benötigt. Ich lief ohnesudo
und es hat gut funktioniert.Vom launchctl (1) manpage ‚s Beschreibung des
load
subcommand:launchctl enthält mehrere "Dubious ..." - Meldungen. Der launchd- Code für 10.6.7 (zum Beispiel) enthält drei solche Meldungen
launchctl.c
(siehe die Funktionpath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
Um diese Meldungen zu vermeiden, muss ein Pfadname (# 3) eine reguläre Datei oder ein Verzeichnis 1 (oder ein Symlink zu einem) sein, das (# 1) Eigentum von root oder dem aufrufenden Benutzer ist und (# 2) nicht "group" oder "other" ”Beschreibbar (dh
chmod go-w
).1 Keine Named Pipes, Block- / Zeichen-Geräteknoten, lokalen Domain-Sockets usw.
Ihre Datei gehört wahrscheinlich dem Administrator, da Sie sagen, dass Sie die Meldung nicht erhalten, wenn Sie sich als dieser Benutzer anmelden (der Pfadname gehört in diesem Fall dem aufrufenden Benutzer).
Damit der Pfadname für andere Benutzer funktioniert, sollte er root gehören.
Um dies zu arrangieren, mache:
quelle
Danke für die Antwort (Besitzerwechsel zu root) - das ist alles was ich brauchte.
Um dies ein bisschen mehr als ein "Ich auch" -Post zu machen ... Ich bin über einen verschlungenen Pfad hierher gekommen: Ich habe die Fehlermeldung "Diese API kann nur von einem Prozess verwendet werden, der in einer Aqua-Sitzung ausgeführt wird" für einen Launchdaemon erhalten. Die Suche nach einer Antwort darauf führte mich zu Apples Technote zu Daemons und Agenten, in dem erläutert wurde, wie der Fehler bei der "Aqua-Sitzung" behoben werden kann , was mich jedoch zu zweifelhaften Besitzproblemen veranlasste . So bin ich hierher gekommen, wo mein letztes Problem gelöst wurde.
Vielleicht führt das Hinzufügen all dessen zu dieser Diskussion dazu, dass einige Suchmaschinen diese Seite mit einem der vorläufigen Probleme verknüpfen, wodurch einigen zukünftigen Abenteurern etwas Zeit gespart wird.
quelle
für die Datei in ~ / Library / LaunchAgent, die dem Benutzer und nicht root gehört, dont sudo, wenn Sie die Eigentümerschaft ändern müssen, da Sie sie vom Root-Benutzer laden
quelle
Das passiert, wenn die Leute nicht wissen, wie es
sudo
funktioniert. Um Dienste zu deaktivieren, die sich in Dateien Ihres Benutzers befinden, rufen Sie einfachlaunchtl
ohne ansudo
.quelle