1 votes

Comment démarrer X en tant qu'utilisateur non-root dans rc.local ?

J'essaie de commencer startx en tant qu'utilisateur non root sur mon serveur Ubuntu 16.04( Linux nanopim1 3.4.113-sun8i #16 SMP PREEMPT Tue Jun 13 14:15:57 CEST 2017 armv7l armv7l armv7l GNU/Linux ) avec openbox installé sur celui-ci.

J'ai essayé de mettre chacun de ces fichiers un par un à l'intérieur de /rc.local mais ça n'a pas marché ! La seule chose qui marche, c'est de mettre startx sans aucun ajout sur /etc/rc.local et il commence en tant que racine !

su -l m -c startx

su -s /bin/bash -c startx m&

su - m -c startx

J'ai aussi essayé une autre méthode, j'ai créé un fichier ici : /etc/systemd/system/autologin.service avec ce contenu :

[Unit]
Description=Autologin service

[Service]
Type=fork
user=m
group=m
ExecStart=/usr/bin/startx
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Ensuite : sudo systemctl daemon-reload mais n'a pas fonctionné à nouveau !!!

Seulement mettre startx seul à l'intérieur /etc/local fonctionne mais c'est root utilisateur que je ne veux pas être !

2voto

Ivan Points 178

Version du gestionnaire d'affichage (plus facile)

C'est généralement le rôle du gestionnaire d'affichage d'afficher un écran de connexion et de démarrer une session utilisateur. Si vous en aviez un, ce serait un chemin de moindre résistance de le configurer pour l'autologation. Il s'agit d'une solution largement utilisée et probablement bien testée et supportée. Vous devrez le configurer pour 1) l'authentification automatique et 2) l'utilisation de votre session préférée, mais les deux sont typiquement supportés par les gestionnaires d'affichage habituels supportés par votre linux (lightdm, xdm, etc ).

Sur ubuntu 16.04 (non-serveur), j'ai le résultat suivant dans /etc/lightdm/lightdm.conf

[Seat:*]
autologin-guest=false
autologin-user=xyz
autologin-user-timeout=0

Vous devez installer et éventuellement activer lightdm.

apt-get install lightdm

Lightdm est le gestionnaire d'affichage par défaut d'ubuntu. Il n'est pas installé par défaut sur l'édition serveur d'ubuntu et vous devrez installer plusieurs paquets, donc la méthode manuelle plus difficile sera nécessaire si vous souhaitez les éviter.

La façon de mettre en place une connexion graphique sur un serveur ubuntu est mieux décrite ici. https://askubuntu.com/questions/53822/how-do-you-run-ubuntu-server-with-a-gui#788193 après quoi vous pouvez configurer l'autologin si vous le souhaitez.

Vous pouvez sélectionner le type de session que vous préférez (openbox), en définissant les paramètres suivants /home/username/.dmrc à quelque chose comme

[Desktop]
Session=openbox

Manuel (startx)

Je ne sais pas ce qui est exactement nécessaire pour lancer une session x startx au démarrage, mais je suggère de décomposer le problème en un processus étape par étape :

  1. vous dites que votre startx fonctionne en tant que root. Ce serait bien de vérifier que vous pouvez vous connecter en tant que root sur une console et démarrer une session x avec :

    root@xyz # startx
  2. Assurez-vous que vous pouvez démarrer une session X lorsque vous êtes connecté en tant qu'utilisateur privilégié.

    myuser@xyz $ startx
  3. Assurez-vous que vous pouvez démarrer une session X en tant qu'utilisateur préféré, mais en étant connecté en tant que root, en vous basant sur la commande précédente :

    a) Utilisez quelque chose comme :

    root@xyz # su -l myuser -c startx

    citez la commande si vous avez besoin de plusieurs arguments :

    root@xyz # su -l myuser -c "startx arg1 arg2 .."

    b) Vous pouvez sauter cette étape si vous définissez l'utilisateur dans l'unité systemd.

  4. Faites-le démarrer automatiquement.

    a) Ajouter la commande (3a) à /etc/rc.local et redémarrer.

    b) Utiliser une unité systemd comme vous l'avez décrit, avec le jeu de commandes selon 2/3. Pour tester, vous pouvez utiliser quelque chose comme

    root@xyz # systemctl stop autologin  # make sure to reset service
    root@xyz # systemctl daemon-reload   # don't know if needed
    root@xyz # systemctl start autologin

    Une fois que cela fonctionne, vous devrez peut-être l'activer pour un démarrage automatique ou tout ce dont systemd a besoin (je ne suis pas un expert).

    root@xyz # systemctl enable autologin

0voto

Steffen Aas Points 11

Je l'ai obtenu en suivant les étapes suivantes :

sudo apt-get install --no-install-recommends xserver-xorg xserver-xorg-legacy xinit xterm

Il est important que le héritage car dans la dernière version, la commande suivante ne fonctionne pas sans lui :

sudo dpkg-reconfigure xserver-xorg-legacy

dans le menu de la console, veuillez sélectionner Tout le monde

Après cela, vous pouvez lancer le Xserver ou tout autre programme via xinit ou startx sans racine comme ça :

sudo su -l pi -c "xinit -geometry =800x400+0+0 -fn 8x13 -j -fg white -bg black /home/pi/go/bin/wego -- -nocursor" & -geometry =800x400+0+0 -fn 8x13 -j -fg white -bg black /home/youruser/bin/anyprogram -- -nocursor" &

ou avec startx :

sudo su -l pi -c startx

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X