Privilégios recursivos do Sudo

1

Estou no processo de criar um sudo especializado para nossa equipe de suporte de primeira linha. Gostaria de autorizá-los a excluir qualquer coisa dentro de /var/log/ . O comando abaixo, no entanto, só se aplica a arquivos diretamente em /var/log/ , não em seus subdiretórios. Se eles tentarem excluir de /var/log/directory/file_name , eles não poderão excluir o arquivo. Eu tentei algumas leituras, mas não consegui descobrir como alterar esse comando para tornar as permissões recursivas. Qualquer conselho seria apreciado.

%front_line ALL=(ALL) NOPASSWD: /bin/rm /var/log/*
    
por Gary White 26.02.2016 / 17:46

2 respostas

5

Eu acho que você está fazendo errado TM . Você não pode simplesmente excluir arquivos de log como esse, você principalmente precisa reiniciar os daemons relevantes que estão gerando os arquivos de log também. A Falha do servidor está repleta de perguntas de pessoas que excluíram um arquivo de log e, em uma data futura, "inesperadamente" ficaram sem espaço em disco.

Muitos dos daemons que escrevem para / var / log abrem o arquivo na inicialização e então mantêm o arquivo aberto até que eles reiniciem ou (se programado para isso) eles fecham e reabrem o arquivo quando sinalizados. Isso significa que quando você exclui o arquivo, ele ainda está aberto, ocupando espaço em disco e aumentando.

Observe também que a sua "solução" nos comentários provavelmente excluirá todos os subdiretórios que possam causar falha na inicialização correta dos daemons, porque o caminho para seus arquivos de log não existe.

Para fazer isso corretamente, você terá que analisar em detalhes o que sua equipe de linha de frente precisa fazer e para quais arquivos. Você precisará descobrir se é seguro excluir um arquivo específico ou se precisará reiniciar o daemon também. Não é um trabalho tão simples quanto parece pensar.

    
por 26.02.2016 / 18:33
-1

Bem, isso não é uma resposta, mas eu recomendo que você nunca, NUNCA use * em conjunto com binários como rm . Imagine a consequência do seguinte comando

rm -rf /var/log/../../*

Seu conjunto de regras permite que este comando seja executado. Você precisa delevar seu conjunto de regras com mais cuidado. Tente evitar * o máximo possível.

    
por 26.02.2016 / 18:55