sudo über ssh verwenden

Vermutlich verwenden die meisten Anwender nur sehr selten das sudo Kommando bei einem direkten Programmaufruf über SSH. Aus diesem Grund ist das dabei auftretende Problem wohl eher unbekannt. Doch es lässt sich sehr leicht umgehen.

Im folgenden Beispiel soll das Kommando ls mit root-Rechten auf dem Host my.example.org aufgerufen werden. Bei den meisten Linux Systemen wird der Aufruf mit einer Fehlermeldung abgebrochen.

$ ssh my.example.org sudo ls
user@my.example.org's password:
sudo: no tty present and no askpass program specified

Dieses Verhalten ist auf die Option "requiretty" zurückzuführen. Diese bewirkt, dass der Befehl sudo ein Terminal-Sitzung unbedingt voraussetzt. Hintergrund ist, dass ein Nutzer direkt am System angemeldet sein muss um den Befehl sudo zu verwenden. Bedeutet aber auch, dass sudo nicht versehentlich bei der Ausführung eines Cron-Jobs aufgerufen werden kann. Was auf der einen Seite für mehr Sicherheit sorgt, kann auf der anderen Seite bei der Administration hinderlich sein.

Wird SSH mit dem Parameter -t aufgerufen, wird das erstellen einer Terminal-Sitzung erzwungen. Wodurch der sudo Befehl wieder verwendet werden kann. Dies könnte dann wie folgt aussehen.

$ ssh -t user@my.example.org sudo ls
user@@my.example.org's password:
[sudo] password for user:
.... Liste der Dateien ....

Verwandte Artikel