Esta regra sudo permitirá que um usuário atualize o sistema e nada mais?

4

Eu quero projetar uma regra sudo que permitirá ao usuário ricardo atualizar o sistema usando aptitude , mas impedir que ele use o sudo para executar qualquer outro comando (ele é um usuário problemático). Há alguma armadilha para essa regra que estou perdendo?

ricardo  ALL=(root) /usr/bin/aptitude

Ricardo usa apenas aptitude , não apt-get . Além disso, eu não tenho o Ubuntu instalado em qualquer lugar no momento, então eu entendo que /usr/bin/aptitude pode não ser exatamente o arquivo correto para permitir.

Se houver armadilhas para essa regra, como posso melhorá-la?

    
por Ricardo Altamirano 21.02.2013 / 17:00

3 respostas

5

Este comando irá restringir o usuário de usar aptitude para qualquer coisa, mas atualizando o cache do repositório e executando uma atualização segura do sistema.

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade

Um comando semelhante permitirá que o usuário realize uma atualização completa, mas nada mais:

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade

Por documentação do aptitude (10.04) , safe-upgrade :

  

Atualiza os pacotes instalados para sua versão mais recente. Instalado              pacotes não serão removidos a menos que não sejam usados

Em contraste, full-upgrade :

  

Atualiza os pacotes instalados para a versão mais recente, removendo              ou instalar pacotes conforme necessário. Este comando é menos              conservador do que seguro-upgrade e, portanto, mais propensos a realizar              ações indesejadas. No entanto, é capaz de atualizar pacotes que              O upgrade seguro não pode ser atualizado.

Use seu melhor julgamento para o qual o usuário deve ter permissão para executar. Se você não tiver certeza, use a primeira regra, que só permite safe-upgrade .

Observe que, se você quiser permitir que um usuário instale pacotes (o que reduz bastante qualquer benefício à segurança, mas hipoteticamente), será necessário incluir um * após o comando aptitude , por exemplo

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade, /usr/bin/aptitude install *

Caso contrário, você receberá uma mensagem de erro informando que o usuário ricardo não tem permissão para executar o comando /usr/bin/aptitude install <package_name> .

    
por Ricardo Altamirano 21.02.2013 / 19:24
4

Você pode usar sudo -l para ver quais comandos um usuário pode executar. Por exemplo, para ver quais comandos o ricardo pode executar:

sudo -ll -U ricardo

para ver se ele pode executar o aptitude,

sudo -ll -U ricardo /usr/bin/aptitude

isto irá imprimir o nome do comando conforme ele é expandido pelo sudo ou sair com o código 1 se o usuário não tiver permissão para usar o comando.

Isso deve funcionar em qualquer sistema recente baseado no Debian para você testar; a sintaxe não é específica do Ubuntu.

fonte: homem sudo

    
por roadmr 21.02.2013 / 18:08
2

Eu não consigo ver nada errado com essa linha de sudoers. Infelizmente, eu não mexi muito com as configurações de sudo , então, nesse caso, meu conselho pode não ser confiável. Felizmente, o que eu posso fazer é fornecer uma linha que sei que é segura:

ricardo ALL=/usr/bin/aptitude

Esta linha garante que o ricardo execute aptitude como root, desde que ricardo não seja membro de um grupo habilitado para sudo, como sudo ou admin .

Fonte: 8 maneiras de ajustar e configurar o Sudo em Ubuntu - How-to Geek .

    
por fouric 21.02.2013 / 18:08