Bereiten Sie ein Skript vor, das die gewünschte Bearbeitung ausführt, z. B. ein Skript, das die richtige Datei mit der statischen IP-Adresse schreibt (was in dieses Skript eingefügt werden soll, fällt nicht in den Geltungsbereich dieser Fragen und Antworten). Nennen wir dieses Skript /root/set_static_ip
. (1)
Bearbeiten /etc/sudoers
(2) (mit visudo
ist besser, es prüft auf Vernunft, es ist sehr schwierig , ein System mit einer ungültigen Sudoers-Datei wiederherzustellen, sogar unmöglich von Remote (3)) und hinzufügen
user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip
Jetzt kann dieser Benutzer sudo /root/set_static_ip
ohne Kennwort verwenden, und das Skript wird mit allen Berechtigungen ausgeführt. Es ist kein anderer Befehl zulässig.
Wenn Sie möchten, dass der Benutzer eine Datei einfach durch eine beliebige ersetzt, kann das Skript einfach so sein (nennen Sie es /root/unsafe-overwrite-interface
).
#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces
exit 0
... und Sie weisen den Benutzer an, zu bearbeiten /tmp/temp-iface.txt
und dann auszuführen sudo /root/unsafe-overwrite-interface
--- aktivieren Sie es in sudoers wie oben angegeben. Sie können den Benutzer auch zu einer ACL-Liste hinzufügen und ihm eine Schreibberechtigung für die jeweilige Datei erteilen .
Beachten Sie jedoch, dass, wenn Sie den Dateiinhalt nicht auf Sicherheit prüfen , absichtlich oder unbeabsichtigt Chaos auftreten kann .
Fußnoten :
(1) Dieses Skript muss so sicher wie möglich sein. Überprüfen Sie die Eingänge und so weiter. Es wird mit vollen Berechtigungen ausgeführt.
(2) In der modernen Sudo-Installation können Sie eine Datei zum /etc/sudoers.d/
Verzeichnis hinzufügen, die besser ist - sie überlebt Updates.
(3) Normalerweise halte ich ein Terminal mit einer Root-Sitzung offen ( sudo -i
), wenn ich den Sudoers-Mechanismus ändere, und ein Backup zur Hand.
/var/tmp/foo
=/etc/network/interfaces
? Ich habe noch nie gesehen, was Sie dort sagen wollen. Ich bin ziemlich neu in Linux.