Perché ricevo un errore di "proprietà dubbia del file" quando Launch Agent esegue il mio file .plist?

54

Ho un Launch Agent configurato per eseguire un file .plist ad esempio: /Library/LaunchAgent/foo.plist . All'interno di questo .plist, è impostato per essere eseguito durante LoginWindow e Aqua .

Quando tento di avviare il mio computer e accedere alla schermata di accesso, questo plist dovrebbe essere eseguito, ma restituisce il seguente errore (nella console):

launchctl: Dubious ownership on file (skipping): /Library/LaunchAgents/foo.plist

Quando tento di accedere a un account non amministratore, fornisce esattamente lo stesso messaggio di errore. Quando tento di accedere con un account amministratore, funziona perfettamente.

Sarò onesto, non so molto sui privilegi e le autorizzazioni di Mac OS X.

Per creare il file, l'ho aperto in emacs , con sudo sull'account admin (ad esempio utilizzando il comando su poiché l'altro account non ha privilegi sudo) e quindi salvato.

Quale account devo utilizzare per creare il file in modo che funzioni per tutti gli utenti?
Devo usare il comando sudo?
Devo modificare le autorizzazioni del file (ad esempio, utilizzare chmod )?
C'è un modo semplice per prendere un file esistente e cambiarne la proprietà invece di dover ricreare il file?
Qualcuno potrebbe spiegare perché questo errore si verifica?

    
posta Senseful 18.10.2010 - 00:00
fonte

5 risposte

51

Se un plist appartiene a root e può essere scritto da un utente diverso da root, si tratta di un problema di sicurezza.

Puoi cambiare il proprietario in root con sudo chown root <filename> e modificare i permessi con sudo chmod 644 <filename> (4 per accesso in lettura, 2 per accesso in scrittura, 1 per accesso in esecuzione, aggiunto. Il primo numero è per il proprietario, il secondo per il gruppo, il terzo per tutti.)

    
risposta data 18.10.2010 - 16:49
fonte
14

Da launchctl (1) manpage Descrizione del sottocomando load :

Note that per-user configuration files (LaunchAgents) must be owned by the user loading them. All system-wide daemons (LaunchDaemons) must be owned by root. Configuration files must not be group- or world-writable. These restrictions are in place for security reasons, as allowing writability to a launchd configuration file allows one to specify which executable will be launched.

launchctl ha diversi messaggi "Dubious ...". Il codice launchd per 10.6.7 (per esempio) ha tre di questi messaggi nel suo launchctl.c (vedi la funzione 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>

Per evitare questi messaggi, un percorso deve essere (# 3) un normale file o directory 1 (o un collegamento simbolico a uno) che sia (# 1) di proprietà di root o dell'utente che invoca e ( # 2) non "gruppo" o "altro" scrivibile (cioè chmod go-w ).

1 Nessuna named pipe, nodi speciali di device block / character, socket di domini locali, ecc.

Il tuo file è probabilmente di proprietà dell'utente amministratore poiché dici di non ricevere il messaggio quando esegui l'accesso come tale utente (il percorso è di proprietà dell'utente chiamante in quel caso).
Per fare in modo che il percorso funzioni per gli altri utenti, dovrebbe essere di proprietà di root.

Per sistemare questo, fai:

sudo chown root /Library/LaunchAgent/foo.plist
    
risposta data 05.05.2011 - 05:21
fonte
1

Grazie per la risposta (cambiando proprietario per il root) - questo è tutto ciò di cui avevo bisogno.

Per rendere questo un po 'più di un post "io troppo" ... Sono arrivato qui attraverso un percorso contorto: stavo ottenendo "Questa API può essere utilizzata solo da un processo in esecuzione all'interno di una sessione Aqua" errori per un launchdaemon . Alla ricerca di una risposta che mi ha portato a technote di Apple su demoni e agenti che spiegava come risolvere l'errore "Aqua session", ma questo mi lasciava problemi di "dubbia proprietà". È così che sono arrivato qui, dove è stato risolto il mio ultimo problema.

Forse aggiungere tutto questo a questa discussione farà sì che alcuni motori di ricerca colleghino questa pagina a uno dei problemi precursori, risparmiando così qualche futuro avventuriero.

    
risposta data 08.12.2014 - 22:30
fonte
-2

per il file in ~ / Library / LaunchAgent di proprietà dell'utente e non root non sudo, se si deve modificare la proprietà poiché lo si sta caricando dall'utente root

    
risposta data 09.11.2011 - 15:47
fonte
-3

Questo è ciò che accade quando le persone non sanno come funziona sudo . Per disabilitare i servizi che si trovano su file di proprietà dell'utente, chiama semplicemente launchtl senza sudo .

    
risposta data 16.07.2012 - 05:42
fonte

Leggi altre domande sui tag