¿Cómo usar el comando 'iniciar sesión' para tomar una captura de pantalla del escritorio de otro usuario?

1

Solo quiero saber si esto se puede hacer en un comando sin ninguna interacción en macOS. Hay una forma interactiva de hacer esto (primero cambié al usuario abc y luego volví a cambiar para que abc tuviera un escritorio oculto):

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

En mi prueba, esto tomaría una captura de pantalla del escritorio oculto de abc y lo guardaría en el archivo. Pero lo extraño es que cuando uso la opción -f (solo aplicable en modo sudo) para eliminar la necesidad de escribir la contraseña, la captura de pantalla se convierte en el escritorio del usuario actual, no en el escritorio de 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>"

Ambos no funcionan como se esperaba.

su o sudo tampoco pueden cumplir mis requisitos, ya que también toman las capturas de pantalla del escritorio del usuario actual.

Usted puede preguntarse por qué quiero eso. De hecho no quiero las capturas de pantalla, quiero seguridad. Quiero que el shell de este otro usuario esté completamente aislado del usuario actual, para que cualquier código malintencionado que se ejecute en este shell no pueda tomar una captura de pantalla del usuario actual.

    
pregunta Zhenzhen Zhan 20.06.2017 - 14:24

1 respuesta

1

El escritorio es administrado por el demonio WindowServer.

La comunicación con WindowServer está protegida de modo que solo el usuario root y el usuario actual de la consola puedan acceder a WindowServer.

Debido a que está utilizando sudo, tiene privilegios de root para poder comunicarse con WindowServer.

Además de esto, el espacio de nombres actual se usa para determinar qué escritorio es "su escritorio". Se crea un espacio de nombres de sesión para cada usuario que haya iniciado sesión actualmente.

Cuando usa el comando de inicio de sesión, se le solicita que ingrese su contraseña. Esto es realmente manejado por el subsistema PAM. Como parte de la configuración estándar de PAM en macOS, se transfiere al espacio de nombres de la sesión correcta (su propio), cuando inicia sesión con la contraseña correcta.

Por lo tanto, cuando usa "iniciar sesión" e ingresa una contraseña, obtiene una captura de pantalla del escritorio de ese usuario porque está en el espacio de nombres correcto.

Sin embargo, cuando usas "login -f" estás omitiendo PAM. Por lo tanto, los módulos PAM nunca se ejecutan, y usted permanece en el mismo espacio de nombre que antes.

Por lo tanto, al usar "login -f" para tomar la captura de pantalla, en realidad está obteniendo una captura de pantalla del usuario que ha iniciado sesión actualmente, y no el usuario "abc" que desea.

Puede leer más sobre esto en la nota técnica TN2083:

enlace

    
respondido por el jksoegaard 20.06.2017 - 19:52

Lea otras preguntas en las etiquetas