Wenn ich derzeit meine Hosts-Datei bearbeiten möchte, muss ich Folgendes verwenden sudo nano /etc/hosts
: Kann ich dem tom
Benutzer erlauben , die Hosts-Datei zu bearbeiten, ohne sudo zu benötigen?
Wenn ich derzeit meine Hosts-Datei bearbeiten möchte, muss ich Folgendes verwenden sudo nano /etc/hosts
: Kann ich dem tom
Benutzer erlauben , die Hosts-Datei zu bearbeiten, ohne sudo zu benötigen?
Antworten:
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, sudo
wenn 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/hosts
und 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 acl
Paket 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
.
sudo
ohne Passwort bearbeiten kann und nicht, wie ich ohne Passwort bearbeiten kann.
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.sh
ohne Passwort eingeben
Empfohlene Lösung
Wie @paul in den Kommentaren betonte, sudoedit
könnte dies eine bessere Lösung sein.
tom ALL = (root) NOPASSWD: sudoedit /etc/hosts
Da dies nur die Bearbeitung /etc/hosts
eines erhöhten Texteditors ermöglicht und Sie nicht dazu bringt, diesen auszuführen