Não é possível alterar o power_method 14.04

1

Estou tentando modificar meu método de potência para o meu cartão ati, pois é como ter um helicóptero na sala. Eu uso os mesmos métodos descritos aqui .

sudo bash -c echo "profile" > /sys/class/drm/card0/device/power_method
bash: /sys/class/drm/card0/device/power_method: Permission denied

Eu também tentei mudar para root sudo -i e fazer o mesmo, mas não funciona. Alguma idéia?

    
por OdinRW 15.09.2014 / 23:53

1 resposta

0

O operador de redirecionamento não faz parte do seu comando sudo . Em outras palavras, quando você executa sudo bash -c echo "profile" > /sys/class/drm/card0/device/power_method , o que realmente acontece é:

  1. O shell executa sudo bash -c echo "profile"
  2. sudo , que tem o bit setuid definido, solicita sua senha e bifurca o processo bash -c echo "profile" com EUID definido como 0 (isto é, o comando é executado como raiz)
  3. O comando bash executa echo "profile" e imprime profile na saída padrão como raiz.
  4. bash termina, sudo termina
  5. O shell que executa o comando original tira a string da saída padrão e tenta redirecioná-la para /sys/class/drm/card0/device/power_method , o que gera um Permission denied , pois o shell não está sendo executado com privilégios de root.

Existem várias maneiras de resolver isso. Uma é dar a string inteira com o operador de redirecionamento como argumento para bash -c :

sudo bash -c 'echo "profile" > /sys/class/drm/card0/device/power_method'

Eu também já vi pessoas usarem tee , que parece mais legal (e não executa o comando echo como root):

echo "profile" | sudo tee /sys/class/drm/card0/device/power_method

tee lê a entrada padrão e as saídas para a saída padrão both e todos arquivos que você passou como parâmetros.

    
por Malte Skoruppa 21.09.2014 / 12:34