So bearbeiten Sie eine Systemdatei mit sudoedit, um die aufgerufene Benutzerumgebung aufrechtzuerhalten

So bearbeiten Sie eine Systemdatei mit sudoedit, um die aufgerufene Benutzerumgebung aufrechtzuerhalten

Unter Linux und anderen UNIX-basierten Betriebssystemen wird Sudo verwendet, um ein Programm mit den Berechtigungen eines anderen Benutzers auszuführen, häufig Root. Wenn wir eine Datei ändern müssen, in der administrative Berechtigungen bearbeitet werden müssen, werden wir ohne die Anpassungen und Einstellungen, die wir verwenden, wenn wir sie normal aufrufen, wenn wir direkt mit sudo starten, da die Umgebung des aufgerufenen Benutzers verwendet wird, da die Umgebung des aufgerufenen Benutzer nicht erhalten. In diesem Tutorial sehen wir, wie wir dieses Problem leicht lösen können und wie wir Systemdateien mit Sudoedit sicher ändern können.

In diesem Tutorial lernen Sie:

  • So bearbeiten Sie eine Systemdatei mit Sudoedit
  • Was sind die Schritte, die ausgeführt werden, wenn eine Datei mit sudoedit bearbeitet wird?
  • So setzen Sie den von Sudo verwendeten Standard -Editor

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilung unabhängig
Software sudo
Andere Keiner
Konventionen # - Erfordert, dass gegebene Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden können sudo Befehl
US

Sudo Standardverhalten

Die Mehrheit der Linux -Verteilungen ist so konfiguriert, dass die Hauptmethode zur Erzielung von Root -Privilegien darin besteht, sudo zu verwenden. Die Verwendung von Sudo gewährt uns eine Reihe von Privilegien über su, Das Hauptsache ist, dass einem Benutzer bestimmte Privilegien gewährt werden können, ohne ihm einen vollständigen Wurzelzugriff zu gewähren zu müssen.

Sudo kann über die fein abgestimmt werden /etc/sudoers Datei; Da diese Datei sehr wichtig ist, sollte sie mit dem bearbeitet werden Visudo Der Befehl, der sicherstellt, dass keine Syntaxfehler vorhanden sind, bevor Änderungen gespeichert werden.

In den allermeisten Fällen wird die aufgerufene Benutzerumgebung nicht erhalten, wenn ein Befehl mit Sudo ausgeführt wird. Wenn wir beispielsweise unseren Editor mit Sudo aufrufen, wird er mit Sudo geändert, um eine von Root gehörte Systemdatei zu ändern. Dies kann ziemlich unpraktisch sein, und in bestimmten Fällen können ein Editor mit eskalierten Berechtigungen einige Sicherheitsprobleme aufweisen. Mal sehen, was wir stattdessen tun können.



Das Problem: Der Editor wird ohne benutzerdefinierte Einstellungen gestartet

Angenommen, wir müssen eine Datei mit administrativen Berechtigungen bearbeiten, z. B. zum Beispiel /etc/fstab, Dort werden die statischen Informationen zu Dateisystemen unter Linux gespeichert. Wenn wir unseren bevorzugten Texteditor verwenden und ihn direkt mit sudo aufrufen,
Die Anpassung, die wir darauf eingestellt haben HEIM Verzeichnis) wird nicht geehrt, da die aufgerufene Benutzerumgebung nicht erhalten bleibt.

Lassen Sie uns ein Beispiel sehen. Sagen Sie, unser Lieblingsredakteur ist Vim und in unserem ~/.vimrc Datei Wir haben die eingegeben Nummer setzen Richtlinie, die dazu führt, dass Zeilennummern angezeigt werden. Wenn wir die bearbeiten /etc/fstab Datei, die den Editor direkt mit sudo aufrufen, können wir sehen, dass die Einstellungen nicht effektiv sind:

$ sudo vim /etc /fstab 

Die Datei wird im Editor geöffnet, und das Folgende wird angezeigt. Der Inhalt der Datei spielt uns in diesem Fall keine Rolle, sodass sie abgeschnitten wird:

# #/etc/fstab # # zugängliche Dateisysteme durch Bezugnahme werden unter '/dev/disk/' verwaltet. # Siehe Man Pages Fstab (5), Findfs (8), Mount (8) und/oder Blkid (8) für weitere Informationen. # # Führen Sie nach der Bearbeitung dieser Datei 'Systemctl Daemon-Reload' aus, um die aus dieser Datei generierten Systemeinheiten zu aktualisieren. # /dev /mapper /fingolfin_vg-root_lv /ext4 Standards, x-System.Geräte-Timeout = 0 1 1 UUID = B308FBE5-68A6-4142-82DE-BA1DC3380484 /BOOT EXT2-Standardeinstellungen 1 2 […] 

Wie Sie sehen können, werden Zeilennummern nicht angezeigt. Das obige ist nur ein Beispiel und wahrscheinlich gehen unsere Anpassungen der Redakteur weit darüber hinaus. Wie können wir dieses Problem lösen??

Die Lösung: Verwendung von sudoedit

Um das oben illustrierte Problem zu lösen, können wir einfach verwenden sudoedit anstatt sudo. Verwendung sudoedit ist das Äquivalent zum Anrufen sudo mit dem -e Option, die kurz ist für --bearbeiten. Wie in der angegeben sudo Handbuch bedeutet diese Option im Grunde: "Bearbeiten Sie eine Datei, anstatt einen Befehl auszuführen".

Wenn diese Strategie angewendet wird und der aufgerufene Benutzer die Aktion durch die Systemrichtlinie ausführen kann, wird eine Reihe von Schritten durchgeführt. Erstens a vorübergehend Die Kopie der Datei, die wir bearbeiten möchten, wird erstellt. Die temporäre Datei befindet sich im Besitz des aufgerufenen Benutzer.

Die temporäre Datei wird im Standardtexteditor geöffnet. Der Standard -Editor wird über einige Variablen festgelegt, die in einer bestimmten Reihenfolge gelesen werden. Sie sind:

  1. Sudo_editor
  2. Visuell
  3. EDITOR

Abhängig von der Verteilung und der von uns verwendeten Shell kann der Wert dieser Variablen dauerhaft in der festgelegt werden ~/.bash_profile (nur von der Bash -Hülle bezogen) oder der ~/.Profil Datei. Zu setzen Vim Als unser Standard -Editor zum Beispiel würden wir schreiben:

Exportieren Sie sudo_editor =/usr/bin/vim 



Beachten Sie, dass wir die benutzt haben Export Shell integriert vor der Variablendefinition: Es ist erforderlich, um die Variable selbst in alle untergeordneten Prozesse der Schale zu exportieren. Die Änderungen sind nicht sofort wirksam: Wir sollten uns erneut anmelden und uns erneut anmelden,
oder beziehen Sie die geänderte Datei "manuell":

$ source ~/.bash_profile 

Wenn keiner dieser Variablen festgelegt ist, ist der erste Editor als Wert der angegeben Editor Option in der sudoers -Datei (/etc/sudoers) wird verwendet.

Sobald die von uns geführte Datei gespeichert ist (sie wird von Grund auf neu erstellt, wenn es noch nicht vorhanden ist), und der Editor wird geschlossen, wird sie wieder in die ursprüngliche Position kopiert und die temporäre Datei wird entfernt. Der Benutzer wird aufgefordert zu
Bestätigen Sie die Aktion, wenn die bearbeitete Datei leer wird. Dies ist eine zusätzliche und sehr nützliche Sicherheitsmaßnahme, die katastrophale Fehler verhindern kann:

sudoedit: abschneide /etc /fstab zu null bytes? (y/n) [n] n sudoedit: nicht überschreiben/etc/fstab 

Seit bei der Verwendung sudoedit anstatt sudo Die Umgebung des aufgerufenen Benutzers ist erhalten und die Datei wird als Benutzer selbst bearbeitet und nicht als Stamm.

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, wie möglich möglich ist. Wir haben gesehen, was die Vorteile dieses Ansatzes sind, welche Schritte bei der Übernahme ausführen, und wie der von Sudo verwendete Standard -Editor festgelegt wird.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Umgang mit Benutzereingaben in Bash -Skripten
  • So entfernen Sie Bloatware von Ihrem Samsung Android Mobile…
  • Hung Linux System? Wie man zur Befehlszeile entkommt und…
  • So erstellen