- Lorsque vous exécutez un exécutable, le système d'exploitation refuse parfois votre autorisation. Par exemple, l'exécution
make install
avec le préfixe étant un chemin d'accès système sera nécessairesudo
, tandis qu'avec le préfixe étant un chemin d'accès non système ne sera pas demandé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? - 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écutiondu
sur un répertoire système, seulsudo
celui-ci 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? - Est - il vrai que chaque fois que des
sudo
œuvres,su
travailleront aussi, et chaque fois que dessu
travaux,sudo
travaillera également? ou avecsu
, un utilisateur peut faire plus qu'avecsudo
? Comment le système d'exploitation décide-t-il quand ilsudo
fonctionne et quandsu
est nécessaire?
permissions
sudo
StackExchange pour tous
la source
la source
Réponses:
sudo
vous l'exécutez sous le nom d'un autre utilisateur. Si cet utilisateur est «capable de faire plus de choses» que votre utilisateur et que lasudo
configuration vous permet de faire ces choses au nom de l'autre utilisateur, alors oui,sudo
vous permettra de faire plus de choses. Ce n'est cependant pas nécessaire. Si vous vous contentez de vous accrochersudo
au début de la ligne de commande, vous êtes en faitsudo
commeroot
, donc vous êtes généralement capable de faire plus de choses qu'un simple mortel.sudo
vous devez fournir votre propre mot de passe utilisateur, puis vous êtes autorisé à faire certaines choses au nom de l'utilisateur cible. Pour l'utilisersu
, vous avez besoin du mot de passe de l'utilisateur cible et si vous l'avez, vous devenez cet utilisateur cible en ce qui concerne le système et pouvez faire tout ce que l'utilisateur peut faire.Voir également
la source
chmod
condition que vous soyez le propriétaire du fichier ouroot
.chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hello
produit un joli "Hello, World!" production.Aux fins que vous avez décrites, le système d'exploitation ne décide pas si vous avez besoin de sudo pour exécuter initialement le programme. Au lieu de cela, une fois que le programme a commencé à s'exécuter et essaie ensuite de faire quelque chose qui n'est pas autorisé par l'utilisateur actuel (comme écrire un fichier
/usr/bin
pour installer une nouvelle commande), le système d'exploitation empêche l'accès au fichier. L'action à entreprendre dans cette condition appartient au programme;make
arrête de fonctionner maisdu
passe au fichier / répertoire suivant après avoir imprimé un message.Les commandes
su
etsudo
sont deux manières différentes d'exécuter un programme avec des privilèges root. Ils peuvent différer dans des détails mineurs tels que le contenu de l'environnement au démarrage du nouveau programme, selon les options utilisées. L'OS n'a pas besoin de décider quand l'un ou l'autre pourrait fonctionner.la source
su
etsudo
sont des programmes privilégiés.su
change (après une authentification réussie) l'identifiant réel et effectif de l'utilisateur et du groupe en celui de l'utilisateur auquel vous voussu
adressez. Ainsi,su
est similaire àlogin
. Notez que celasu
peut être utilisé pour passer à n'importe quel utilisateur, pas seulement root.sudo
modifie également les identifiants d'utilisateur et de groupe réels et efficaces. Jusqu'à ce pointsu
etsudo
sont similaires (mais sans rapport), au-delà, ils sont très différents.Avec
su
, vous devez connaître le mot de passe de la cible et une fois authentifié, vous pouvez faire ce que vous voulez en tant qu'utilisateur. L'utilisation desu
peut être limitée par la miseSU_WHEEL_ONLY
en/etc/login.defs
. S'il est défini, seuls les utilisateurs du groupewheel
peuvent utilisersu
, sinon il n'est pas restreint. En dehors de cela,su
c'est tout ou rien.sudo
est complètement différent à cet égard. Avecsudo
vous pouvez définir des politiques assez complexes/etc/sudoers
sur ce que le sudoer (l'utilisateur qui appellesudo
) est autorisé à faire. Par exemple, vous pouvez définir des stratégies dans lesquelles certains utilisateurs peuvent exécuter uniquement certains programmes avec certains privilèges, tandis que d'autres utilisateurs peuvent exécuter d'autres programmes avec d'autres privilèges.L'une des caractéristiques frappantes de
sudo
est que vous pouvez le configurer de telle sorte qu'un utilisateur doit s'authentifier avec son propre mot de passe (au lieu de celui de la cible). Ainsi,sudo
est devenu très populaire parmi les administrateurs, car il permet d'autoriser les utilisateurs à effectuer uniquement des opérations privilégiées définies sans distribuer le mot de passe du superutilisateur, et vous obtenez un certain degré de responsabilité.la source
tl; dr L'accès est déterminé par l'utilisateur qui exécute l'application et
sudo
exécute les applications en tant qu'utilisateur différent.Version complète:
Ça ne sait pas. UNIX gère les autorisations non pas au niveau de l'application mais au niveau du système de fichiers: des autorisations sont accordées aux utilisateurs pour accéder à des fichiers spécifiques. Les applications sont ensuite exécutées au nom de l'utilisateur - chaque processus en cours d'exécution est associé à un utilisateur. Cet utilisateur est utilisé pour déterminer les autorisations pour cette application. Sudo fonctionne en exécutant des applications pour le compte d'un autre utilisateur (avec les autorisations associées à cet autre utilisateur), à savoir
root
le superutilisateur.Quant à vos exemples:
Si l'utilisateur a un accès en écriture à un répertoire particulier, il peut le faire
make install
dans ce répertoire. Sinon, ils peuvent l'avoirroot
fait - en utilisantsudo
.Si vous ne pouvez pas accéder aux fichiers d'un répertoire, l'
du
exécution pour vous ne peut pas non plus y accéder.root
peut accéder à pratiquement tous les fichiers, doncsudo du
(du
exécuté au nom deroot
) peut également y accéder.Oui et non. Oui, si le programme est réellement exécuté, il devrait se comporter de la même manière sous
sudo
etsu
. Cependant,sudo
fournit un contrôle plus précis de qui peut exécuter quoi par un ensemble de règles stockées dans un/etc/sudoers
fichier.su
est plus simple - si vous connaissez le mot de passe de l'utilisateur cible, vous pouvez exécuter des programmes au nom de cet utilisateur.Dernière remarque: la façon dont l'application gère le refus d'accès (où elle abandonne, ignore ou avertit l'utilisateur) dépend de l'application.
la source
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
etsu
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 aussisudoedit
cela fait partie desudo
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).la source