Permitir que certos convidados executem certos comandos

19

Eu gostaria de criar um novo usuário em alguns dos meus hosts Debian / Ubuntu que é capaz de atualizar o servidor usando os comandos apt-get updatee apt-get dist-upgrade, mas não quero dar a eles acesso total ao sudo para poder fazer qualquer outra coisa. Isso é possível? Talvez haja uma maneira de criar um script que eles não podem editar, mas podem executar, o que será executado como usuário root?

Programador
fonte
2
Veja man sudoerse sudo cat /etc/sudoers.
Goldilocks
Obrigado @goldilocks Eu sempre pensei que o arquivo sudoers era apenas para permitir que as pessoas tivessem acesso root antes.
Programster

Respostas:

30

Sudoe o /etc/sudoersarquivo não serve apenas para garantir aos usuários acesso total à raiz.

Você pode editar o arquivo sudoers com um usuário sudo existente, com o comando sudo visudo

Você pode agrupar os comandos aos quais deseja conceder acesso, como abaixo:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/poweroff, /sbin/halt, /sbin/reboot
Cmnd_Alias UPDATE_COMMANDS = /usr/bin/apt-get

Você pode então conceder privilégios de usuário específicos a esses comandos, como:

[User's name] ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS, UPDATE_COMMANDS

Isso pode ser visto na imagem abaixo insira a descrição da imagem aqui:

Agora, se você tentar sudo apt-get updateou sudo apt-get dist-upgradeesses comandos serão executados sem solicitar uma senha . Se você deseja que seja solicitada uma senha, remova o NOPASSWDbit em que você concede ao usuário acesso aos grupos de comandos.

Se você tentar executar qualquer outra coisa como sudousuário, será solicitada uma senha e falhará.

Referências

Programador
fonte
6
Observe que dar aos usuários a permissão para executar apt-get, ou mesmo meramente apt-get upgrade, lhes dá acesso root completo ! Muitos scripts de atualização permitem ao usuário interativo executar um shell, por exemplo, quando um arquivo de configuração é alterado. Para ser seguro, restrinja apt-geta determinados comandos e force-o a não ser interativo. Consulte É seguro que meu usuário ssh receba sudo sem senha para apt-get updatee apt-get upgrade?
Gilles 'SO- stop be evil'
No meu caso, tive que colocar a linha depois #%sudo ...
Aleksey
Existe uma maneira de fazer isso apenas na linha de comando?
Kamil Dziedzic