Perché mi appare una “dubbia proprietà del file” errore quando lancio Agent viene eseguito il mio file .plist?

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

Domanda

Ho un agente di avvio configurato per l'esecuzione di 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 lanciare il mio computer e arrivare alla schermata di login, questo plist dovrebbe funzionare, ma invece ha pronunciato la seguente errore (nella console):

launchctl: proprietà Dubious in archivio (saltando): /Library/LaunchAgents/foo.plist

Quando tento di login per un account non-admin, dà esattamente lo stesso messaggio di errore. Quando tento di login con un account amministratore, funziona benissimo.

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

Per creare il file, l'ho aperto in emacs, con sudo sul conto di amministrazione (per esempio utilizzando il comando su in quanto l'altro account non dispone di privilegi sudo) e poi salvato.

che rappresentano devo usare per creare il file in modo che funzioni per tutti gli utenti?
Ho bisogno di usare il comando sudo?
Ho bisogno di cambiare i permessi dei file (ad esempio l'uso chmod)?
C'è un modo semplice per prendere un file esistente e cambiare la sua proprietà, invece di dover ricreare il file?
Qualcuno potrebbe spiegare perché questo errore si verifica?

È stato utile?

Soluzione

Se un plist è di proprietà di root e scrivibile da un utente diverso da root, che è un problema di sicurezza.

È possibile modificare il proprietario a root con sudo chown root <filename>, e cambiare i permessi con sudo chmod 644 <filename> (4 per l'accesso in lettura, 2 per l'accesso in scrittura, 1 per eseguire l'accesso, ha aggiunto l'alto. Il primo numero è per il proprietario, il secondo per la gruppo, il terzo per tutti.)

Altri suggerimenti

launchctl (1) manpage 's descrizione del sottocomando load:

Si noti che per il singolo utente i file di configurazione (LaunchAgents) mosto essere di proprietà dell'utente carico loro. Tutti i demoni a livello di sistema (LaunchDaemons) devono essere di proprietà di radice. I file di configurazione non devono essere gruppo- o scrivibile-mondo. Queste restrizioni sono in luogo per motivi di sicurezza, a permettere scrivibilità in un file di configurazione di launchd permette per specificare quale sarà lanciato eseguibile.

launchctl ha diversi “dubbie ...” messaggi. Il launchd codice per 10.6.7 (per esempio) ha tre di questi messaggi nella sua launchctl.c (vedere 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 nome di percorso deve essere (3 #) un file regolare o una directory 1 (o un link simbolico a uno) che è (1 #) di proprietà di root o l'utente invocando e ( # 2) non “gruppo” o “altro” scrivibile (ovvero chmod go-w).

1 Non named pipe, blocco / carattere nodi di dispositivo speciali, socket di dominio locali, ecc.


Il file è probabilmente di proprietà dell'utente amministratore in quanto si dice che non si ottiene il messaggio quando si accede come quell'utente (il percorso è di proprietà dell'utente che esegue il richiamo in questo caso).
Per far funzionare il percorso per gli altri utenti, dovrebbe essere di proprietà di root.

Per organizzare questo, fare:

sudo chown root /Library/LaunchAgent/foo.plist

Grazie per la risposta (che cambia proprietario root) -. Questo è tutto quello che dovevo

Per rendere questo un po 'più di un post 'anche me' ... sono arrivato qui attraverso un percorso contorto: mi stavo "Questa API può essere utilizzato solo da un processo in esecuzione all'interno di una sessione Aqua" errori per un launchdaemon . Cercando una risposta a che mi ha portato a technote di Apple su demoni e gli agenti , che ha spiegato come risolvere l'errore 'sessione di Aqua', ma che mi ha lasciato con questioni 'dubbia proprietà'. Ecco come sono arrivato qui, dove il mio problema finale è stato risolto.

Forse l'aggiunta di tutto questo a questa discussione causerà qualche motore di ricerca per collegare questa pagina ad una delle questioni precursori, risparmiando così un futuro avventuriero po 'di tempo.

per il file in ~ / Library / LaunchAgent di proprietà dell'utente e non radice Non sudo, se youll devono cambiare la proprietà dal momento che si sta caricando da utente root

Questo è ciò che succede quando la gente non sa come funziona sudo. Per disabilitare i servizi che si trovano su file di proprietà di vostro utente solo launchtl chiamata senza sudo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a apple.stackexchange
scroll top