
Ich verwende ein Heimautomatisierungspaket namens HomeSeer auf einem Ubuntu 15.04-Server. Ich habe es so konfiguriert, dass es mit einem Dienstkonto (genannt „_homeseer“) ausgeführt wird, und ich habe das App-Verzeichnis auf _homeseer:_homeseer geändert.
Um Updates für dieses Paket zu installieren, lade ich eine tar.gz-Datei herunter und führe dann das vom Anbieter bereitgestellte Skript „update.sh“ aus. Dieses Skript extrahiert die komprimierte Datei, die sich dabei zufällig auch selbst überschreibt (update.sh) … daher denke ich, dass ich dieses Skript nicht einfach ändern kann, es sei denn, ich kopiere es irgendwo in einen separaten Ordner.
Als Teil von update.sh gibt es eine Zeile, die „sudo update_extra.sh“ aufruft. Da ich update.sh als Dienstkonto ausführe, fragt diese Sudo-Zeile nach dem Kennwort des Dienstkontos … an das ich mich nicht erinnere (und das ich auch nicht wissen möchte).
Ich möchte diesem Konto keine vollständigen Sudo-Rechte ohne Passwort erteilen, da dies ein erhebliches Sicherheitsrisiko darstellen würde (die App betreibt nämlich einen Webserver). Ich bin auch etwas skeptisch, ihm vollständige Sudo-Rechte zu erteilen, um diese Datei update_extra.sh als Root auszuführen, da diese Datei vom selben Dienstkonto aktualisiert werden kann.
Meine Frage:
Ist es möglich, sudo (also visudo) so zu konfigurieren, dass, wenn das _homeseer-Konto versucht, sudo zu verwenden, es stattdessen nach dem Passwort meines persönlichen Kontos fragt und mit den sudo-Rechten läuft, die ich habe? Ich würde lieber kein Root-Passwort festlegen, wenn ich es vermeiden kann ... aber ein erster Blick scheint darauf hinzudeuten, dass ich möglicherweise keine große Wahl habe, wenn ich diesen Weg gehen möchte.
Oder muss ich das Skript update.sh ändern, Gruppenberechtigungen konfigurieren, sodass ich die Updates in meinem eigenen Namen anwenden und mich anschließend mit Chown beim Dienstkonto anmelden kann?
Antwort1
Dies kann mit sudo erledigt werden.
Wenn Sie dies zu Ihrer Sudoers-Datei hinzufügen:
_homeseer hostname = (_homeseer) NOPASSWD: /path/to/update.sh
- Hostname= Ausgabe
hostname
auf Ihrem Computer.
Zu beachten ist, dass es keine 100 % sichere Möglichkeit gibt, mit update.sh umzugehen, da es jeden beliebigen Befehl enthalten könnte und ich davon ausgehe, dass es sich mit der Zeit ändern wird. Das bedeutet, dass Sie keine HASH-Funktion verwenden können, um sicherzustellen, dass das Skript dasselbe ist wie vorher.