6 votes

Sudo ne modifie pas les paramètres sysfs

Je ne peux pas exécuter la commande suivante avec sudo pour changer un paramètre sysfs :

$ sudo echo 300 > /sys/block/md0/md/stripe_cache_size
bash: /sys/block/md0/md/stripe_cache_size: Permission denied

Cependant, cela fonctionne sans sudo lorsque je passe à l'utilisateur root :

$ sudo su
[root] [ /home/arh ]  
 #  echo 300 > /sys/block/md0/md/stripe_cache_size
[root] [ /home/arh ]  
 # cat /sys/block/md0/md/stripe_cache_size
300

Voici les permissions du fichier :

$ ls -l  /sys/block/md0/md/stripe_cache_size 
-rw-r--r-- 1 root root 4096 Feb  2 08:50 /sys/block/md0/md/stripe_cache_size

Cela a-t-il du sens pour vous ?

Notez que j'ai modifié le fichier /etc/sudoers avec visudo pour rendre les commandes sudo sans mot de passe.

7voto

WillW Points 186

Le "echo 300" est exécuté en utilisant sudo, qui affiche 300 sur stdout de manière normale. Ensuite, en tant qu'utilisateur ordinaire, vous essayez de prendre cette sortie et d'écrire dans /sys/

Sudo n'est pas une commande magique qui élève les privilèges pour toute votre ligne de commande. Il prend les arguments que vous lui avez transmis et les exécute en tant que programme. Bash (qui s'exécute en tant qu'utilisateur normal) exécute 'sudo echo 300' puis prend cette sortie et tente de l'écrire dans un fichier. Notez que l'écriture dans le fichier est faite par bash qui s'exécute en tant qu'utilisateur normal.

Cela devrait fonctionner :

sudo bash -c "echo 300 > /sys/block/md0/md/stripe_cache_size"

Sudo exécutera bash avec des privilèges plus élevés, et ensuite ce bash racine exécutera toute la commande.

6voto

Jim Klimov Points 21

Vous exécutez ici uniquement l'écho avec la commande sudo, mais - son entrée/sortie/stderr provient de l'utilisateur régulier.

Si vous souhaitez écrire dans un fichier en tant qu'utilisateur root, vous ne pouvez pas utiliser > depuis le shell. Utilisez plutôt par exemple la commande tee:

echo 300 |sudo tee /sys/block/md0/md/stripe\_cache\_size

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X