Come usare il comando 'login' per fare uno screenshot del desktop di un altro utente?

1

Voglio solo sapere se questo può essere fatto in un comando senza interazioni in macOS. C'è un modo interattivo per farlo (ho prima acceso l'utente abc e poi sono tornato indietro in modo che abc avesse un desktop nascosto):

(in sudo mode)
login abc
(type the password)
screencapture <png-file-name>

Nel mio test, questo avrebbe richiesto uno screenshot del desktop nascosto di abc e salvato nel file. Ma la cosa strana è che quando uso l'opzione -f (applicabile solo in modalità sudo) per eliminare la necessità di digitare la password, lo screenshot diventa il desktop dell'utente corrente, non il desktop di abc:

(in sudo mode)
login -f abc /usr/sbin/screencapture <png-file-name>
OR
login -f abc bash -c "/usr/sbin/screencapture <png-file-name>"

Entrambi non funzionano come previsto.

Anche

su o sudo non possono soddisfare i miei requisiti, perché prendono anche gli screenshot del desktop dell'utente corrente.

Potresti chiederti perché lo voglio. In effetti non voglio gli screenshot, voglio sicurezza. Voglio rendere la shell di questo altro utente completamente isolata dall'attuale utente, in modo che qualsiasi codice dannoso in esecuzione in questa shell non sia in grado di catturare screenshot dell'utente corrente.

    
posta Zhenzhen Zhan 20.06.2017 - 14:24
fonte

1 risposta

1

Il desktop è gestito dal daemon WindowServer.

La comunicazione con WindowServer è protetta in modo che solo l'utente root e l'utente della console corrente possano accedere a WindowServer.

Poiché stai usando sudo, hai i privilegi di root per essere in grado di comunicare con WindowServer.

Oltre a questo viene utilizzato lo spazio dei nomi corrente per determinare quale desktop è "il tuo desktop". Viene creato uno spazio dei nomi di sessione per ciascun utente attualmente connesso.

Quando usi il comando login, ti viene chiesto di inserire la tua password. Questo è effettivamente gestito dal sottosistema PAM. Come parte della configurazione PAM standard su macOS, ti viene trasferito nello spazio dei nomi della sessione corretto (il tuo), quando esegui l'accesso con la password corretta.

Quindi quando usi "login" e inserisci una password, ottieni uno screenshot del desktop di quell'utente perché sei nel giusto spazio dei nomi.

Tuttavia, quando usi "login -f" stai bypassando PAM. Pertanto, i moduli PAM non vengono mai eseguiti e tu rimani nello stesso spazio del nome che eri prima.

Quindi quando usi "login -f" per fare lo screenshot, stai effettivamente ottenendo uno screenshot dell'utente attualmente connesso - e non l'utente "abc" che vuoi.

Puoi leggere ulteriori informazioni a riguardo nella nota tecnica TN2083:

link

    
risposta data 20.06.2017 - 19:52
fonte

Leggi altre domande sui tag