Kann ich Hosts ohne Sudo bearbeiten?

7

Wenn ich derzeit meine Hosts-Datei bearbeiten möchte, muss ich Folgendes verwenden sudo nano /etc/hosts: Kann ich dem tomBenutzer erlauben , die Hosts-Datei zu bearbeiten, ohne sudo zu benötigen?

TMH
quelle
Starten Sie neu und verwenden Sie die Eingabeaufforderung grub, um Root-Berechtigungen zu erhalten.
Rinzwind

Antworten:

23

Sie können, aber es ist eine schlechte Idee. Der springende Punkt des Berechtigungssystems besteht darin, nicht privilegierte Benutzer und Angreifer daran zu hindern, beispielsweise in Systemdateien zu schreiben, feindlichen Code auszuführen usw. Bei weitem das Beste, was Sie tun können, ist, es weiter zu verwenden, sudowenn Sie Systemdateien bearbeiten müssen. Das ist Best Practice und der Grund, den wir habensudo

Ich empfehle keine der folgenden Methoden, aber sie sind sicherer als die gefürchteten chmod 777. Sie können beispielsweise den Gruppenbesitz von ändern /etc/hostsund der Gruppe Schreibberechtigung erteilen:

sudo addgroup editors            #make a new group
sudo adduser $USER editors       #add yourself to it
sudo chown :editors /etc/hosts   #change the group ownership
sudo chmod 664 /etc/hosts        #give the group write permission

Sie können die Datei jetzt ohne bearbeiten sudo. Sie können auch ACLs verwenden, wenn Sie das aclPaket haben (sicher in 15.04 und höher installiert).

sudo setfacl -m $USER:rw /etc/hosts

Aber auch hier empfehle ich keine dieser Aktionen. Einfach benutzen sudo.

Zanna
quelle
7
FWIW Windows unterstützt auch Datei-ACLs. Standardmäßig können Sie Systemdateien wie die Hosts-Datei nicht als nicht privilegierter Benutzer bearbeiten, sodass Sicherheitskommentare etwas redundant sind.
Matti Virkkunen
Ich denke, es ist wichtig zu beachten, dass Sie Ihrer sudoers-Datei "tom ALL = (ALL) NOPASSWD: / usr / bin / nano / etc / hosts" hinzufügen können. Sie müssten immer noch sudo verwenden, aber Sie brauchen Ihr Passwort nicht.
Leo Izen
@LeoIzen siehe Wills Antwort für eine darauf basierende Lösung. Ich möchte nicht in andere Antworten eingreifen. Außerdem wird gefragt, wie ich sudoohne Passwort bearbeiten kann und nicht, wie ich ohne Passwort bearbeiten kann.
Zanna
9

Ich würde die Berechtigungen einer systembezogenen Datei nicht anpassen

Was Sie tun können, ist ein einfaches Skript zu erstellen

#!/bin/bash
sudo nano /etc/hosts

Nennen Sie es wie Sie wollen, zum Beispiel edithosts.sh, und legen Sie es in einem Skriptordner in Ihrem Home-Ordner ab.

chmod 700 /path/to/script/file/edithosts.sh Dies verhindert das unbefugte Lesen oder Schreiben in die Datei, da laut ss TripeHound der Inhalt dieser Datei jetzt mit Root-Berechtigungen ohne Kennwort ausgeführt wird.

Fügen Sie dann die folgende Zeile hinzu /etc/sudoers

tom ALL = (root) NOPASSWD: /path/to/script/file/edithosts.sh 

So können Sie sudo sh /path/to/script/file/edithosts.shohne Passwort eingeben

Empfohlene Lösung

Wie @paul in den Kommentaren betonte, sudoeditkönnte dies eine bessere Lösung sein.

tom ALL = (root) NOPASSWD: sudoedit /etc/hosts

Da dies nur die Bearbeitung /etc/hostseines erhöhten Texteditors ermöglicht und Sie nicht dazu bringt, diesen auszuführen

Wille
quelle
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
Terdon