Il semble que personne d'autre n'ait abordé la question évidente ici. Mettre sudo
dans votre script que vous distribuez ensuite favorise les mauvaises habitudes des utilisateurs . (Je suppose que vous le distribuez parce que vous mentionnez "d'un point de vue utilisateur.")
La vérité est qu'il existe une directive dans l'utilisation des applications et des scripts qui est similaire au principe de sécurité dans les opérations bancaires de: Ne donnez jamais vos informations personnelles à quelqu'un qui vous appelle et dit qu'il appelle "de votre banque" , et qui existe pour des raisons similaires.
La règle pour les candidatures est:
Ne tapez jamais votre mot de passe lorsque vous y êtes invité, sauf si vous êtes certain de ce qui est fait avec. Cela s'applique trois fois à toute personne ayant sudo
accès.
Si vous saisissez votre mot de passe parce que vous avez exécuté sudo
sur la ligne de commande, tant mieux. Si vous le saisissez parce que vous avez exécuté une commande SSH, très bien. Si vous le saisissez lorsque vous vous connectez à votre ordinateur, c'est parfait, bien sûr.
Si vous exécutez simplement un script ou un exécutable étranger et saisissez discrètement votre mot de passe lorsque vous y êtes invité, vous n'avez aucune idée de ce que le script fait avec. Il pourrait être en train de le stocker dans un fichier temporaire en clair, pour autant que vous le sachiez, et pourrait même ne pas se nettoyer après lui-même.
Évidemment, il existe des préoccupations distinctes et supplémentaires concernant l'exécution d'un ensemble inconnu de commandes root
, mais ce dont je parle ici est de maintenir la sécurité sur le mot de passe lui-même . Même en supposant que l'application / le script n'est pas malveillant, vous souhaitez toujours que votre mot de passe soit traité en toute sécurité pour empêcher d' autres applications de s'en emparer et de l'utiliser de manière malveillante.
Donc, ma réponse personnelle à cela est, la meilleure chose à mettre dans votre script s'il a besoin des privilèges root, est:
#!/bin/bash
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1;}
# do privileged stuff, etc.
exec
- appeler lui-même mais en même temps remplacer le processus, donc nous ne