Nach Synology DSM-Update ist root-Zugriff nicht mehr möglich

Vor einiger Zeit habe ich auf meiner Synology die Standard ash-Shell (Almquist-Shell) durch die gewohnte Bash (Bourne-again-shell) ersetzt. Da ich sowieso das eine oder andere Paket über den IPKG-Paketmanager installiert habe, war dies relativ schnell mit Hilfe dieses Blogposts erledigt. Kürzlich habe ich dann aber bemerkt, dass mit einem Update des Synology DSM (aktuell DSM 5.2.x) die via IPKG installieren Pakte nicht mehr funktionieren. Da ich direkt in der passwd-Datei die Shell für den root-User geändert hatte, war ein Login über die Konsole nicht mehr möglich. Stattdessen gab nur folgende Fehlermeldung:

ssh root@synology
/opt/bin/bash: No such file or directory

Erstmal ein sehr ernüchterndes Gefühl sich den root-Zugriff zerstört zu haben. Nach einiger Recherche im Synology Community Forum bin ich auf den Hinweis gestoßen, die passwd-Datei mit Hilfe einer zuvor installierten Web-Shell zu korrigieren. Außerdem sollte man niemals mehr direkt in der passwd-Datei die Default-Shell des root-Users anpassen!

Installation der WebShell

Alle Infos zur Installation einer WebShell stecken wohl in den tiefen dieses unübersichtlichen Forenthreads. (Grundsätzlich verstehe ich nicht, warum man diese Informationen nicht übersichtlich in einer Wiki-Seite pflegt und den Thread nur zum Austausch  aktueller Probleme & Erkenntnisse nutzt.)
Hier daher nochmals Schritt für Schritt wie es bei mir funktioniert hat:

  1. Zuerst muss in den Einstellungen des Paket-Zentrums die Installation von Paketen von jedem Herausgeber aktiviert werden. (Dies kann im Anschluss wieder deaktiviert werden)
    Synology-Pakete
  2. Nun kann dieses Paket (aktuell „Init_3rdparty_1.7-003.spk“) heruntergeladen und über das Paket-Zentrum manuell installiert werden.
    Synology_Manuelle_Installation
  3. Ich habe dann ebenfalls über die Weboberfläche die Synology neu gestartet.
  4. Nach einigem Suchen habe ich dann in Beitrag #3 des Threads das Paket mit der WebShell entdeckt  (WebShell.spk) und dies auf gleichem Wege installiert. Die WebShell findet man dann über das Hauptmenü (ohne Icon).
    WebShell_aufrufen
  5. Nach dem Start der WebShell sollte man in das Verzeichnis /etc wechseln, da dort die veränderte passwd-Datei liegt. In meinem Fall konnte ich einfach eine Sicherung der alten Orginaldatei mit folgendem Befehl wiederherstellen:
    mv passwd passwd.bash && mv passwd.org passwd

    Damit wird die aktuelle passwd unter dem Namen passwd.bash gespeichert und dann die Sicherung passwd.org wieder in passwd umbenannt. Wenn keine Sicherung existiert, kann man mit dem Stream EDitor (SED) die Datei ändern:

    sed -i 's#/opt/bin/bash#/bin/ash#g' passwd

    (Man sollte natürlich wissen was man tut… ich übernehme keine Verantwortung)

  6. Damit war der SSH-Login nun wieder möglich, natürlich wieder in der leidigen ash-Shell ;-). Ich habe nun nochmals in Ruhe die passwd-Dateien angeschaut, und sichergestellt, dass keine angelegten Benutzer fehlen, da meine Sicherung ja schon etwas älter war…
  7. Über das Paket-Zentrum kann nun natürlich auch wieder die „WebShell“ und das „Init 3rdparty“ Paket deinstalliert werden und die Vertrauensebene in den Einstellungen zurückgesetzt werden.

Erneutes aktivieren von IPKG

Die Bash und IPKG wollte ich natürlich trotzdem zurück. (Ich hatte IPKG mit der Zusammenfassung in Esche’s IT-Blog installiert). Nach etwas suchen und „rumprobieren“ waren vermutlich nur folgende Schritte notwendig:

  1. Erneutes setzen des Symlinks für /opt:
    ln -s /volume1/@optware /opt
  2. Erneutes ergänzen der PATH-Umgebungsvariable in /root/.profile um folgende Zeile:
    PATH=/opt/bin:/opt/sbin:$PATH

    Das ganze sieht dann am Ende so aus:

    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
    PATH=/opt/bin:/opt/sbin:$PATH
    export PATH

Bash erst nach dem Login via .profile Starten

In diesem Artikel habe ich den Hinweis entdeckt, die Bash doch einfach über die .profile-Datei des root-Users zu starten – sofern die Bash verfügbar ist. Damit sollte das Problem nicht mehr auftauchen. Dazu folgenden Eintrag in /root/.profile ergänzen:

if [ -x /opt/bin/bash ]; then
 exec /opt/bin/bash
fi

Vielleicht hilft diese Beitrag euch wenn ihr das selbe Problem habt, ansonsten dient er mir als Doku für die Zukunft ;-).

Über Cedric Weber

Ich schreibe seit Mai 2003 zu Themen rund um das Web2.0, Enterprise2.0, Social Software, Wikis, Weblogs, online Kollaboration, Instant Messaging, sowie Linux / Ubuntu und Apple. Dazwischen findest du Themen aus meinem Alltag - über Glaube und Spiritualität, Fotografie, Musik und vieles andere.