su & sudo & echo

2 réponses
Avatar
mireero
Salut,

Dans les différences entre sudo et lancer une commande en root on a:

$ sudo echo 3 > /proc/sys/vm/drop_caches
-bash: /proc/sys/vm/drop_caches: Permission denied

alors que cela fonctionne bien en root:
$ sudo su -c "echo 3 > /proc/sys/vm/drop_caches"

(Ok, c'est un peu tordu là, c'est pour le fun!)

Pourquoi?

Il me semble que cela a un rapport avec le fait que echo est un
"builtin" du shell mais j'arrive pas à trouver une logique.

--
mireero

2 réponses

Avatar
Nicolas George
mireero , dans le message <55340249$0$3089$, a
écrit :
Dans les différences entre sudo et lancer une commande en root on a:

$ sudo echo 3 > /proc/sys/vm/drop_caches
-bash: /proc/sys/vm/drop_caches: Permission denied

alors que cela fonctionne bien en root:
$ sudo su -c "echo 3 > /proc/sys/vm/drop_caches"



Tu peux remplacer su par sh dans cette ligne, ça marchera aussi bien et plus
efficace.

Il me semble que cela a un rapport avec le fait que echo est un
"builtin" du shell mais j'arrive pas à trouver une logique.



Non, rien à voir. Tu peux t'en convaincre en essayant de faire « date >
/root/test », puisque date n'est pas une primitive du shell.

Il s'agit de regarder quel processus interprète la redirection.
Avatar
Sergio
Le 19/04/2015 22:30, mireero a écrit :
Salut,

Dans les différences entre sudo et lancer une commande en root on a:

$ sudo echo 3 > /proc/sys/vm/drop_caches
-bash: /proc/sys/vm/drop_caches: Permission denied

alors que cela fonctionne bien en root:
$ sudo su -c "echo 3 > /proc/sys/vm/drop_caches"

(Ok, c'est un peu tordu là, c'est pour le fun!)

Pourquoi?

Il me semble que cela a un rapport avec le fait que echo est un "builtin" du shell mais j'arrive pas à trouver une logique.



Non. La redirection est considérée comme exécuté par toi (pas root, donc). Pour s'en tirer :

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org