Wenn dies eine normale Binärdatei wäre, könnten Sie setuid durch Ausführen festlegen
# chmod u+s /path/to/binary
Leider können Skripte nicht gesetzt werden. (Nun, Sie können, aber es wird ignoriert). Der Grund dafür ist, dass die erste Zeile des Skripts dem Betriebssystem mitteilt, unter welchem Interpreter das Skript ausgeführt werden soll. Zum Beispiel, wenn Sie ein Skript hatten mit:
#!/bin/bash
Du würdest tatsächlich rennen
/bin/bash /path/to/script
Natürlich müsste der Interpreter setuid sein, was dann bedeuten würde, dass alle Skripte setuid sind. Das wäre schlecht.
Sie können dies mit sudo tun, indem Sie Folgendes in Ihre / etc / sudoers-Datei einfügen, indem Sie visudo ausführen.
ALL ALL=NOPASSWD: /path/to/script
Und jetzt kann jeder Benutzer laufen
$ sudo /path/to/script
Auf diese Weise können sie das Skript ausführen, ohne ihr Kennwort eingeben zu müssen.
Es gibt eine Alternative, für die im Befehl kein sudo erforderlich ist. Dazu muss eine kleine setuided-Binärdatei erstellt werden, die Ihr Skript ausführt. Jede zusätzliche setuid-Binärdatei fügt jedoch ein weiteres potenzielles Sicherheitsproblem hinzu.