Como ativar um usuário não-root para esvaziar o cache do buffer do Linux

1

Eu sou obrigado a esvaziar o cache de buffer do Linux em um script python, que é executado em uma VM wheezy do Debian.

Como root, executo sync; echo 3 | sudo tee /proc/sys/vm/drop_caches , mas o script é executado por um usuário, sem privilégios de root.

Pensei nas seguintes possibilidades:

  • conceda ao usuário permissões de gravação no arquivo /proc/sys/vm/drop_caches (o que parece não funcionar, já que a operação não é permitida quando eu chmod 646 /proc/sys/vm/drop_caches )
  • Defina o setuid em tee , o que deve funcionar, mas o usuário pode ir apesh * t com tee
  • Eu poderia setuid no script e remover permissões de gravação para o usuário escrever no script, para que ele não pudesse alterá-lo (mas, novamente, isso é ruim, já que o usuário pode interagir com o código)
  • ou eu poderia escrever um pequeno script bash apresentando apenas o processo vazio do cache de buffer do Linux , em seguida, remover permissões de gravação / leitura, setuid e adicionar permissão de execução para o usuário

Qual é a melhor maneira de resolver isso?

    
por Daedalus Mythos 18.11.2014 / 15:16

1 resposta

1

Da sua lista, apenas a quarta possibilidade (escrever um pequeno script setuid em um diretório seguro, por exemplo, /usr/local/bin não alterável pelo usuário) pode funcionar e pode ser segura, mas hoje em dia é frequente desativado pela distribuição.

A opção mais fácil e melhor é adicionar a seguinte linha ao / etc / sudoers (use, por exemplo, visudo para isso)

YOURUSERNAME     ALL = NOPASSWD: /sbin/sysctl vm.drop_caches=3

e, em seguida, inclua a linha

sudo /sbin/sysctl vm.drop_caches=3

no seu script.

    
por 18.11.2014 / 16:31