Lors de l'application sudo
à une commande qui n'a pas réellement besoin sudo
,
parfois, il ne me demande pas mon mot de passe. Par exemple sous mon
$HOME
,sudo ls
.Mais je me souviens que c'est le cas pour une autre commande, bien que j'oublie laquelle.
Je me demandais donc comment sudo
décide de demander un mot de passe, quand on me donne une commande qui n'a pas vraiment besoin sudo
? Y a-t-il une règle pour le /etc/sudoers
spécifier?
Mon vrai problème est que lorsque j'utilise du
, il affiche parfois "permission refusée" pour certains répertoires, et parfois non, probablement parce que je n'ai pas la permission sur certains répertoires? J'applique sudo
à du
peu importe, et j'ai pensé qu'on me demanderait un mot de passe, mais en fait pas dans mes propres répertoires.
Réponses:
Dans une configuration typique, la commande n'est pas pertinente. Vous devez entrer votre mot de passe la première fois que vous utilisez sudo, et vous n'avez pas besoin de votre mot de passe dans ce shell particulier pendant les 15 prochaines minutes.
Du point de vue de l'ordinateur, il n'existe pas de «commande qui a besoin de sudo». Tout utilisateur peut tenter d'exécuter n'importe quelle commande. Le résultat peut n'être rien d'autre qu'un message d'erreur tel que «Autorisation refusée» ou «Aucun fichier ou répertoire», mais il est toujours possible d'exécuter la commande.
Par exemple, si vous exécutez
du
sur une arborescence de répertoires dont le contenu n'est pas autorisé à accéder, vous obtiendrez des erreurs d'autorisation. C'est ce que signifie «autorisation refusée». Si vous exécutezsudo du
, sudo s'exécute endu
tant que root, de sorte que vous n'obtenez pas d'erreurs d'autorisation (c'est le but du compte root: root¹ a toujours l'autorisation). Lorsque vous exécutezsudo du
,du
s'exécute en tant que root etsudo
n'est pas impliqué du tout après ledu
démarrage. La question de savoir si du rencontre des erreurs d'autorisation n'a absolument aucun rapport avec le fonctionnement de sudo.Il y a des commandes qui ont besoin de sudo pour faire quelque chose d'utile . L'utilité est un concept humain. Vous devez utiliser sudo (ou d'autres méthodes pour exécuter la commande en tant que root) si la commande fait quelque chose d'utile lorsqu'elle est exécutée en tant que root mais pas lorsqu'elle est exécutée sous votre compte.
Que sudo vous demande votre mot de passe dépend de deux choses.
authenticate
option sur false et en ayant une règle applicable avec laNOPASSWD
balise.timeout
option). Vous devez avoir entré le mot de passe dans le même terminal (de sorte que si vous restez connecté sur un terminal, laissez ce terminal sans surveillance et utilisez un autre terminal, quelqu'un peut 'tty_tickets
¹ presque, mais cela dépasse le cadre de ce fil.
la source
sudo
ne sait pas si la commande qu'on lui demande d'exécuter doit s'exécuter comme un autre utilisateur (généralement root), tout ce qu'il sait, c'est sa configuration. Cela détermine quels utilisateurs sont autorisés à s'exécutersudo
, avec quels utilisateurs en tant que «cibles» et pour quelles commandes; il détermine également si un mot de passe est nécessaire, lequel et s'il faut conserver un jeton d'authentification.Si vous utilisez la configuration Debian par défaut, c'est cette dernière qui est probablement impliquée ici:
sudo
vous demandera votre mot de passe la première fois que vous l'utiliserez dans un terminal donné, puis il conservera un jeton d'authentification pendant un certain temps. Si vous réutilisezsudo
dans le même terminal dans ce délai, il ne vous demandera pas de mot de passe.la source
sudo du /path/to/some/dir
devriez toujours avoir besoin de mon mot de passe ou jamais, peu importe/path/to/some/dir
?/etc/sudoers
peut spécifier des commandes et leurs arguments. Cependant, si vous n'avez rien ajouté de telsudoers
(et si vous l'avez fait, j'espère que vous en serez conscient), les arguments n'auront pas d'importance (pas plus que la commande si vous avez un accès général à root viasudo
).sudo
ne stocke pas votre mot de passe dans le cache, seulement les informations que votre identité a déjà été vérifiée une fois avec une vérification du mot de passe. Puisqu'ilsudo
s'agit d'un programme setuid-root, il dispose déjà de toutes les autorisations nécessaires pour exécuter quoi que ce soit en tant que personne - mais il est approuvé pour autoriser uniquement les utilisateurs à l'utiliser exactement comme spécifié dans lesudoers
fichier et à rejeter toutes les autres tentatives d'utilisation. . C'est pourquoi il est important que ce programmesudo
soit si petit et très bien étudié.Ce n'est pas qu'une commande a besoin ou n'a pas besoin de sudo. Quand tu cours
le système s'exécute en
command
tant queuser
.La réussite ou l'échec de l'invocation et la demande ou non d'un mot de passe dépendent de la politique de sécurité
sudoers
(généralement configurée dans/etc/sudoers
).la source