Personne n'a encore de ✓, alors j'ai préparé une réponse qui a tout ce à quoi je pouvais penser.
1 Lorsque vous exécutez un exécutable, le système d'exploitation refuse parfois votre autorisation. Par exemple, l'exécution de make install avec le préfixe étant un chemin d'accès système aura besoin de sudo, tandis que le préfixe étant un chemin d'accès non système, il ne sera pas demandé de sudo. Comment le système d'exploitation décide-t-il que l'exécution d'un exécutable nécessiterait plus de privilèges qu'un utilisateur, avant même que le programme ne fasse quelque chose?
Non, cela n'est pas fait lors du démarrage d'un exécutable. Cela se fait lorsque l'exécutable essaie de faire quelque chose.
Le système d'exploitation vérifiera les autorisations et les capacités du système de fichiers (celles-ci ne sont pas couvertes par les autorisations du système de fichiers, et comprendra la réduction du niveau agréable, mknode, certaines choses de réseau de bas niveau, la suppression des processus des autres, le redémarrage, la définition de l'heure, etc.). Si vous ne disposez pas des autorisations, vous ne pouvez pas le faire. Root a un ensemble complet de capacités, y compris CAP_DAC_OVERRIDE (ignorer l'autorisation de fichier).
2 Parfois, l'exécution d'un programme ne se verra pas refuser l'autorisation, mais le programme pourra faire plus de choses s'il est exécuté avec sudo. Par exemple, lors de l'exécution de du sur un répertoire système, uniquement avec sudo, il pourra accéder à certains répertoires. Pourquoi le système d'exploitation ne refuse-t-il pas l'autorisation d'exécuter un tel programme, ou une notification amicale plus de privilèges est préférée, avant que le programme puisse s'exécuter?
L'OS ne peut pas savoir ce que fera le programme. Il appartient donc au programme de vérifier les autorisations avant de commencer et de décider quoi faire. Il ne doit cependant pas le faire.
Remarque: sur Android, il y a un manifeste, dans ce dossier, l'application déclare les privilèges qu'elle peut utiliser. L'OS va tuer toute application qui essaie d'utiliser un privilège qu'il ne déclare pas, et l'OS ne garantit pas toujours qu'un privilège peut être honoré. par exemple, l'accès au réseau peut ne pas être disponible.
2 Est-il vrai que chaque fois que sudo fonctionne, su fonctionne également, et chaque fois que su fonctionne, sudo fonctionne également? ou avec su, un utilisateur peut faire plus qu'avec sudo? Comment le système d'exploitation décide-t-il quand sudo fonctionne et quand su est nécessaire?
sudo
et su
faire à peu près le samething. Certaines différences concernent la gestion des variables d'environnement et d'autres évitements de problèmes de sécurité. Cependant, ce sont deux outils pour vous permettre de devenir un autre utilisateur, et tous deux ont un utilisateur root par défaut.
su
était l'outil d'origine, il vous oblige à entrer le mot de passe de l'utilisateur / groupe que vous modifiez.
sudo
est plus récent et requiert, par défaut, que vous saisissiez votre propre mot de passe, mais peut être configuré pour accepter le mot de passe de l'utilisateur / groupe vers lequel vous basculez, ou aucun mot de passe. Il permet également beaucoup de configuration, des commandes avec lesquelles il fonctionnera, pour qui et comment il s'authentifiera avec ce programme pour cet utilisateur sur cette machine. Il y a aussi sudoedit
cela fait partie de sudo
et peut être utilisé pour permettre la modification en tant qu'utilisateur différent et éviter le problème de sécurité de sous-décortiquer un éditeur (appeler exec à partir de l'éditeur pour exécuter un processus arbitraire avec des privilèges élevés).