Kurztipp: sudo und vi(m)

System-Administratoren kennen die Anforderung – für eine bestimmte Applikation wird ein Server bereitgestellt. Die Kollegen, die die Applikation betreuen, benötigen die Berechtigung, Applikations-relevante Konfigurationsdateien anzupassen. Oftmals kommt hier sudo mit entsprechenden Regeln zum Einsatz, um das Editieren der Dateien zu ermöglichen und anschließend die Applikation anzuweisen, ihre Konfiguration neu einzulesen.

Oftmals wird hier vergessen, dass vi auch in der Lage ist, Kommandos auszuführen, bzw. eine Shell zu starten. Wenn es erlaubt ist, vi unter einem anderen Benutzerkontext zu starten, so kann kinderleicht eine Shell gestartet und der Account gekapert werden:

$ runuser -l  su-application -c vi
ESC
:!whoami
su-application

Press ENTER or type command to continue
:!bash
$ ...

Wenn vi mittels sudo berechtigt werden muss, dann empfiehlt es sich, restricted vi zu verwenden. Dieser verfügt nicht über die Funktion Kommandos und Shells zu starten. Er gehört meist zum Paket vim-enhanced und stellt neue Kommandos bereit: /bin/rvi, /bin/rvim und /bin/rview:

$ rvim
ESC
:!bash
E145: Shell commands not allowed in rvim

Sharing is caring


Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedInShare on XingShare on RedditPrint this pageEmail this to someone

6 Kommentare Schreibe einen Kommentar

  1. Super Tipp. – Danke Dir.
    Bisher durfte ich meinen Kollegen (mangels Fähigkeiten) noch nie einen vernünftigen Editor zur Verfügung stellen und hatte das Problem bislang noch nicht.
    Werde mir den Kurztipp aber auf alle Fälle merken, falls es doch mal Anforderungen geben sollte, die die Funktion von „nano“ oder „ee“ sprengen sollten.

    • Hey Jens,
      sehr interessante Idee – sudoedit war mir bisher noch nicht bekannt. 🙂

      Im Prinzip wäre das ja für mein Szenario ein Kompromiss zwischen dem herkömmlichem vi und dem restricted vi. Oder löst sudoedit noch etwas eleganter als rvi, gesetzt dem Falle, man benötigt keine Kommandos und Shells?

      Beste Grüße,
      Christian!

  2. :edit /etc/sudoers

    Das geht auch mit rvim und so kann man seine sudo-Rechte dann auch ausweiten.
    Ich halte es für keine gute Idee, vi(m) zu erlauben. Besser ist es, die Dateiberechtigungen so zu setzen, dass der eingeschränkte Nutzer die relevanten Dateien mit seinem Account ändern kann. Notfalls mit ACLs, wenn es nicht anders geht.

    • Hey John,
      da hast Du absolut Recht!
      Viel besser ist es, man löst das über ACLs und Dateisystem-Berechtigungen. Aber manchmal geht das leider nicht – beispielsweise, wenn man Legacy-Anwendungen hat, die nicht mit ACLs umgehen können.

      In meinem Fall geht es hier aber in der Tat um einen dedizierten Benutzer und nicht root. 🙂

      Beste Grüße!

Schreibe einen Kommentar