Domanda

Sto costruendo un'applicazione Cocoa che modifica un file nel sistema operativo dell'utente, che richiede l'autorizzazione admin. Ho un proof of concept di lavoro che utilizza authopen ma non fornisce l'esperienza UX spero di realizzare. Ogni volta che il file viene modificato viene richiesto all'utente di inserire la propria password. C'è un modo per avere autorizzazioni concesse per l'applicazione per tutta la durata della sua vita?

Obiettivo: Applicazione chiede all'utente la password una volta mai , che va applicazione indietro non lo fa la richiesta di password.

Avanti migliore: Applicazione chiede all'utente la password una volta al momento del lancio dell'applicazione , andando indietro applicazione non richiede la password fino al riavvio dell'applicazione.

Sono consapevole di Autorizzazione servizi e la possibilità di creare un demone che si occupa specificamente di modificare i file privilegiati, ciò che mi incuriosisce è che se uno dei miei obiettivi elencati sono anche possibile prima di immergersi troppo in profondità in un altro sistema.

Apprezzate qualsiasi suggerimento, critica o link utili.

Saluti, Dustin

È stato utile?

Soluzione

Sì, utilizzando autorizzazione Services è la via da seguire. Si ottiene un AuthorizationRef nell'applicazione tramite AuthorizationCopyRights () (che indica la UI se necessario), e passare questo per il vostro aiuto (da imballaggio in su in una forma esterna), che verifica che in realtà ha il diritto necessaria prima di eseguire l'operazione privilegiata . Autorizzazione Services è in grado di registrare i diritti nel database /etc/authorization, quindi se si sceglie un costume destra è possibile scegliere le impostazioni predefinite per chi è permesso di acquisire, cosa timeout o altre condizioni esistono e così via.

Per distribuire il vostro strumento di aiuto privilegiata, è necessario utilizzare il framework Service Management, in particolare SMJobBless() che verifica che la firma del codice identità sul vostro cliente e aiutante partita prima della distribuzione del aiutante come un lavoro launchd. Allora il vostro aiuto può essere avviata su richiesta con l'applicazione principale.

Non esitare a chiedere se si vuole chiarimenti su qualsiasi passo nella risposta, tuttavia ho già scritto su entrambi questi aspetti della separazione dei privilegi nel mio libro professionale Cocoa Application Security quindi sentitevi liberi di acquistare una copia o due; -).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top