Oui et non.
La distribution de logiciels Linux fonctionne quelque peu différemment de la distribution de logiciels Windows. Dans le monde Linux (non embarqué), la principale méthode de distribution de logiciels se fait via une distribution (Ubuntu, Debian, RHEL, Fedora, Arch, etc.). Toutes les principales distributions signent systématiquement leurs packages depuis environ une décennie.
Lorsque le logiciel est distribué indépendamment, c'est au fournisseur de décider comment il expédiera son logiciel. Les bons fournisseurs fournissent des sources de paquets compatibles avec les principales distributions (il n'existe pas de mécanisme de distribution unifié pour l'ensemble de Linux :la distribution de logiciels est l'un des principaux points de différenciation entre les distributions) et qui sont signés avec la clé du fournisseur. Les distributions Linux agissent rarement en tant qu'autorité de signature pour les fournisseurs tiers (Canonical le fait avec les partenaires Ubuntu, mais cela couvre très peu de fournisseurs), et je pense que toutes les distributions majeures utilisent le Web de confiance PGP plutôt que l'infrastructure à clé publique TLS, donc c'est à l'utilisateur de déterminer s'il veut faire confiance à une clé.
Il n'existe aucun mécanisme spécial qui distingue les packages logiciels constitués d'un seul script des packages logiciels constitués d'un exécutable natif, d'un fichier de données ou de plusieurs fichiers. De plus, aucune vérification de signature n'est intégrée à un interpréteur de script commun, car la vérification d'un progiciel est une préoccupation complètement orthogonale à l'exécution d'un script.
Je pense que Windows annote les fichiers avec leur origine et nécessite la confirmation de l'utilisateur pour exécuter un fichier dont l'origine est "téléchargée" plutôt que "locale". Linux n'a pas vraiment de mécanisme similaire. La chose la plus proche est l'autorisation d'exécution :un fichier téléchargé n'a pas d'autorisation d'exécution, l'utilisateur doit l'activer explicitement (chmod +x
sur la ligne de commande, ou l'action équivalente dans un gestionnaire de fichiers).
Si vous bloquez la capacité des utilisateurs à exécuter des scripts via sudo
alors vous pouvez utiliser le digest
Fonctionnalité.
Vous pouvez spécifier le hachage d'un script/exécutable dans sudoers
qui sera vérifié par sudo
avant d'être exécuté. Ainsi, bien que ce ne soit pas la même chose que la signature, cela vous donne une garantie de base que le script n'a au moins pas été modifié sans que les sudoers ne soient également modifiés.
Si un nom de commande est précédé d'un Digest_Spec, la commande ne correspondra correctement que si elle peut être vérifiée à l'aide du résumé SHA-2 spécifié. Cela peut être utile dans les situations où l'utilisateur appelant sudo a un accès en écriture à la commande ou à son répertoire parent. Les formats de résumé suivants sont pris en charge :sha224, sha256, sha384 et sha512. La chaîne peut être spécifiée au format hexadécimal ou base64 (base64 est plus compact). Il existe plusieurs utilitaires capables de générer des résumés SHA-2 au format hexadécimal, tels que openssl, shasum, sha224sum, sha256sum, sha384sum, sha512sum.
http://www.sudo.ws/man/1.8.13/sudoers.man.html
Linux ne permet pas de limiter l'exécution de scripts bash basés sur des signatures numériques.
Il y a du travail sur l'authentification des exécutables binaires. Voir https://lwn.net/Articles/488906/ pour plus d'informations.