Wie kann ich den Editor von sudo / visudo richtig einstellen?


18

Ich verwende Ubuntu 10.04 Server und versuche, Sudoer einzurichten, um die Wahl des Editors eines Benutzers zu respektieren (innerhalb der Grenzen).

In meinen Sudoern habe ich:

Defaults        editor=/usr/bin/nano:/usr/bin/vim
Defaults        env_reset

Und im Benutzer .bashrc:

export EDITOR=/usr/bin/vim

$ EDITOR ist gesetzt:

$ echo $EDITOR
/usr/bin/vim

Demnach man sudoerssollte es ausreichen, dass $ EDITOR auf vim gesetzt wird:

editor  A colon (':') separated list of editors allowed to be used with visudo.
        visudo will choose the editor that matches the user's EDITOR environment
        variable if possible, or the first editor in the list that exists and is
        executable. The default is the path to vi on your system.

Wird nanojedoch noch für diesen Benutzer verwendet. Ein kurzer Check von env:

$ sudo -- env | grep EDITOR

Gibt nichts zurück.

$ sudo -E -- env | grep EDITOR

Kehrt zurück EDITOR=/usr/bin/vim

Mir ist bewusst, dass ich die folgenden Dinge tun könnte, damit EDITOR funktioniert:

  • Set env_editor, env_keep+=EDITORoder jede andere Option, die die Variable EDITOR in sudoers hält: Ich will nicht , dies zu tun , wie es willkürliche Ausführung von etwas zulassen ( zum Beispiel export EDITOR=~/bad_program_to_run_as_root)
  • Verwenden Sie sudo -Eoder sogar alias sudo='sudo -E': env_resetBesiegt den Punkt zu haben und Benutzer ohne SETENV (nicht etwas, was ich herausgeben möchte: siehe vorherigen Punkt) zu bekommensudo: sorry, you are not allowed to preserve the environment
  • Set editor=/usr/bin/vim: Es gibt aber auch andere Benutzer, die vim nicht kennen
  • Benutzen sudo select-editor: Schließen, sudo visudoöffnet aber trotzdem innano
  • Verwenden Sie einfach sudoedit oder vim direkt: Aber dann verlieren Sie die Sicherheit von Tools wie visudo, vipw, crontab -e.
  • Beschäftige dich einfach damit: Wahrscheinlich, aber wenn mir ein Einblick fehlt, würde ich es gerne wissen

Ich habe auch versucht, die Variablen VISUALund SUDO_EDITOR(in der Verzweiflung)

Gibt es etwas, das ich verpasst habe und das sudo visudoim Benutzereditor der Wahl geöffnet wird, ohne die oben genannten Kompromisse einzugehen?

BEARBEITEN:

Ich denke, ich verstehe, warum das nicht so funktioniert, wie ich es erwartet habe. Ich lege es hier nieder, falls jemand das gleiche Missverständnis hat.

In der sudoers-Datei

Defaults        editor=/usr/bin/nano:/usr/bin/vim
  • Bezieht sich nur auf die Liste der Editoren, die beim Ausführen zulässig sind visudo(kein anderes Programm)
  • editorÜberprüft $ EDITOR, aber wenn es ausgeführt wird sudo visudo, sudowird $ EDITOR nicht festgelegt. Wenn visudoes ausgeführt wird, ist es leer
  • Daher wird in diesem Fall der erste Editor verwendet nano

Kann jemand bestätigen, dass dies korrekt ist?

Ich habe daher erwartet, dass eine sichere Lösung darin besteht, Folgendes hinzuzufügen:

Defaults!/usr/sbin/visudo env_keep+=EDITOR

dh EDITOR nur dann behalten, wenn visudo läuft. Dies würde dann gegengeprüft

Defaults                  editor=/usr/bin/nano:/usr/bin/vim

Und wenn es nicht passt, würde es auch nicht passen nano

Seltsamerweise scheint dies nicht der Fall zu sein:

$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged

/bin/echowird als Editor verwendet. Fehler? Oder ein anderes Missverständnis?

Vielen Dank

Antworten:


6

Sie haben Recht, dass das Setzen der EDITORVariablen den verwendeten Editor ändern sollte sudo. Es gibt jedoch zwei andere Variablen mit Vorrang vor EDITOR: SUDO_EDITORund VISUAL. Stellen Sie sicher, dass keiner von ihnen auf einen anderen Editor wie verweist nano.


Der Grund, warum ich zugestimmt habe, ist, dass so wenige Antworten darauf verweisen, VISUALVorrang zu haben EDITOR. Ich dachte, meine EDITORVariable würde einfach ignoriert. Stellt sich heraus, in Centos7 beide EDITORund VISUALscheinen standardmäßig zu pico.
Dreizehn

5

Es gibt eine andere Lösung, wie hier beschrieben :

sudo update-alternatives --config editor

Auf einem Mehrbenutzersystem ist es jedoch nicht so benutzerfreundlich, da es nur einen Symlink aktualisiert in /usr/bin/:

$ ls -l `which editor`
lrwxrwxrwx 1 root root 24 lip  4 19:37 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Jul  5 01:39 /etc/alternatives/editor -> /usr/bin/vim.basic

Was ist überhaupt passiert select-editor? Wenn ich es starte, erstellt es eine Datei:

$ ls -l .selected_editor 
-rw-r--r-- 1 rld rld 75 Jul  5 01:54 .selected_editor

$ cat .selected_editor 
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim.basic"

Aber sudo visudohält nano verwenden.


3

In Debian 7 funktionierte das Setzen von EDITOR in der Umgebung nicht.

Um Nano zu verwenden, habe ich die folgende Zeile hinzugefügt /etc/sudoers

Defaults        editor="/usr/bin/nano"

ARBEITET WIE EIN CHAMP auf DigitalOcean Ubuntu 12.04. Vielen Dank.
Joe Codeswell user601770

Vielen Dank. Dies funktionierte auch unter Oracle Linux. (Ich mag Nano / Pico.)
MikeP

1

env_reset hindert einen Benutzer nicht daran, Variablen in der Befehlszeile festzulegen:

$ sudo EDITOR=vim -- env |grep EDIT
EDITOR=vim

Ich finde Ihre Erkenntnisse über die editorOption leicht schockierend, aber leider kenne ich die Antworten auf Ihre sekundären Fragen nicht. Man könnte meinen, dass das Ubuntu-Camp viele Dokumente und Konfigurationsbeispiele zu diesem Thema enthält. Vielleicht sollten wir genauer hinschauen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.