Warum kann der Root-Benutzer schreibgeschützte Dateien bearbeiten, ein normaler Benutzer mit Sudo-Zugriff jedoch nicht?

9

Wenn Sie versuchen, an eine Datei ohne Schreibberechtigung anzuhängen (z. B. die Datei / etc / sudoers, deren Eigentümer root ist und die über 0440-Berechtigungen verfügt), funktioniert dies, wenn Sie der eigentliche Root-Benutzer sind. Wenn Sie jedoch ein anderer Benutzer sind, der sudo verwendet, wird der Fehler "Berechtigung verweigert" angezeigt.

Warum ist das? Es liegt nicht am Besitz der Datei - es funktioniert auch nicht mit Dateien, die dem normalen Benutzer gehören. Der echte Root-Benutzer scheint mehr Berechtigungen zu haben, als mit sudo gewährt werden. Was ist der Grund dafür? Gibt es eine Möglichkeit, Benutzern mit sudo diese Berechtigung zu erteilen?

Felder
quelle
Diese Frage könnte einen
klareren

Antworten:

14

Klingt so, als würden Sie etwas tun wie:

sudo echo "blah blah blah de blah" >> /etc/protected_file

Dies funktioniert nicht, da sudo auf den echoBefehl angewendet wird , der gerne als root ausgeführt wird. Die Umleitung ist jedoch Teil Ihrer aktuellen Shell, die nicht als root ausgeführt wird.

Übliche Lösungen sind:

sudo bash -c 'echo "blah blah blah de blah" >> /etc/protected_file'

und

echo "blah blah blah de blah" | sudo tee -a /etc/protected_file
mattdm
quelle
3

Hinweis: Sie sollten "visudo" verwenden, um die sudoers-Datei zu bearbeiten, da die Datei vor dem Festschreiben auf Syntaxfehler überprüft wird, um zu verhindern, dass Sie sich selbst sperren.

Sean Reifschneider
quelle
Ich verstehe das. Soweit ich das beurteilen kann, gibt es jedoch keine Möglichkeit, visudo nicht interaktiv zu verwenden, und dies muss in einem Skript erfolgen, das programmgesteuert den Sudo-Zugriff für einen neuen Benutzer hinzufügt.
Felder
Fairerweise wurde ich kürzlich an eine andere Frage erinnert, bei der sich jemand ausgesperrt hat, weil er kein Visudo verwendet hat.
Sean Reifschneider
5
@fields: Die beste Lösung dafür ist eine Gruppe ( wheeltraditionell für den vollständigen Root-Zugriff), der Sudo-Zugriff gewährt wird. Dann müssen Sie die sudoers-Datei nicht mehr bearbeiten. Sie verwenden einfach gpasswd -a(oder einen anderen geeigneten Befehl für Ihre Distribution), um den Benutzer zur Gruppe hinzuzufügen.
Mattdm