Non conoscere la password rende le cose complicate, ma forse la soluzione è: è possibile cancellare temporaneamente la password di un utente? (E successivamente ripristinalo a qualsiasi cosa fosse prima.)
Come inizio:
Innanzitutto, visualizza la finestra di accesso da visualizzare. Basta disconnettere l'utente corrente, utilizzare la commutazione rapida dell'utente o utilizzare SSH:
cd "/ Sistema / Libreria / CoreServices / Menu Extra / User.menu / Contenuti / Risorse /"
sudo ./CGSession -suspend
Oppure, per passare subito a un utente specifico, che probabilmente mostrerà la finestra di accesso (questo all'improvviso non funziona più sul mio 10.5 Leopard):
sudo ./CGSession -switchToUserID 501
Ciò che viene mostrato ora dipende un po 'dalle Preferenze di Sistema, ma supponiamo che siano le icone degli utenti e i loro nomi. Per attivare un nome dovremmo digitare le prime lettere. Quindi, dopo Return, viene visualizzata la richiesta della password. In alternativa si può scegliere qualsiasi nome (come premendo freccia giù) e quindi premere Opzione-A capo deve essere richiesto sia per qualsiasi nome utente e la relativa password. Non so come si possa dire quale schermata viene mostrata, ma salviamola per dopo ...
Quindi, per selezionare il primo nome utente (casuale) e premere Opzione-Invio, digitare un nome utente specifico, premere Invio e digitare la password:
sudo osascript -e 'dire all'app "Eventi di sistema"
codice chiave 125
la pressione del tasto ritorna usando l'opzione giù
sequenza di tasti "il nome utente"
ritardo 1.0
sequenza di tasti
ritardo 1.0
sequenza di tasti "la password"
ritardo 1.0
sequenza di tasti
fine dire
Quanto sopra mostra qualche errore, che per quanto ne so non limita l'uso:
osascript [285]: 3891612: (connectAndCheck) Le app non attendibili non lo sono
autorizzato a connettersi o avviare Windows Server prima dell'accesso.
_RegisterApplication (), NON RIUSCITO A stabilire la connessione predefinita a
il WindowServer, _CGSDefaultConnection () è NULL.
In alternativa, utilizza lo script specifico della lingua da " Script della finestra di accesso tramite Apple Remote Desktop " (forse un giorno i commenti su quel sito mostreranno una soluzione migliore):
dire al processo "SecurityAgent"
imposta il valore del campo di testo 1 del gruppo 1 della finestra 1 su "nome utente"
imposta il valore del campo di testo 2 del gruppo 1 della finestra 1 su "la password"
fine dirlo
fare clic sul pulsante "Accedi" della finestra 1 del processo di applicazione "SecurityAgent"
Ma il problema principale è: questo richiede ancora la password . Tuttavia: ovviamente non è necessaria alcuna password quando un utente ha una password vuota. In effetti, per le password vuote è sufficiente fare clic sull'icona di un utente. Quindi, se l'invio di sequenze di tasti utilizzando AppleScript è accettabile, forse "tutto" rimane da capire:
È possibile cancellare temporaneamente la password di un utente, per consentire l'avvio (o la ripresa) della sessione senza conoscere quella password ...?
Si può rendere AppleScript a prova di errore? Piace:
- Come sapere se la finestra di accesso è visibile? (forse
stat -f%Su /dev/console
può essere d'aiuto, dato che si ottieneroot
mentre viene visualizzata la finestra di accesso)
- Come dire quale finestra di accesso è mostrata? (Come: una che mostra icone e nomi di accesso, o un elenco a discesa, o forse solo una richiesta di password se qualcuno ha scelto di passare a un utente specifico?)
- Sbarazzati dei ritardi.
- Che dire di quel messaggio di errore?
(Una nota per il test: quando si utilizza la condivisione dello schermo sembra che l'impostazione della preferenza Quando si controllano i computer: Crittografa password e sequenze di tasti mantiene anche la connessione solo quando viene visualizzata la finestra di accesso o dopo che un utente ha effettuato correttamente l'accesso. Quando si utilizza Crittografa tutta la rete dati quindi il mio Mac ha bisogno di ristabilire la connessione condivisione dello schermo ogni volta che un account di accesso viene visualizzata o un utente viene commutata).