Вызовите Mac графический вход в систему от SSH

Как я вызываю Mac графический вход в систему от SSH? Есть ли способ сделать loginwindow процесс запускает сеанс пользователя путем выполнения команды, когда удаленно зарегистрировано на пути SSH как администратор на Mac OS X?

Когда машина в окне входа в систему (никакой пользователь не в настоящее время зарегистрирован), я хочу, чтобы это открыло сессию пользователя, как будто я нажал на имя пользователя и ввел пароль.

Решения, которые не включают сценарии GUI, высоко предпочтены, но эта страница Apple KB может быть представляющей интерес для тех, кто идет тем путем.

16
задан 17.07.2011, 04:52

2 ответа

Не знание пароля делает вещи сложными, но возможно решение: действительно ли возможно временно заменить пароль пользователя пустым местом? (И впоследствии сброс это к тому, чем это было прежде.)

Как запуск:

Во-первых, заставьте окно входа в систему отображаться. Просто выйдите из системы текущий пользователь, используйте быстрое переключение между пользователями или используйте SSH:

cd "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/"
sudo ./CGSession -suspend

Или, для переключения на определенного пользователя сразу же, который, вероятно, покажет окно входа в систему (это внезапно больше не работает над моими 10,5 Leopard):

sudo ./CGSession -switchToUserID 501

Что показывают, теперь зависит немного от Установок системы, но давайте предположим, что это - значки пользователей и их имена. Для активации имени, мы должны были бы ввести первые буквы. Затем после Возврата пароль запрашивает шоу. Кроме того, можно выбрать любое имя (как путем нажатия Arrow Down) и затем нажать Option-Return, который будет запрошен и любое имя пользователя и его пароль. Я не знаю, как можно сказать, какой экран показывают, но давайте на потом сохраним это...

Так, чтобы выбрать первое (случайное) имя пользователя и нажать Option-Return, введите определенное имя пользователя, поразите Возврат и введите пароль:

sudo osascript -e 'tell app "System Events"
  key code 125
  keystroke return using option down
  keystroke "the username"
  delay 1.0
  keystroke return
  delay 1.0
  keystroke "the password"
  delay 1.0
  keystroke return
end tell'

Вышеупомянутые шоу некоторая ошибка, которая насколько я могу сказать, не ограничивает использование:

osascript[285] : 3891612: (connectAndCheck) Untrusted apps are not 
    allowed to connect to or launch Window Server before login.
_RegisterApplication(), FAILED TO establish the default connection to
    the WindowServer, _CGSDefaultConnection() is NULL.

С другой стороны, используйте язык определенный сценарий из "Сценария окно Login через Удаленный рабочий стол Apple" (возможно, однажды, комментарии на том сайте покажут лучшее решение):

tell process "SecurityAgent"
  set value of text field 1 of group 1 of window 1 to "the username"
  set value of text field 2 of group 1 of window 1 to "the password"
end tell
click button "Log In" of window 1 of application process "SecurityAgent"

Но основная проблема: этому все еще нужен пароль. Однако: очевидно, никакой пароль не необходим, когда у пользователя есть пустой пароль. На самом деле, для пустых паролей, просто нажимающих значок пользователя, все, что это необходимо. Так, при отправке использованию нажатий клавиш AppleScript приемлем, затем возможно, "все", что это оставляют выяснить:

  • Действительно ли возможно временно заменить пароль пользователя пустым местом, допускать запуск (или возобновление) сессия, не зная того пароля...?

  • Можно сделать AppleScript защищенным от ошибки? Как:

    • Как сказать, видимо ли окно входа в систему? (возможно, stat -f%Su /dev/console может помочь, поскольку это уступает root в то время как окно входа в систему отображено),
    • Как сказать, какое окно входа в систему показывают? (Как: значки показа и имена для входа в систему или выпадающий список, или возможно только пароль запрашивает, если кто-то выбрал для переключения на некоторого определенного пользователя?)
    • Избавьтесь от задержек.
    • Что относительно того сообщения об ошибке?

(Примечание для тестирования: при использовании Демонстрации экрана кажется что установка предпочтения При управлении компьютерами: Зашифруйте пароли, и нажимает, только также сохраняет соединение, когда окно входа в систему показывают, или после того, как пользователь успешно вошел в систему. Когда использование Шифрует все сетевые данные затем, мой Mac должен восстановить соединение Демонстрации экрана каждый раз, когда вход в систему показывают, или пользователь переключается.)

4
ответ дан 07.12.2019, 10:57

выполнение команды с sudo позволяет Вам устанавливать сценарий на нечитабельный типичными пользователями. Это не прекрасно, но если Ваш администраторский пользователь уже скомпрометирован, игра закончена так или иначе!

chmod u-r scriptname

мой сценарий похож на это, он работает удаленно, когда один пользователь уже работает, для переключения на второго пользователя через SSH (протестированный на Snow Leopard 10.6.3):

#!/bin/bash
#go to login window
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID 503

osascript -e 'tell app "System Events"
keystroke "password"
  delay 1.0
  keystroke return
end tell'

exit
0
ответ дан 07.12.2019, 10:57

Теги

Похожие вопросы