
Quero criar uma regra sudo que permita ao usuário ricardo
atualizar o sistema usando aptitude
, mas evite que ele use o sudo para executar qualquer outro comando (ele é um usuário problemático). Há alguma armadilha nesta regra que estou perdendo?
ricardo ALL=(root) /usr/bin/aptitude
Ricardo só usa aptitude
, não apt-get
. Além disso, não tenho o Ubuntu instalado em nenhum lugar no momento, então entendo que /usr/bin/aptitude
pode não ser o arquivo exato a ser permitido.
Se houver armadilhas nesta regra, como posso melhorá-la?
Responder1
Este comando restringirá o uso do usuário aptitude
para qualquer coisa, exceto atualizar o cache do repositório e realizar uma atualização segura do sistema.
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade
Um comando semelhante permitirá ao usuário realizar uma atualização completa, mas nada mais:
ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade
Pordocumentação do aptitude (10.04), safe-upgrade
:
Atualiza os pacotes instalados para sua versão mais recente. Os pacotes instalados não serão removidos a menos que não sejam utilizados
Em contraste, full-upgrade
:
Atualiza os pacotes instalados para sua versão mais recente, removendo ou instalando pacotes conforme necessário. Este comando é menos conservador que o upgrade seguro e, portanto, tem maior probabilidade de executar ações indesejadas. No entanto, é capaz de atualizar pacotes que o upgrade seguro não pode atualizar.
Use seu bom senso para determinar qual usuário deve ter permissão para executar. Se não tiver certeza, use a primeira regra, que permite apenas arquivos safe-upgrade
.
Observe que se você deseja permitir que um usuário instale pacotes (o que reduz bastante qualquer benefício para a segurança, mas hipoteticamente), você precisa incluir um *
após o aptitude
comando, ou seja
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>
.
Responder2
Você pode usar sudo -l
para ver quais comandos um usuário tem permissão para executar. Por exemplo, para ver quais comandos Ricardo pode executar:
sudo -ll -U ricardo
para ver se ele consegue executar o aptitude,
sudo -ll -U ricardo /usr/bin/aptitude
isso 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.
Isto deve funcionar em qualquer sistema recente baseado em Debian para você testar; a sintaxe não é específica do Ubuntu.
fonte:cara sudo
Responder3
Na verdade não consigo ver nadaerradocom aquela linha sudoers. Infelizmente, não mexi sudo
muito nas definições de configuração, portanto, nesse caso, meu conselho pode não ser confiável. Felizmente, o que eupodeO que faço é fornecer uma linha que eu sei que é segura:
ricardo ALL=/usr/bin/aptitude
É garantido que esta linha apenas permitirá que 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 no Ubuntu - How-to Geek.