Ich habe ein Makefile und konfigurieren Shell in meinem Projekt. Ich schrieb Code, um Benutzer zu bitten, configure shell im root-Modus mit dem folgenden Code auszuführen.Bitten Sie den Benutzer, Makefile vom Root-Modus auszuführen
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Aber wenn ich laufe ‚make install
‘ Ich brauche Benutzer zu fragen, von Root-Modus laufen zu lassen. Also habe ich einfach den Code aus der Konfigurations-Shell kopiert und in eine andere Shell-Skript-Datei namens 'runasroot.sh
' kopiert. Dann starte ich dieses Shell-Skript von make install
.
install:
@echo About to install XXX Project
./runasroot.sh
find . -name "*.cgi" -exec cp {} $(SCRIPTDEST)/ \;
Wenn ich den obigen Code ausführen, habe ich den folgenden Fehler.
About to install XXX Project
./runasroot.sh \;
make: *** [install] Error 1
runasroot.sh
#!/bin/bash
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Erinnere mich daran, deinen Code nicht zu verwenden. Tun Sie nichts, wenn Sie "root" im Makefile erzwingen. Dokument in der README- oder INSTALL-Datei, die der Benutzer 'make install' als' root' ausführen soll. Es ist unwahrscheinlich, dass Sie Root-Rechte für die Kompilierung benötigen. Es ist am besten, wenn Sie nicht einmal "root" für die Installation anfordern - erlauben Sie dem Benutzer, es als sich selbst zu installieren, wenn sie die Erlaubnis haben, in die entsprechenden Verzeichnisse zu schreiben. –
Enthält 'runasroot.sh' nur den oben angezeigten Code? Das sieht nicht so aus, als wäre es reproduzierbar. Siehe die Anweisungen zum Erstellen eines [mcve]. – tripleee
Erwarten Sie, dass alle Benutzer ohne root-Passwort arbeiten oder einfach nur das Passwort eingeben, wenn Sie dazu aufgefordert werden? –