Ja und nein.
Die Linux-Softwareverteilung funktioniert etwas anders als die Windows-Softwareverteilung. In der (nicht eingebetteten) Linux-Welt erfolgt die Verteilung von Software hauptsächlich über eine Distribution (Ubuntu, Debian, RHEL, Fedora, Arch usw.). Alle großen Distributionen signieren ihre Pakete seit etwa einem Jahrzehnt systematisch.
Wenn Software unabhängig verteilt wird, ist es Sache des Anbieters, zu entscheiden, wie er seine Software versendet. Gute Anbieter bieten Paketquellen an, die mit den wichtigsten Distributionen kompatibel sind (es gibt keinen einheitlichen Verteilungsmechanismus für alle Linux-Pakete:Softwareverteilung ist einer der Hauptunterschiede zwischen Distributionen) und die mit dem Schlüssel des Anbieters signiert sind. Linux-Distributionen fungieren selten als Signierungsstelle für Drittanbieter (Canonical tut dies mit Ubuntu-Partnern, aber das deckt nur sehr wenige Anbieter ab), und ich denke, alle wichtigen Distributionen verwenden das PGP-Vertrauensnetz und nicht die TLS-Public-Key-Infrastruktur Es liegt am Benutzer, herauszufinden, ob er einem Schlüssel vertrauen möchte.
Es gibt keinen speziellen Mechanismus, der Softwarepakete, die aus einem einzelnen Skript bestehen, von Softwarepaketen unterscheidet, die aus einer nativen ausführbaren Datei, einer Datendatei oder mehreren Dateien bestehen. Es ist auch keine Signaturüberprüfung in einen gewöhnlichen Skriptinterpreter integriert, weil die Überprüfung eines Softwarepakets ein vollkommen orthogonales Anliegen zur Ausführung eines Skripts ist.
Ich denke, Windows kommentiert Dateien mit ihrem Ursprung und erfordert eine Benutzerbestätigung, um eine Datei auszuführen, deren Ursprung „heruntergeladen“ und nicht „lokal“ ist. Linux hat nicht wirklich einen ähnlichen Mechanismus. Am nächsten kommt die Ausführungserlaubnis:Eine heruntergeladene Datei hat keine Ausführungserlaubnis, der Benutzer muss sie ausdrücklich aktivieren (chmod +x
auf der Befehlszeile oder die entsprechende Aktion in einem Dateimanager).
Wenn Sie die Möglichkeit der Benutzer sperren, Skripte über sudo
auszuführen dann könnten Sie den digest
verwenden Funktionalität.
Sie können den Hash eines Skripts/einer ausführbaren Datei in sudoers
angeben was durch sudo
verifiziert wird vor der Hinrichtung. Obwohl dies nicht dasselbe ist wie das Signieren, gibt es Ihnen eine grundlegende Garantie, dass das Skript zumindest nicht geändert wurde, ohne dass auch sudoers geändert wurden.
Wenn einem Befehlsnamen ein Digest_Spec vorangestellt ist, wird der Befehl nur erfolgreich abgeglichen, wenn er mit dem angegebenen SHA-2-Digest verifiziert werden kann. Dies kann in Situationen nützlich sein, in denen der Benutzer, der sudo aufruft, Schreibzugriff auf den Befehl oder sein übergeordnetes Verzeichnis hat. Die folgenden Digest-Formate werden unterstützt:sha224, sha256, sha384 und sha512. Die Zeichenfolge kann entweder im Hex- oder im Base64-Format angegeben werden (Base64 ist kompakter). Es gibt mehrere Dienstprogramme, die SHA-2-Digests im Hex-Format generieren können, wie beispielsweise openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum.
http://www.sudo.ws/man/1.8.13/sudoers.man.html
Linux bietet keine Möglichkeit, die Ausführung von Bash-Skripten basierend auf digitalen Signaturen einzuschränken.
Es gibt einige Arbeiten zur Authentifizierung binärer ausführbarer Dateien. Weitere Informationen finden Sie unter https://lwn.net/Articles/488906/.