Este é um problema comum com o redirecionamento de sudo e shell. O "sudoness" não se propaga além do redirecionamento. Uma maneira de contornar isso é
sudo bash -c "echo 0 > /path/to/file"
Desejo desligar o ASLR no meu próprio PC. Mas cada vez que eu digito "sudo echo 0 > / proc / sys / kernel / randomize_va_space", o sistema mostra que "Permission denied". Como posso fazer isso funcionar? By the way, meu kernel do sistema operacional é 2.6.30.
Espero que alguém possa me dar uma mão.
Atenciosamente.
Em seu comando, o redirecionamento de E / S >
é tratado pelo shell atual. O comando é visto pelo intérprete como 3 partes:
sudo echo 0
>
/proc/sys/kernel/randomize_va_space
O echo
é executado usando o privilégio de superusuário enquanto o shell atual (com privilégio de usuário normal) tenta gravar em /proc/sys/kernel/randomize_va_space
e, portanto, dispara um erro Permission denied
.
Existem várias maneiras de superar isso. A primeira maneira é executar um shell com privilégios de superusuário e passar o comando para o shell usando a opção -c
:
sudo sh -c "echo 0 > /proc/sys/kernel/randomize_va_space"
(Você pode usar sh
para o shell POSIX e bash
para o Bash)
Outra maneira é usar o comando tee
. O comando tee
copia o conteúdo da entrada padrão para a saída padrão (geralmente significa a "tela"), bem como os arquivos listados. Portanto, o comando a seguir imprime o caractere A
na saída padrão, bem como os arquivos output1.txt
e output2.txt
.
echo A | tee output1.txt output2.txt
Em seu problema, gravar em /proc/sys/kernel/randomize_va_space
precisa do privilégio de superusuário, enquanto echo
-ing 0
não. Então, a solução é:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space >/dev/null
O redirecionamento final para /dev/null
impede que 0
seja impresso na tela.
O sudo
só funciona para o seu comando echo (não depois do pipe).
Você pode tentar:
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
Tags linux