Skript zum Ändern der MAC mit suid funktioniert nicht

Skript zum Ändern der MAC mit suid funktioniert nicht

Ich brauche ein Skript, das als Benutzer ausgeführt werden kann und die MAC-Adresse von ändert eth0. Ich habe mir das folgende Skript ausgedacht:

#!/bin/bash
/etc/init.d/networking stop
ifconfig eth0 hw ether 00:50:56:98:00:19
/etc/init.d/networking start

Ich habe die Setuid-Berechtigung festgelegt und sie „root:“ zugewiesen, -rwsr-xr-x 1 root root 110 May 24 14:22 ChangeMac.sh aber wenn ich es als Benutzer ausführe, erhalte ich dennoch die folgende Ausgabe:

$ ./ChangeMac.sh
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.100" (uid=1000 pid=6746 comm="stop networking ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
SIOCSIFHWADDR: Operation not permitted
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.103" (uid=1000 pid=6753 comm="start networking ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Warum ist das so? Wie kann ich es so einrichten, dass ein Benutzer es aufrufen kann, es aber als Root ausgeführt wird?

Antwort1

Wenn Sie dieses und nur dieses Skript als normaler Benutzer ohne weitere Sudo-Rechte ausführen möchten oder es mit Sudo ohne Kennworteingabe ausführen möchten, können Sie diese zu Ihren Sudoern hinzufügen.

z.B sudo echo "[username] ALL = NOPASSWD: /path/to/your/script" >/etc/sudoers.d/myscript

Dies ist jedoch in Bezug auf die Sicherheit eher mittelmäßig, denn wenn jemand dieses Skript als Ihr Benutzer bearbeiten kann, kann er jeden Befehl als sudo ausführen, ohne Ihr Kennwort zu kennen. Gehen Sie also bei der Verwendung vorsichtig vor.

Stellen Sie einfach sicher, dass das Skript dem Root gehört und nur der Besitzer Schreibrechte hat, sodass niemand sonst es ändern kann.

Sie können auch Folgendes verwenden, chattrum sicherzustellen, dass niemand Ihr Skript ändern kann:

sudo chattr +i script.sh

Aus man chattr:

Eine Datei mit dem Attribut „i“ kann nicht geändert werden: Sie kann nicht gelöscht oder umbenannt werden, es kann kein Link zu dieser Datei erstellt werden und es können keine Daten in die Datei geschrieben werden.

Führen Sie es anschließend einfach aus sudo myscript, und es sollte mit Root-Rechten ausgeführt werden, ohne dass nach einem Kennwort gefragt wird.

verwandte Informationen