7

sto lavorando su qualcosa che ha bisogno di installare i file periodicamente in una cartella in/Library.Ottenere l'accesso root w/ha elevato Helper & SMJobBless

Capisco che in passato ho potuto utilizzare uno dei metodi Autentica ma quelli da allora sono stati deprecati in 10.7.

Quello che ho capito dalla mia lettura finora:

dovrei creare un aiutante che in qualche modo viene autenticato e che hanno aiutante fare tutte le attività in movimento. Ho dato un'occhiata ad alcuni dei codici di esempio, inclusi alcuni che riguardano XPC e uno chiamato Elevator, ma sono un po 'confuso.

Gran parte sembra occuparsi della configurazione di una sorta di modello client/server, ma non sono sicuro di come questo si tradurrebbe in me in realtà installando i miei file nelle directory corrette. La maggior parte degli esempi sono solo stringhe passanti.

La mia domanda semplice: come posso creare la mia cartella in/Libreria di programmazione e periodicamente scrivere file ad esso, mentre solo richiedere all'utente una password volta e mai più? Non sono davvero sicuro su come affrontarlo e non sembra esserci molta documentazione.

risposta

4

È corretto che non ci sia molta documentazione per questo. Fonderai fondamentalmente un'altra app, l'app helper, che verrà installata con SMJobBless(). Non sorprendentemente, la parte difficile qui è la firma del codice. La parte meno ovvia per me è stata che le voci SMAuthorizedClients e SMPrivilegedExecutables nei file info plist di ogni app dipendono dall'identità/certificato utilizzato per firmare l'app. C'è anche un trucco con il compilatore/linker per ottenere il file info plist compilato nello strumento helper, che sarà un singolo file eseguibile, piuttosto che un pacchetto.

Una volta che l'helper app installato e funzionante poi si deve trovare un modo per comunicare con esso in quanto si tratta di due diversi processi. XPC è un'opzione, forse la più semplice. XPC viene in genere utilizzato con i processi server, ma ciò che si sta utilizzando qui è solo il lato di comunicazione di XPC. Fondamentalmente passa i dizionari avanti e indietro tra le due app. Crea un formato standard per il dizionario. Ho usato @ "action", @ "source" e @ "destination" con 3 diversi valori di azione, @ "filemove", @ "filecopy" e @ "makedirectory". Queste sono le 3 cose che la mia app helper può fare e posso aggiungerne altre se necessario.

L'applicazione aiutante sarà essenzialmente l'installazione la roba gestore collegamento XPC ed evento e attendere una connessione e comandi. I comandi saranno solo un dizionario in modo da controllare le chiavi/i valori appropriati e fare qualsiasi cosa.

posso fornire ulteriori dettagli e il codice, se avete bisogno di più aiuto, ma la questione è di 9 mesi di età, quindi non voglio perdere tempo con i dettagli che hai già capito.