No saber la contraseña complica las cosas, pero tal vez la solución es: ¿ es posible borrar temporalmente la contraseña de un usuario? (Y luego restablecerlo a lo que era antes).
Como un inicio:
Primero, obtenga la ventana de inicio de sesión para mostrar. Simplemente cierre la sesión del usuario actual, use el cambio rápido de usuario o use SSH:
cd "/ System / Library / CoreServices / Menu Extras / User.menu / Contents / Resources /"
sudo ./CGSession -suspend
O, para cambiar a un usuario específico de inmediato, lo que probablemente mostrará la ventana de inicio de sesión (esto de repente ya no funciona en mi 10.5 Leopard):
sudo ./CGSession -switchToUserID 501
Lo que se muestra ahora depende un poco de las Preferencias del sistema, pero supongamos que son los iconos de los usuarios y sus nombres. Para activar un nombre, tendríamos que escribir las primeras letras. Luego, después de Volver, se muestra el mensaje de contraseña. Alternativamente, uno puede seleccionar cualquier nombre (como presionar la flecha hacia abajo) y luego presionar Opción-Retorno para que se le solicite cualquier nombre de usuario y su contraseña. No sé cómo se puede saber qué pantalla se muestra, pero guardemos eso para más tarde ...
Entonces, para seleccionar el primer nombre de usuario (aleatorio) y presionar Opción-Retorno, escriba un nombre de usuario específico, presione Retorno y escriba la contraseña:
sudo osascript -e 'tell app "Eventos del sistema"
código clave 125
pulsación de tecla usando la opción hacia abajo
pulsación de tecla "el nombre de usuario"
retraso 1.0
tecla de retorno
retraso 1.0
pulsación de tecla "la contraseña"
retraso 1.0
tecla de retorno
fin decir '
Lo anterior muestra algún error, que por lo que puedo decir no limita el uso:
osascript [285]: 3891612: (connectAndCheck) Las aplicaciones no confiables no son
permitido conectarse o iniciar Windows Server antes de iniciar sesión.
_RegisterApplication (), NO SE PUEDE establecer la conexión predeterminada a
WindowServer, _CGSDefaultConnection () es NULL.
Alternativamente, use la secuencia de comandos específica del idioma de " Ejecutar la ventana de inicio de sesión a través del Escritorio remoto de Apple " (tal vez algún día los comentarios en ese sitio muestren una mejor solución):
tell proceso "SecurityAgent"
establecer el valor del campo de texto 1 del grupo 1 de la ventana 1 en "el nombre de usuario"
establecer el valor del campo de texto 2 del grupo 1 de la ventana 1 a "la contraseña"
final decir
haga clic en el botón "Iniciar sesión" de la ventana 1 del proceso de solicitud "SecurityAgent"
Pero el problema principal es: esto todavía necesita la contraseña . Sin embargo: obviamente, no se necesita contraseña cuando un usuario tiene una contraseña en blanco. De hecho, para contraseñas en blanco, solo hacer clic en el icono de un usuario es todo lo que se necesita. Entonces, si el envío de pulsaciones de teclas usando AppleScript es aceptable, entonces tal vez "todo" lo que queda por resolver:
¿Es posible borrar temporalmente la contraseña de un usuario para permitir iniciar (o reanudar) la sesión sin saber esa contraseña ...?
¿Se puede hacer que el AppleScript sea a prueba de errores? Me gusta:
- ¿Cómo saber si la ventana de inicio de sesión está visible? (tal vez
stat -f%Su /dev/console
pueda ayudar, ya que eso cederoot
mientras se muestra la ventana de inicio de sesión)
- Como decir qué ventana de inicio de sesión se muestra? (Como: ¿uno que muestre iconos y nombres de inicio de sesión, o una lista desplegable, o tal vez solo una solicitud de contraseña si alguien seleccionó cambiar a un usuario específico?)
- Deshágase de los retrasos.
- ¿Qué pasa con ese mensaje de error?
(Una nota para la prueba: cuando se usa Compartir pantalla, parece que establecer la preferencia Al controlar las computadoras: Cifrar contraseñas y pulsaciones de teclas también conserva la conexión cuando se muestra la ventana de inicio de sesión, o después de que un usuario haya iniciado sesión correctamente. Cuando se utiliza Cifrar toda la red datos, entonces mi Mac necesita restablecer la conexión de pantalla compartida cada vez que se muestra un inicio de sesión o se cambia un usuario).
sudo osascript -e 'tell app "System Events" to keystroke "password" & return'
. Con la pantalla bloqueada, ingresar un nombre de usuario administrativo y una contraseña reanuda la sesión del otro usuario. ¿Pero cómo iniciar una sesión para cualquier usuario sin conocer la contraseña? (Sólo para estar seguro, si conoce la contraseña: Otra solución podría ser la pantalla compartida, que también trabaja para la pantalla de inicio de sesión Tendrá que volver a conectar la pantalla compartida después de una sesión específica de usuario se inicia o se reanuda..)su
en el símbolo del sistema, pero luego para una sesión de GUI. O simplemente como cuando la pantalla está bloqueada, donde al ingresar un nombre de usuario administrativo y contraseña se reanuda la sesión del otro usuario.)He estado investigando esto recientemente.
Ponga esto en la pila PAM de su aplicación, o pruebe con sshd:
Eso contribuye en gran medida a obtener una sesión gráfica que está bastante cerca de una sesión de usuario desconectada. En particular, está en el espacio de nombres de bootstrap correcto y tiene los puertos de bootstrap correctos (creo). Puede verificar la fuente de lo que hace pam_launchd; usa una biblioteca privada de aspecto razonable (funciones vproc_priv.h en libvprop) para llamar a las rutinas de Mach para configurar los puertos y el espacio de nombres. Coincide con todos los documentos (limitados) que Apple proporciona para las llamadas al sistema derivadas de Mach.
A continuación, debe configurar su ID de usuario de auditoría a la del usuario con la API BSM, o la ventana de inicio de sesión no le hablará en Lion.
La sesión se parece mucho a una sesión desconectada ahora si marca "launchctl blist", y algunos procesos y servicios cobran vida (como el tablero de cartón, etc.). De hecho, todo excepto Finder y loginwindow se está ejecutando. Sin embargo, hasta que la ventana de inicio de sesión se ejecute, no puede iniciar una aplicación gráfica, y el proceso de ventana de inicio de sesión por sesión siempre se genera como un elemento secundario directo de la global. ¿Cómo se empuja el proceso de la ventana de inicio de sesión para iniciar una nueva ventana de inicio de sesión en la sesión nueva? ¡No puedo encontrar una manera de poner la última pieza en su lugar!
Cualquier ayuda para completar esta respuesta recibió con gratitud.
fuente
ejecutar el comando con sudo le permite configurar el script como ilegible para los usuarios estándar. No es perfecto, pero si tu usuario administrador ya está comprometido, ¡el juego termina de todos modos!
chmod ur scriptname
mi script se ve así, funciona de forma remota cuando un usuario ya se está ejecutando, para cambiar a un segundo usuario a través de SSH (probado en Snow Leopard 10.6.3):
fuente
Necesitaba registrar al mismo usuario en 25 estaciones de trabajo diferentes, para poder realizar una actualización de software. No pude ejecutar el comando 'osascript -e ...' de manera confiable desde sesiones SSH, incluso con privilegios de sudo. Sin embargo, pude ejecutarlo a través de Apple Remote Desktop. Si tiene ARD:
Me encantó encontrar los 25 Mac Minis con Finder como usuario, en menos de un minuto. Solo para reiterar, con ARD no tiene que escribir la contraseña de sudo en cada máquina. Las líneas que necesita pegar en el cuadro de diálogo de comando son (sustituyendo un nombre de usuario y contraseña válidos):
fuente