Wie erhalte ich Berechtigungen zum Bearbeiten von Systemkonfigurationsdateien?

47

Ich kann scheinbar keine Konfigurationsdateien im Root-System bearbeiten und speichern (zB:) /etc/dhcp/dhcpd.config; es heißt nur "Erlaubnis verweigert" oder die Speicheroption ist im Texteditor gesperrt.

Ich bin mir ziemlich sicher, dass ich ein Root-Benutzer bin, aber wie stelle ich sicher? Wie behebe ich dieses Problem, wenn ich ein Root-Benutzer bin?

Matthew Wilson
quelle

Antworten:

42

Welchen Texteditor verwenden Sie? Wenn Sie ein Root-Benutzer sind und das Kennwort kennen, versuchen Sie (in einem Terminal) Folgendes:

  • sudoedit /etc/dhcp/dhcpd.configWenn Sie einen Terminal-basierten Editor verwenden, wie z nano.
  • gksudo <text editor here> /etc/dhcp/dhcpd.config Wenn Sie einen GUI-basierten Editor verwenden, z gedit

In beiden Fällen müssen Sie zuerst Ihr Root-Passwort eingeben, wenn Sie dazu aufgefordert werden.

Ab Ubuntu 14.04 gksudoist dies nicht standardmäßig installiert. Sie müssen das gksuPaket (entweder vom Software Center oder über sudo apt-get install gksu) installieren , um es zu erhalten.

In Ubuntu 17.10 ist Wayland anstelle des herkömmlichen X-Servers der Standard, und es ist schwierig, grafische Editoren als Root auszuführen. Siehe Warum funktioniert gksu / gksudo oder das Starten einer grafischen Anwendung mit sudo nicht mit Wayland? für Details.

In Ubuntu 18.04 gksudoist nicht in den offiziellen Repositories verfügbar. Verwenden Sie sudo -H <text editor>stattdessen oder das admin://Protokoll :

gedit admin:///etc/dhcp/dhcpd.config
Christopher Kyle Horton
quelle
15

Wenn Sie kein Terminal verwenden möchten, können Sie ein GUI-Programm wie folgt als root aufrufen (dieses Beispiel ist für Gedit):

  1. Drücken Sie Alt+ F2, um das Dialogfeld Ausführen aufzurufen.
  2. Geben Sie gksudogefolgt vom Namen der ausführbaren Datei Ihres Programms ein (der möglicherweise von dem auf der GUI angezeigten Namen abweicht). Zum Beispiel:

    gksudo gedit
    
  3. Hit Enter.
Scott Severance
quelle
10

Ich kann mir keinen Fall vorstellen, in dem root würde permission denied.

In 12.04 können Sie es so machen: alt+ f2und gksudoin das Feld eingeben , das so aussieht:

F2-Dialog

Sie erhalten eine Box wie diese und geben ein geditund klicken auf ok:

Geben Sie gedit in das Dialogfeld Ausführen ein

Klicken Sie auf Open:

Tab in gedit öffnen

Navigieren Sie einfach zu der Datei:

Dateidialog öffnen

Getan

Warnung: Es gibt einen Superuser / root aus einem bestimmten Grund. Es ist so, dass Sie nicht versehentlich aus Versehen etwas Schlechtes oder Strukturloses in etwas Wichtiges stecken. Sie sollten äußerst vorsichtig sein, dass alles, was Sie als root bearbeiten, die richtige Datei ist, die Sie bearbeiten möchten, UND dass Ihre Syntax perfekt ist. Wenn andere Werkzeuge zum Bearbeiten verfügbar sind, wird empfohlen, diese zu verwenden. Verwenden Sie beispielsweise den visudo Befehl terminal, anstatt ihn manuell zu bearbeiten /etc/sudoers.

Einige Dateien, die durcheinander geraten könnten, können leicht wiederhergestellt werden. Andere sind relativ kompliziert, oder Sie müssen die Wiederherstellungskonsole und viele Befehlszeilen verwenden.

Ja , die Wiederherstellungskonsole Befehlszeile scheint ein wenig unheimlicher als auch diese . Sei einfach vorsichtig.

RobotHumans
quelle
Möglicherweise müssen Sie dies für 13.04 und neuer aktualisieren. Einige Dinge in Bezug auf gksu / gksudo haben sich geändert (nicht sicher, ob dies auf Ihre Antwort zutrifft oder nicht).
Seth
Meines Wissens nach exportiert sudo jetzt auf magische Weise DISPLAY-Umgebungsvariablen, und gksu / gksudo sind verschwunden oder verschwunden. Ich habe es aber nicht überprüft.
RobotHumans
rootkann die Erlaubnis verweigert bekommen, wenn die Datei mit unveränderlich gesetzt wurde chattroder manchmal, wenn der Datenträger schreibgeschützt ist.
Chai T. Rex
6

Sie können auf verschiedene Arten testen, ob Ihre aktuelle Shell als root ausgeführt wird

~/ > whoami
paul
~/ > sudo whoami
root
~/ > id
uid=1000(paul) gid=1000(paul) groups=1000(devs),4(adm),20(dialout),24(cdrom),…
~/ > sudo id
uid=0(root) gid=0(root) group=0(root)

Andere Antworten bieten gute Möglichkeiten, um zu Root-Rechten zu eskalieren, sodass ich diese nicht wiederholen werde. Angenommen , Sie sind root und Sie können die Datei nicht bearbeiten /etc/dhcp/dhcpd.config- dann sehr wahrscheinlich jemand oder irgendein Programm verwendet hat das chattrProgramm , um die Datei unveränderbar zu machen.

Von der chattr Manual-Seite :

Eine Datei mit dem Attribut 'i' kann nicht geändert werden: Sie kann nicht gelöscht oder umbenannt werden, es kann kein Link zu dieser Datei erstellt werden und es können keine Daten in die Datei geschrieben werden. Nur der Superuser oder ein Prozess, der über die CAP_LINUX_IMMUTABLEFunktion verfügt, kann dieses Attribut festlegen oder löschen.

Das können Sie mit herausfinden lsattr

lsattr /etc/dhcp/dhcpd.config

Wenn es tatsächlich unveränderlich ist, können Sie das wie folgt ausschalten:

chattr -i /etc/dhcp/dhcpd.config
pbr
quelle
3

Wenn Sie Ubuntu 17.04 oder höher verwenden, wird empfohlen, das gvfs-Admin-Backend zu verwenden . Fügen Sie einfach admin://in einer App wie die auf der Vorderseite des vollständigen Dateipfad Sie öffnen möchten , Text - Editor oder die Dateien Apps .

Öffnen Sie beispielsweise, um die Starteinstellungen zu ändern

admin:///etc/default/grub

Wenn Sie Ubuntu 17.10 mit dem Standard-Wayland verwenden sudound gksuwie in der älteren Antwort erwähnt, funktioniert dies hier nicht .

Jeremy Bicha
quelle
2

Verwenden Sie Ihren bevorzugten Texteditor

Sie können sudo -eoder seinen Alias sudoeditmit Ihrem bevorzugten (grafischen!) Texteditor über die VISUALUmgebungsvariable 1 verwenden :

VISUAL=gedit sudo -e /path/to/some-config-file.cfg

das ist äquivalent zu

VISUAL=gedit sudoedit /path/to/some-config-file.cfg

Natürlich können Sie jeden anderen Editor verwenden , die Sie mögen, zum Beispiel leafpad, kateoder subl.

Einige Editoren bieten eine Befehlszeilenoption, um immer eine neue Instanz zu starten, auch wenn eine gerade ausgeführt wird. Da sudoeditgewartet wird, bis der Editorprozess beendet ist, um Änderungen an der bearbeiteten Datei zu übernehmen, kann dies erforderlich sein, wenn andere Instanzen desselben Editors ausgeführt werden:

  • Zur Verwendung mit GEdit VISUAL='gedit -s'.
  • Für Kate VISUAL='kate -n'.

Vorteile

  • Benötigt keine zusätzlichen und / oder veralteten Anwendungen.
  • Erfordert keine Sicherheitsrichtlinienänderungen wie pkexec(für die Sie Dateien bearbeiten müssen ... als Superuser, genau das, was diese Antwort zu lösen versucht).
  • Erfordert nicht die Ausführung potenziell unsicherer Anwendungen mit erhöhten Rechten.
  • Verwendet die Anwendungskonfiguration des aktuellen Benutzers, aber verwirrt die Zugriffsberechtigungen für die Konfigurationsdatei, wie z sudo -H.
  • Greifen Sie nicht auf die Konfigurationsdaten der rootBenutzeranwendung des Benutzers zurück, die möglicherweise akzeptabel aussehen und sich auch nicht so verhalten.

Nachteile

  • Sie müssen einen kurzen neuen Befehl lernen.

1 EDITOR oder SUDO_EDITORarbeiten auch, haben aber weniger Priorität oder sind spezialisierter. Einzelheiten finden Sie auf der Handbuchseite .

David Foerster
quelle
0

Um sicher zu gehen, sichern Sie es mit cp /etc/dhcp/dhcpd.config /$HOME/dhcpd.config.backup und führen Sie es ausgksu gedit /etc/dhcp/dhcpd.config

Ersetzen Sie geditdurch den Editor Ihrer Wahl

Sie werden eine solche Aufforderung erhalten

Passwortabfrage

Geben Sie hier Ihr Passwort ein.

Ein neues Fenster öffnet sich und Sie können Ihre Konfiguration dort bearbeiten.

Falls etwas schief geht, können Sie es von Ihrem Backup im Home-Ordner wiederherstellen.

Sie erhalten "Erlaubnis verweigert", weil Linux die Erlaubnis behandelt.

Alles in dem $HOMEOrdner gehört dem Benutzer, während fast alles andere root gehört.

Die /etc/dhcp/dhcpd.confDatei, auf die Sie zugreifen möchten, gehört zu root, und die meisten Dateien in /etc/gehören aus Sicherheitsgründen standardmäßig zu root.

Sie können diese Datei weiterhin bearbeiten, indem Sie Ihre Berechtigungen erhöhen.

Dazu haben Sie mehrere Möglichkeiten:

  • benutze suwas für switch user steht. Ohne Attribute fungiert es als Befehl zum Wechseln zum Root-Konto, aber Sie müssen das Kennwort des Benutzers eingeben, zu dem Sie wechseln. Da Root unter Ubuntu standardmäßig kein Kennwort hat (Deaktivieren des Root-Kontos). funktioniert dies nur, wenn Sie ein Passwort für root festgelegt haben, was nicht empfohlen wird.

  • mit sudowelcher Option erhöhen Sie Ihre Berechtigung für nur einen Befehl. Dies wird in der Regel nur für Kommandozeilen verwendete Anwendungen wie CLI Texteditoren wie vim, nanousw.

  • Die Verwendung von gksuerhöht Ihre Berechtigung für nur einen Befehl, wird aber im Gegensatz sudozu grafischen Programmen wie GUI-Texteditoren verwendet gedit. Es verwendet eine grafische Eingabeaufforderung, um die Eingabe eines Kennworts zu erleichtern.

Amith KK
quelle
0
sudo < editor > < filelocation >

z.B:

sudo -H gedit etc/dhcp/dhcpd.config
user392272
quelle