sudo не изменяет параметры sysfs [дубликат]

Я не могу выполнить следующую команду с sudo , чтобы изменить параметр sysfs:

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

Однако он работает без sudo , когда я перехожу на пользователя 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

Вот права доступа к файлу:

$ 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

Делает это имеет смысл для вас?

Обратите внимание, что у меня есть изменения в файле / etc / sudoers с visudo , чтобы сделать команды sudo без пароля.

4
задан 2 February 2015 в 17:58

2 ответа

"Эхо 300" выполняется с помощью sudo, который выводы 300 к stdout нормальным способом. Тогда как Ваш обычный пользователь, Вы пытаетесь взять тот вывод и записать в/sys /

, Sudo не является волшебной командой, которая поднимает полномочия для Вашей целой командной строки. Это берет аргументы, которые Вы передали ему и выполняете их как программу. Bash (который работает как обычный пользователь) выполняется 'sudo, отзываются эхом 300', тогда берет тот вывод и попытки записать его в файл. Обратите внимание, что записи в файл делаются ударом, который работает как обычный пользователь.

Это должно работать:

sudo колотят-c, "отзываются эхом 300>/sys/block/md0/md/stripe_cache_size"

, sudo выполнит удар с более высокими полномочиями, и затем что корневой удар выполнит целую команду.

0
ответ дан 2 February 2015 в 17:58

Вы выполняете сюда только эхо с командой sudo, но - его input/output/stderr от обычного пользователя.

, Если Вы хотите записать в файл как пользователь root, Вы не можете использовать> от оболочки. Вместо этого использование, например, кладет команду для первого удара:

echo 300 |sudo tee /sys/block/md0/md/stripe_cache_size
0
ответ дан 2 February 2015 в 17:58

Другие вопросы по тегам:

Похожие вопросы: