Ich versuche, ein Bash-Skript (in Ubuntu) zu schreiben, das ein Verzeichnis mit tar sichert.
Wie kann ich das Skript so einchecken, dass es nur als root (oder mit sudo) ausgeführt werden kann?
Wenn beispielsweise ein Benutzer das Skript ausführt, sollte er angeben, dass dieses Skript mit sudo-Berechtigungen ausgeführt werden muss, und dann beenden. Wenn das Skript als root ausgeführt wird, wird es nach der Prüfung fortgesetzt.
Ich weiß, dass es eine einfache Lösung geben muss, ich konnte sie einfach nicht durch googeln finden.
bash
scripting
root
permissions
Cory Plastek
quelle
quelle
Ich nehme an, Sie wissen das, indem Sie den Besitzer in root ändern
chown root:root file
und Festlegen der Berechtigungen auf 700
chmod 700 file
Sie werden das Gleiche erreichen - ohne den Vorschlag, als sudo zu laufen.
Aber ich werde diese Antwort der Vollständigkeit halber posten.
quelle
sudo git add <file>
Was ist Ihr Ziel hier, um den Benutzer zu informieren, dass er das Skript als root oder als Sicherheitsmaßnahme ausführen soll?
Wenn Sie den Benutzer nur darüber informieren möchten, dass die UID-Vorschläge in Ordnung sind, sie aber aus Sicherheitsgründen genauso nützlich sind wie Reifen auf einem Pferd - es gibt nichts, was einen Benutzer davon abhält, das Skript zu kopieren und die if-Anweisung zu entfernen. und läuft es trotzdem.
Wenn es sich um ein Sicherheitsproblem handelt, sollte das Skript auf 700 gesetzt werden, das root gehört: root, damit es von keinem anderen Benutzer gelesen oder ausgeführt werden kann.
quelle
Sie können auch den whoami-Befehl verwenden.
quelle
Die Bash-Variable
$EUID
zeigt die effektive UID an, unter der das Skript ausgeführt wird. Wenn Sie sicherstellen möchten, dass das Skript als Root ausgeführt wird, überprüfen Sie, ob$EUID
der Wert 0 vorliegt oder nicht:Dies ist besser als die Lösung mit
/usr/bin/id
(für Bash-Skripte!), Da es keinen externen Befehl erfordert.quelle
echo
Linie mitsudo "$0" "$@"
und ersetzenexit 2
mitexit $?
.Eine einfache Möglichkeit, das Skript nur für root ausführbar zu machen, besteht darin, das Skript mit der folgenden Zeile zu starten:
#!/bin/su root
quelle
Mit "#! / bin / su root" können Benutzer im Superuser-Modus das Skript ausführen, ohne das root-Kennwort zu verwenden. Wenn Sie möchten, dass Superuser das Skript mit den Ergebnissen von root ausführen, geschieht dies folgendermaßen.
quelle