Observe que os caracteres de redirecionamento "separam" a execução e os privilégios. Neste comando:
sudo echo disk > /sys/power/state
O que você está fazendo é executar echo disk
como raiz (sem sentido) e, em seguida, canalizar isso, como usuário normal, para um arquivo que pertence a root. Por isso, você obtém permissão negada.
Este é um caso de uso muito comum, o que você precisa fazer é sudo a parte que realmente grava no arquivo, algo como isto funciona:
echo disk | sudo tee /sys/power/state
Você também pode criar um script de shell (um arquivo) com:
echo disk > /sys/power/state
Nomeie-o, por exemplo, script.sh, execute chmod 755 script.sh
e execute isso com sudo:
sudo /wherever/you/put/this/script.sh
Quanto a executar um comando sem precisar de uma senha, isso já foi discutido antes: Como faço para sudo sem ter que digitar minha senha? . Pode ser um pouco inseguro; você pode controlar qual usuário executará o comando como root sem senha, mas nesse caso você precisaria permitir a execução do comando tee
, o que poderia permitir que usuários mal-intencionados substituíssem qualquer arquivo como root . Portanto, use com cuidado e leia toda a documentação e entenda as implicações de segurança ao fazer isso.