L'agente di avvio che richiama lo script python restituisce l'errore di autorizzazione

1

Sto cercando di usare il seguente .plist per invocare uno script python.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>com.apple.inMemTask14</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py</string>
        </array>
        <key>StartInterval</key>
        <integer>300</integer>  
    </dict>
</plist>

Per qualche motivo quando eseguo:

launchctl load -w /Users/open/Library/LaunchAgents/com.apple.inMemTask14.plist

Ho i seguenti errori nel mio system.log:

Mar 27 11:39:19 openZ-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.inMemTask14): This service is defined to be constantly running and is inherently inefficient.
Mar 27 11:39:19 openZ-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.inMemTask14[1335]): Could not find and/or execute program specified by service: 13: Permission denied: /Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py
Mar 27 11:39:19 openZ-MacBook-Pro com.apple.xpc.launchd[1] (com.apple.inMemTask14[1335]): Service setup event to handle failure and will not launch until it fires.

Ho dato il permesso di esecuzione allo script python. C'è qualcosa di sbagliato nel mio .plist ? Come posso correggere gli errori visualizzati nei log?

    
posta feners 27.03.2018 - 18:21
fonte

1 risposta

1

Hai un errore e uno minore nel tuo plist e probabilmente una incoerenza nel tuo file system:

Mantenere vivo un lavoro, non importa quali e iniziare lo stesso lavoro ogni 5 minuti è come essere costretti a stare in bagno e andare in bagno ogni cinque minuti perché di ... un ablutomania .

Quindi rimuovi la parte:

    <key>KeepAlive</key>
    <true/>

Aggiungi il cestino python negli argomenti del programma:

sostituire:

<key>ProgramArguments</key>
<array>
    <string>/Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py</string>
</array>

con:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/python</string>
    <string>/Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py</string>
</array>

Se preferisci un altro bin python (ad esempio un brew / python), usa invece questo.

Infine assicurati che l'utente che ha effettuato l'accesso (ovvero quello che avvia l'agente) abbia almeno accesso in lettura a /Users/open/Library/Containers/.heheOSX/MacOSHighSierra.py !

Riguardo l'ultimo problema:

Uso il seguente alias nel mio .bash_profile per ottenere tutte le autorizzazioni / ACL di un percorso:

alias lspath='(IFS=/; set -f -- $PWD; for arg; do path="${path%/}/$arg"; paths+=("$path"); done; ls -dlaOe@ "${paths[@]}")'

Se inserisci lspath dopo aver effettuato il cd su una cartella, verranno visualizzate tutte le autorizzazioni / ACL:

$ cd /Users/user1/Library/Containers/.heheOSX
$ lspath
drwxr-xr-x  39 root   wheel  - 1394 27 Mär 17:44 /
drwxr-xr-x   7 root   admin  -  238  5 Aug  2014 /Users
drwxr-xr-x+ 60 user1  staff  - 2040 26 Mär 23:58 /Users/user1
 0: group:everyone deny delete
drwx------+ 72 user1  staff  - 2448 16 Mär 00:40 /Users/user1/Library
 0: group:everyone deny delete
drwx------  57 user1  staff  - 1938 27 Mär 20:26 /Users/user1/Library/Containers
drwxr-xr-x   2 user1  staff  -   68 27 Mär 20:26 /Users/user1/Library/Containers/.heheOSX

In questo esempio nessun altro utente eccetto user1 (e root ) sarà in grado di avviare / caricare un * .py in / Users / user1 / Library / Containers / .heheOSX perché gli altri utenti non possono attraversare né / Users / user1 / Library / Users / user1 / Library / Containers a causa del loro drwx restrittivo ------ permessi.

    
risposta data 27.03.2018 - 20:07
fonte

Leggi altre domande sui tag