Transmission des droits de sudo

bonjour ,

Un exemple :

mm@Xfce:~$ sudo ack editor /root/.selected_editor > /root/f 
bash: /root/f: Permission non accordée

mm@Xfce:~$ sudo ack editor /root/.selected_editor > f ; cat f
[sudo] Mot de passe de mm : 
# Generated by /usr/bin/select-editor

donc les droits de sudo semblent être bloqués par la redirection ( > ) . Y a-t-il une règle générale ou bien chaque commande est-elle un cas particulier ?

Bonjour

L’accès aux privilèges du compte root par sudo concerne la première commande qui suit la commande sudo
La commande de redirection qui suit n’est donc pas exécutée avec ces privilèges.


Ci-desous, la commande sh sera lancée avec les privilèges du compte root
et c’est cette commande sh qui lancera les commandes qui sont dans la chaîne de caractères qui est entourée par les guillemets simples.

sudo sh -c 'ack editor /root/.selected_editor > /root/f'

OK , je n’en étais pas très sûr , maintenant le doute est levé .

et c’est cette commande sh qui lancera les commandes qui sont dans la chaîne de caractères qui est entourée par les guillemets simples.

je ne connaissais pas alors je suis allé voir le manuel :

man sh

DASH(1)                       BSD General Commands Manual                       DASH(1)

NAME
     dash — command interpreter (shell)

donc si je comprends bien , avec cette commande je passe de l’interpréteur Bash à Dash ?

Je me rends compte de l’utilité de la commande ( su - ) qui simplifie quand même bien les choses .

merci pour ces explications .

Oui, enfin c’est plutôt un « emboîtement » de shells :
à partir de l’interpréteur de commande bash (depuis lequel la ligne de commandes est lancée) on lance, par sudo, un sous-shell dash qui est donc exécuté, grâce à sudo, avec les privilèges du compte root, et qui, grâce à l’utilisation de l’option -c va exécuter les commandes qui sont dans la chaîne de caractères qui suit.

On aurait pu tout aussi bien utiliser un autre shell bash comme sous-shell, mais les commandes à lancer ne nécessitaient pas l’utilisation d’un shell aussi lourd que bash, alors autant utiliser un shell beaucoup plus léger : dash