Come posso dare a uno script CGI il permesso di accedere a Calendar?

3

Quando eseguo il mio script dalla riga di comando che posso usare - in realtà mi viene richiesto di usare - Preferenze di Sistema per aggiungere ssh-keygen-wrapper per essere autorizzato ad accedere al Calendario.

Ma quando eseguo lo script come programma CGI non è autorizzato ad accedere al Calendario - è in esecuzione come nobody e fallisce - e non so come dare il permesso richiesto dallo script invocato da CGI.

Una domanda correlata è anche se io dovrei come dare nobody di accesso a Calendar ... ma questo è un problema separato.

[FYI]
macOS Alta Sierra Script Python CGI utilizzando un AppleScript per leggere gli eventi del calendario

    
posta iainH 12.10.2017 - 11:47
fonte

2 risposte

1

Ovviamente @Sirens evidenzia l'evidente difetto nel mio approccio. Avevo utilizzato AppleScript come un modo semplice per accedere ai calendari disponibili alla riga di comando dell'utente che avevo effettuato l'accesso, ma, ovviamente, non erano disponibili per nessuno .

Ho valutato con gratitudine la risposta di @ Siren e ho concordato con lui sul fatto che il mio approccio fosse fondamentalmente sbagliato e che una soluzione fosse o troppo pericolosa o sgraziata per prendere in considerazione la possibilità di proseguire ulteriormente.

Spero che questo rappresenti una risposta - utile a chiunque abbia preso questa svolta errata - dal momento che sembra ovvio perseguire un approccio più informato usando le librerie Python disponibili per creare uno script CGI dove I (e nessuno ) può fornire esplicitamente al Calendario le credenziali del client indipendentemente dall'utente o dalla macchina che esegue lo script.

Ho usato caldav come prova del concetto ma ho riscontrato alcuni problemi nel fare ciò, quindi ora sto guardando CalDAVClientLibrary di Apple che sembra essere un po 'più completo.

    
risposta data 15.10.2017 - 12:17
fonte
2

L'utente nobody non è interattivo e non ha comunque calendari. Avrai bisogno di avere qualche componente (magari un'altra app / processo personalizzata) in esecuzione per fornire le informazioni del calendario.

Hai davvero due opzioni, una delle quali è pessima.

In primo luogo, potresti far girare gli script CGI come te. Questo non è difficile ma pericoloso e non consigliato.

In secondo luogo, puoi costruire ciò che è essenzialmente un proxy di calendario. Questo potrebbe essere un altro programma (eseguito come te) che in cinque minuti legge i dati del calendario e li scrive su un file che nessuno, l'account, può leggere. Sembra che tu sia già familiare e funzioni perfettamente con i calendari, quindi questo non dovrebbe essere un problema, è solo un altro script che pianifichi con cron.

Un'altra cosa, anche se non sono sicuro che funzioni per nessuno, è che puoi eseguire sudo su nobody e poi lanciarlo. Dato che OSX sa che PTTY è collegato alla sessione utente, mostrerà il prompt lì da accettare. Anche se non sarai ancora in grado di accedere ai calendari degli utenti, questo trucco è utile se devi usare questi tipi di permessi come root che non ha una sessione grafica.

    
risposta data 13.10.2017 - 18:45
fonte

Leggi altre domande sui tag