На этот вопрос уже есть ответ:
Я не могу выполнить следующую команду с 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
без пароля.
"Эхо 300" выполняется с помощью sudo, который выводы 300 к stdout нормальным способом. Тогда как Ваш обычный пользователь, Вы пытаетесь взять тот вывод и записать в/sys /
, Sudo не является волшебной командой, которая поднимает полномочия для Вашей целой командной строки. Это берет аргументы, которые Вы передали ему и выполняете их как программу. Bash (который работает как обычный пользователь) выполняется 'sudo, отзываются эхом 300', тогда берет тот вывод и попытки записать его в файл. Обратите внимание, что записи в файл делаются ударом, который работает как обычный пользователь.
Это должно работать:
sudo колотят-c, "отзываются эхом 300>/sys/block/md0/md/stripe_cache_size"
, sudo выполнит удар с более высокими полномочиями, и затем что корневой удар выполнит целую команду.
Вы выполняете сюда только эхо с командой sudo, но - его input/output/stderr от обычного пользователя.
, Если Вы хотите записать в файл как пользователь root, Вы не можете использовать> от оболочки. Вместо этого использование, например, кладет команду для первого удара:
echo 300 |sudo tee /sys/block/md0/md/stripe_cache_size