2014-09-24 11 views
7

Ich habe einen Root-Server, wo ich die Anmeldung über Benutzer root deaktiviert und erstellt einen anderen Benutzer, der in der Sudoer-Liste ist. Also, wenn ich will auf dem Server arbeiten ich tun:SUDO SU kann nicht mehr, "no tty vorhanden und kein askpass-Programm angegeben"

ssh [email protected]_ADDRESS 

Auf dem Server:

sudo su 

mein Passwort eingeben root Rechte zu erhalten. Das hat 6 Monate lang gut funktioniert. Heute habe ich diese Nachricht erhalten, wenn sudo su:

sudo: no tty present and no askpass program specified 

zu tun, was der Hack geschieht? Was bedeutet dieser Fehler und warum bekomme ich ihn ?? Ohne Root-Rechte kann ich nicht so viel auf dem Server tun. Irgendeine Idee, wie man das repariert?

+0

Versuchen mit ssh -t username @ host Anmeldung, und bitte, verwenden Sie nicht „sudo su“ Es gibt einen Wechsel zu sudo speziell für diesen Zweck. Verwenden Sie stattdessen sudo -s oder nur su, wenn Sie das root-Passwort eingeben möchten. – superjedi

+0

@superjedi funktioniert auch nicht. Auch mit dem root-Passwort. Ich denke, ich muss den Server heute Abend zurücksetzen, weil ich keine Ahnung habe, warum es nicht funktioniert. –

+1

Wenn Sie sich auf dem Remote-Server anmelden (und vor dem Ausführen von Sudo), haben Sie tatsächlich eine Tty? Running "tty" sollte den Namen Ihres tty ausdrucken. Danach würde ich die Berechtigungen auf deinem tty Gerät und auf "/ dev/tty" überprüfen, um zu sehen, ob sie vermasselt sind. – Kenster

Antwort

16

sudo versucht, /dev/tty für Lese-Schreib-öffnet und druckt diesen Fehler, wenn es fehlschlägt. Sie haben in Kommentaren angegeben, dass/dev/tty auf Ihrem System fehlt.

Sudo hat eine Option -S, um das Passwort von der Standardeingabe anstelle von/dev/tty zu lesen. Sie sollten sudo -S ausführen können, um root zu werden.

In Bezug auf die Wiederherstellung von/dev/tty, ist es möglich, dass der Neustart des Servers ausreichend wäre; Das System könnte während des Bootvorgangs alle Geräte in/dev neu erstellen. Um ein Gerät zu erstellen, verwenden Sie alternativ den Befehl mknod, aber Sie müssen die korrekten Haupt- und Nebennummern für das TTY-Gerät kennen. Auf einem Ubuntu-System, das ich zur Verfügung habe, sehe ich diese Einträge in/dev:

crw------- 1 root root  5, 1 Apr 16 18:36 console 
crw-rw-rw- 1 root tty  5, 2 Sep 24 15:35 ptmx 
crw-rw-rw- 1 root tty  5, 0 Sep 24 14:25 tty 

In diesem Fall ist die große Zahl 5 und die Minor-Nummer 0 ist/dev/console und/dev/ptmx haben die gleiche Hauptnummer. Also würde ich prüfen/dev/console oder/dev/ptmx die richtige Hauptnummer zu finden, dann laufen:

mknod /dev/tty c major 0 

wo "große" ist die korrekte Major-Nummer.

Nach Neuer/dev/tty, stellen Sie sicher, dass die Berechtigungen korrekt sind:

chmod 666 /dev/tty 
+1

Ich bin auf debian 7. Der -S-Befehl ist nicht auf meinem System verfügbar, siehe http://dpaste.com/3E430WH meine Ausgabe. Ich werde das System heute Nacht neu starten und melden. –

+0

Haben Sie es versucht? Ich sehe dort ein großes S: 'sudo [-AbEHknPS]' – Kenster

+0

ja Ich habe es ausprobiert und es zeigte mir nur die Hilfeanleitung für den Sudo-Befehl (die Ausgabe von meinem vorherigen Kommentar). –

5

Es schlägt fehl, weil sudo auf root-Passwort zu veranlassen versucht, und es gibt keine pseudo-tty zugeordnet.

Sie haben entweder melden Sie sich als root oder Set-up den folgenden Regeln in Ihrem /etc/sudoers (oder: sudo visudo):

# Members of the admin group may gain root privileges. 
%admin ALL=(ALL) NOPASSWD:ALL 

Dann stellen Sie sicher, dass Ihre Benutzer zu admin Gruppe gehört (oder wheel).

Idealer (sicherer) wäre es root-Privilegien für bestimmte Befehle nur zu begrenzen, die als %admin ALL=(ALL) NOPASSWD:/path/to/program angegeben werden kann

Verwandte Themen