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 ?
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'
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