Как ввести во вход в систему lightdm, скрывают из командной строки?

У меня есть компьютер с большими жесткими дисками, настроенными с зашифрованным домом. Это так происходит, что тот же компьютер также работает основной kodi медиацентр моего семейства. Каждый раз, когда мои дети хотят посмотреть фильм, я должен включить его и затем физически подключить клавиатуру к нему и тип в пароле.

Я хотел бы смочь сделать это удаленно.

Конечно, у меня также есть корневой доступ к компьютеру.

Я не готов создать другое имя пользователя с автоматическим входом в систему, потому что большинство медиа-файлов шифруется, и я хочу, чтобы они остались этот путь.

Нормальная комбинация export DISPLAY=0: и source discover_session_bus_addres.sh и xdotool type my_secret_password это работает на ввод в экран блокировки, не продолжает работать lightm.

3
задан 29 March 2018 в 08:41

3 ответа

Вот ответ, который работает в соответствии с Ubuntu 16.04 с lightdm:

  1. Сделайте себя root получить доступ к lightdm's .Xauthority, который расположен под /var/lib/lightdm/.Xauthority. Или скопируйте его где-нибудь, где это будет читаемо Вами и отбросит Ваши корневые полномочия или просто останется корнем.
  2. набор XAUTHORITY указать на тот файл (например. export XAUTHORITY=/var/lib/lightdm/.Xauthority)
  3. набор DISPLAY к активному дисплею (export DISPLAY=:0)
  4. xdotool должен работать теперь. Попробовать

    xdotool type "My super secret password"  
    xdotool key Return
    
5
ответ дан 1 December 2019 в 15:21

Вот обходное решение, которое я использую. Это ужасно и грубо, но этот подход должен работать также в Уэйленде и GDM (Ubuntu 17.10), если автоматическая опция входа в систему будет работать вообще.

#!/bin/bash

# NAME: lightdm-auto-login

main() {
    # If the file '/etc/lightdm/lightdm.conf' exists create a backup copy
    [[ -f /etc/lightdm/lightdm.conf ]] && mv /etc/lightdm/lightdm.conf{,.bak}

    # Create autologin configuration for the current $USER = $1
    echo -e "[Seat:*]\nautologin-user=$1" > /etc/lightdm/lightdm.conf

    # Restart 'lightdm' while autologin option is enabled
    systemctl restart lightdm.service

    # Wait for a moment to complete the login process and remove the conf file
    sleep 30 && rm /etc/lightdm/lightdm.conf

    # Restore the backup if exists
    [[ -f /etc/lightdm/lightdm.conf.bak ]] && mv /etc/lightdm/lightdm.conf{.bak,}
}

# Execute the 'main()' function with root privileges in the background 'sudo -b'
# Pass the curent $USER as arg (https://unix.stackexchange.com/a/269080/201297)
sudo -b bash -c "$(declare -f main); main $USER"
  • Сценарий должен быть выполнен как обычный пользователь (который принадлежит sudoers группе).

  • Сценарий создаст резервную копию файла /etc/lightdm/lightdm.conf. Затем это генерирует новый конфигурационный файл с автоматической опцией входа в систему, включенной для текущего пользователя. В этой точке lightdm будет перезапущен и пользователь будет входом в систему автоматической опцией входа в систему. Наконец пользовательская конфигурация будет удалена, и исходное состояние конфигурационного файла будет восстановлено.

  • Если GDM используемый: сервис, который будет перезапущен, gdm3.service и конфигурационный файл, который должен быть изменен, /etc/gdm3/custom.conf.

1
ответ дан 1 December 2019 в 15:21

Это хорошо работает для меня (от ssh с lightdm):

$ XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0.0 sudo sh -c 'xdotool type "My Password" && xdotool key Return'
0
ответ дан 1 December 2019 в 15:21

Другие вопросы по тегам:

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