Le fichier /etc/hosts doit pouvoir être lu par d'autres programmes pour remplir sa fonction. Si vous cryptez le fichier de quelque manière que ce soit, ces autres programmes ne pourront pas le lire - et il cessera de fonctionner.
En bref, il n'est pas possible d'effectuer cette opération (c'est-à-dire le cryptage) de manière significative.
Cependant, vous pouvez vous assurer que d'autres personnes n'ont pas de mots de passe pour les comptes administratifs de votre Mac. S'ils ont besoin de plus de privilèges pour quelque chose, faites en sorte de leur attribuer un accès à cette ressource spécifique (par exemple via un accès sudo limité à un programme spécifique) - et assurez-vous de ne pas leur donner un accès administratif complet.
Un exemple d'utilisation de sudo pour donner l'accès à la modification d'un fichier est l'utilisation de l'option "sudoedit" dans sudo. Cela vous permet de donner à une autre personne l'accès à l'édition d'un fichier sans laisser son éditeur s'exécuter en tant qu'utilisateur privilégié (ce qui est voué à lui permettre de "s'échapper" et de faire d'autres choses en tant qu'utilisateur privilégié). Pour ce faire, il suffit de copier le fichier privilégié dans un emplacement distinct, de laisser l'utilisateur exécuter son éditeur habituel sous son propre nom d'utilisateur pour éditer ce fichier, puis de copier son contenu sur le fichier privilégié.
Dans sudoers, vous devez spécifier quelque chose comme :
username sudoedit /etc/hosts
Par défaut, cela permet à "nom d'utilisateur" de modifier ce fichier, et lui demande d'entrer son propre mot de passe de connexion avant de le faire.
Si vous souhaitez que l'utilisateur saisisse un mot de passe différent, qui ne soit pas son mot de passe de connexion, vous avez essentiellement deux façons de procéder.
Une solution consiste à ne pas utiliser "sudoedit" : Créez plutôt un programme personnalisé (qui peut être un script) qui entre simplement une chaîne de caractères et vérifie qu'elle correspond au mot de passe que vous voulez, puis imite simplement ce que fait sudoedit. Il peut aussi être très simple et se contenter d'une commande "cp" pour copier un chemin spécifique du dossier personnel de l'utilisateur vers /etc/hosts.
L'autre solution consiste à modifier les mots de passe que sudo acceptera comme valides. Cela se fait en éditant /etc/pam.d/sudo et en décommentant les lignes standard commençant par "auth". A la place, indiquez le module d'authentification et les options que vous souhaitez approuver.
Si vous voulez faire quelque chose de complètement personnalisé, vous pouvez compiler votre propre module PAM qui demande simplement un mot de passe et vérifie qu'il s'agit d'une chaîne de caractères spécifique. Vous pouvez commencer par le code source du module PAM pam_opendirectory par défaut et supprimer les parties relatives à OpenDirectory pour les remplacer par une simple fonction strcmp(). Le code source d'un tel module personnalisé ne comporte que quelques lignes de code.
Vous pouvez trouver le code source du module PAM pam_opendirectory ici :
https://opensource.apple.com/source/pam_modules/pam_modules-76/pam_opendirectory/pam_opendirectory.c.auto.html