Automatische Root-Anmeldung bei Linux-Servern

Automatische Root-Anmeldung bei Linux-Servern

Ich versuche, einen Test in verschiedenen Linux-Server-Distributionen (Fedora, Ubuntu, Centos usw.) auszuführen.

Ich weiß, dass es ein Init-System gibt, das die Ausführung von Programmen nach dem Booten (ohne Anmeldung) ermöglicht. Das Problem ist, dass ich nicht für jedes unterschiedliche Init-System zwischen den Distributionen einen Sonderfall haben möchte. Gibt es eine Möglichkeit, die automatische Root-Anmeldung nach dem Booten zu ermöglichen?

Auf diese Weise kann ich für jede Distribution dasselbe Shell-Skript verwenden. Oder gibt es eine Möglichkeit, dieses Problem zu umgehen?

Antwort1

Ich weiß, dass es ein Init-System gibt, das die Ausführung von Programmen nach dem Booten (ohne Anmeldung) ermöglicht.

Leider gibt es heutzutage keineeinsInit-System: Es gibt ein halbes Dutzend beliebter Init-Systeme. Zum Beispiel sysv init, systemd, upstart usw.

Wenn Sie wirklich möchten, dass ein System Ihnen eine Konsole mit Root-Zugriff bietet, möchten Sie wahrscheinlich Ihr Init-System aktualisieren.

Ich mache das für einen seriellen Port auf einigen meiner Systeme. Ich habe zwei sehr unterschiedliche Konfigurationen und verwende nur Debian mit zwei verschiedenen Versionen. Ich kann mir nicht vorstellen, dass Sie eine einheitliche Methode finden, die für alle Distributionen gilt. Es gibt einfach keine Einheitlichkeit, wie die Dinge beginnen. Systemd sollte in allen Distributionen recht ähnlich sein, wird aber noch nicht allgemein akzeptiert.

Debian mit Sysv-Init (Wheezy) Drop zu Root über serielle Schnittstelle

# /etc/inittab
...
# serial port getty spawns sulogin, which drops to a root shell
# on debian if root has a disabled password
T0:23:respawn:/sbin/getty -n -l /sbin/sulogin -L ttyS0 57600 vt102
...

Debian mit systemd (jessie) drop zu root auf serieller Schnittstelle

#/etc/systemd/system/getty.target.wants/[email protected]
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Serial Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
BindsTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service

# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes

[Service]
ExecStart=-/sbin/agetty -n -l /sbin/sulogin --keep-baud 115200,38400,9600 %I $TERM
Type=idle
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target

Am besten geben Sie die Idee auf, sich als Root anzumelden, und verwenden stattdessen ein Konfigurationsverwaltungstool wie Puppet oder ein Tool, das einige Unterschiede zwischen den Distributionsversionen für Sie abstrahieren kann. Lassen Sie Ihre Testläufe mit diesem Tool auslösen.

Antwort2

Sie haben einen Kommentar hinzugefügt: „Ich habe ein Programm, das physisch auf verschiedenen Linux-Distributionen getestet werden muss, um einen Leistungsbericht zu erstellen.“

In diesem Fall sollten Sie die Verwendung vonDocker, auf diese Weise benötigen Sie nicht wirklich ein vollständiges Betriebssystem oder so etwas ... aber wenn Ihr Programm aus irgendeinem Grund auf einer physischen Instanz ausgeführt werden muss, möchten Sie vielleicht eine Jobausführungsumgebung ausprobieren wieJenkins

Antwort3

Ich bin mir nicht sicher, was Sie möchten. Wenn Sie jedoch nach dem Booten unter Linux etwas als Root ausführen möchten, fügen Sie es bei den meisten Distributionen hier ein:

/etc/rc.local

Oder manchmal

/etc/rc.d/rc.local

Antwort4

Wenn es sich um eine Befehlszeilenprogrammierung handelt, wäre die Ausführung über SSH ein besserer Ansatz. Darüber hinaus können Sie SSH-Schlüssel verwenden, um sich ohne Passwörter anzumelden.

verwandte Informationen