Wie startX als Nicht-Root-Benutzer in rc.local?

1403
user145959

Ich versuche startxin meinem Ubuntu-Server 16.04 ( Linux nanopim1 3.4.113-sun8i #16 SMP PREEMPT Tue Jun 13 14:15:57 CEST 2017 armv7l armv7l armv7l GNU/Linux) als Nicht-Root-Benutzer zu starten und darauf zu openboxinstallieren.

Ich habe versucht, jede dieser Dateien einzeln zu speichern /rc.local, funktionierte aber nicht! Das einzige, was funktioniert, ist das startxHinzufügen ohne Zusatz /etc/rc.localund es beginnt als root!

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

Ich habe es auch anders versucht, ich habe hier eine Datei erstellt: /etc/systemd/system/autologin.servicemit diesem Inhalt:

[Unit] Description=Autologin service  [Service] Type=fork user=m group=m ExecStart=/usr/bin/startx TimeoutSec=0  [Install] WantedBy=multi-user.target 

Dann: sudo systemctl daemon-reloadfunktionierte aber nicht mehr !!!

Nur das startxInnere reinlegen /etc/localfunktioniert, aber der rootBenutzer möchte ich nicht sein!

0
... Warum man den DM nicht einfach zum Autologin auffordert? Ignacio Vazquez-Abrams vor 6 Jahren 0
@ IgnacioVazquez-Abrams: weil ich kein fortgeschrittener Benutzer bin und ich getan habe, was andere Benutzer mir hier gesagt haben: https://unix.stackexchange.com/questions/403599/my-ubuntu-server-doesnt-execute-my-gtk -based-program-at-startup / 406384? noredirect = 1 # comment727290_406384 und hier https://unix.stackexchange.com/questions/405618/how-to-change-autologin-von-wurzel-zu-non-wurzel- Nutzer user145959 vor 6 Jahren 0

1 Antwort auf die Frage

1
Ivan

Displaymanager-Version (einfacher)

In der Regel ist es die Aufgabe des Display Managers, einen Anmeldebildschirm anzuzeigen und eine Benutzersitzung zu starten. Wenn Sie einen hätten, wäre es ein Weg des geringsten Widerstandes, wenn Sie ihn auf Autologin einstellen. Es ist eine weit verbreitete und wahrscheinlich gut getestete und unterstützte Lösung. Sie müssten 1) Autologin einrichten und 2) Ihre bevorzugte Sitzung verwenden. Beide werden jedoch normalerweise mit den von Ihrem Linux unterstützten Display-Managern (lightdm, xdm, was auch immer ..) unterstützt.

Auf Ubuntu 16.04 (Nicht-Server) habe ich folgendes in /etc/lightdm/lightdm.conf

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

Sie müssen lightdm installieren und möglicherweise aktivieren

apt-get install lightdm 

Lightdm ist der Standard-Anzeige-Manager für Ubuntu. Es ist nicht standardmäßig auf der Ubuntu Server Edition installiert, und Sie werden mehrere Pakete installieren, so dass der härtere manuelle Weg erforderlich ist, wenn Sie sie vermeiden möchten.

Wie Sie ein grafisches Login auf dem Ubuntu-Server einrichten, ist hier besser beschrieben: https://askubuntu.com/questions/53822/how-do-you-run-ubuntu-server-with-a-gui#788193 . Danach können Sie dies tun Autologin einrichten, wenn Sie möchten.

Sie können Ihren vorgefertigten Sitzungstyp (Openbox) auswählen, indem Sie /home/username/.dmrcauf etwas einstellen

[Desktop] Session=openbox 

Manuell (startx)

Ich weiß nicht, was genau erforderlich ist, um eine x-Sitzung startx beim Booten zu starten, aber ich würde vorschlagen, das Problem in einen schrittweisen Prozess zu zerlegen:

  1. Sie sagen, dass Sie startx als root arbeiten. Es wäre schön zu überprüfen, ob Sie sich als root an einer Konsole anmelden und eine x-Sitzung mit folgendem starten können:

    root@xyz # startx 
  2. Stellen Sie sicher, dass Sie eine X-Sitzung starten können, wenn Sie als bevorzugter Benutzer angemeldet sind.

    myuser@xyz $ startx 
  3. Stellen Sie sicher, dass Sie eine X-Sitzung als bevorzugten Benutzer starten können, jedoch als root angemeldet sind, indem Sie auf dem vorherigen Befehl aufbauen:

    a) Verwenden Sie etwas wie:

    root@xyz # su -l myuser -c startx 

    Zitieren Sie den Befehl, wenn Sie mehrere Argumente benötigen:

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

    b) Sie können diesen Schritt möglicherweise überspringen, wenn Sie den Benutzer in der Systemeinheit festgelegt haben.

  4. Machen Sie es autostart.

    a) Fügen Sie den Befehl (3a) hinzu /etc/rc.localund starten Sie den Computer neu.

    b) Verwenden Sie eine von Ihnen beschriebene Systemeinheit mit dem Befehlssatz gemäß 2/3. Zum Testen können Sie so etwas verwenden

    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 

    Sobald es funktioniert, müssen Sie möglicherweise den automatischen Start oder das, was systemd benötigt, aktivieren (nicht einen Experten).

    root@xyz # systemctl enable autologin