Przygotuj skrypt, który chcesz edytować, na przykład skrypt, który zapisuje poprawny plik ze statycznym adresem IP (co należy umieścić w tym skrypcie jest poza zakresem tego pytania i odpowiedzi). Nazwijmy ten skrypt /root/set_static_ip
. (1)
Edytuj /etc/sudoers
(2) (z visudo
lepszym, sprawdza zdrowie psychiczne, bardzo trudno jest odzyskać system z nieprawidłowym plikiem sudoers, nawet niemożliwym ze zdalnego (3)) i dodać
user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip
Teraz ten użytkownik może korzystać sudo /root/set_static_ip
bez pytania o hasło, a skrypt będzie działał ze wszystkimi uprawnieniami; żadne inne polecenie nie będzie dozwolone.
Jeśli chcesz, aby użytkownik po prostu zastąpił plik tym, czego chce, skrypt może być po prostu (nazwij go /root/unsafe-overwrite-interface
)
#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces
exit 0
... a ty każesz użytkownikowi edytować, /tmp/temp-iface.txt
a następnie uruchomić sudo /root/unsafe-overwrite-interface
--- włączając go w sudoersach, jak określono powyżej. Możesz też dodać użytkownika do listy ACL i dać mu uprawnienia do zapisu w określonym pliku .
Ale zauważ, że jeśli nie sprawdzisz zawartości pliku pod kątem bezpieczeństwa, nastąpi spustoszenie , celowe lub niezamierzone.
Przypisy :
(1) ten skrypt musi być możliwie bezpieczny. Sprawdź dane wejściowe i tak dalej. Zostanie wykonany z pełnymi uprawnieniami.
(2) w nowoczesnej instalacji sudo, możesz dodać plik do /etc/sudoers.d/
katalogu, który jest lepszy --- przetrwa aktualizacje.
(3) Zwykle trzymam terminal z otwartą sesją roota ( sudo -i
), kiedy modyfikuję mechanizm sudoers, i mam pod ręką zapasową kopię zapasową.
/var/tmp/foo
=/etc/network/interfaces
? Nigdy tak naprawdę nie widziałem tego, co próbujesz powiedzieć, jestem całkiem nowy w Linuksie.