J'ai un ordinateur avec de gros disques durs configurés avec une maison cryptée. Il se trouve que le même ordinateur fonctionne également dans le principal centre multimédia Kodi de ma famille. Chaque fois que mes enfants veulent voir un film, je dois l'activer, puis y connecter physiquement un clavier et taper le mot de passe.
J'aimerais pouvoir le faire à distance.
Bien sûr, j'ai aussi un accès root à l'ordinateur.
Je ne souhaite pas créer un autre nom d'utilisateur avec une connexion automatique, car la plupart des fichiers multimédias sont cryptés et je souhaite qu'ils restent ainsi.
La combinaison normale de export DISPLAY=0:
et source discover_session_bus_addres.sh
et xdotool type my_secret_password
qui fonctionne pour la saisie dans l'écran de verrouillage ne fonctionne pas sur le lightm
.
Voici une réponse qui fonctionne sous Ubuntu 16.04 avec lightdm
:
root
pour accéder au .Xauthority
de lightdm, situé sous /var/lib/lightdm/.Xauthority
. Soit vous le copiez quelque part où il sera lisible par vous et supprimez vos permissions root, soit vous le restez tout simplement.XAUTHORITY
pour qu'il pointe vers ce fichier (par exemple export XAUTHORITY=/var/lib/lightdm/.Xauthority
)DISPLAY
sur l'affichage actif (export DISPLAY=:0
)xdotool
devrait fonctionner maintenant. Essayer
xdotool type "My super secret password"
xdotool key Return
Voici la solution de contournement que j'utilise. C’est moche et grossier, mais cette approche fonctionnera aussi dans Wayland et GDM (Ubuntu 17.10) si l’option de connexion automatique fonctionne.
#!/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"
Le script doit être exécuté en tant qu'utilisateur normal (appartenant au groupe sudoers).
Le script créera une copie de sauvegarde du fichier /etc/lightdm/lightdm.conf
. Il générera ensuite un nouveau fichier de configuration avec l'option de connexion automatique, activé pour l'utilisateur actuel. À ce stade, la lightdm
sera redémarrée et l'utilisateur sera connecté à l'aide de l'option de connexion automatique. Enfin, la configuration personnalisée sera supprimée et l'état d'origine du fichier de configuration sera restauré.
Si GDM est utilisé: le service à redémarrer est gdm3.service
et le fichier de configuration à modifier est /etc/gdm3/custom.conf
.
Cela fonctionne bien pour moi (de ssh, avec lightdm):
$ XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0.0 Sudo sh -c 'xdotool type "My Password" && xdotool key Return'