Olhando a resposta de Andre Herman Bezerra, o único problema com isso é apontado nos comentários que isso NÃO restringe o usuário a atualizar apenas (eles podem instalar / remover pacotes).
Se você quiser restringir um usuário a atualizar somente , é melhor fazer o seguinte.
Crie um grupo ou use o grupo %staff
.
Neste exemplo, estou escolhendo usar o grupo de usuários da equipe.
Atualize o documento sudoers
.
export editor="vi" && sudo visudo
Crie um Cmnd_Alias
que definirá uma bash roteiro permitido.
Cmnd_Alias UPDATER_ONLY = /usr/local/bin/updater.sh
Você precisa definir como esse comando é permitido.
# Require staff to enter password when updating.
%staff ALL= UPDATER_ONLY
# Or, password is not required, just run the updater.
%staff ALL= NOPASSWD: UPDATER_ONLY
Finalmente, você precisa criar o shell.
Para evitar que alguém edite o arquivo, ele deve ser de propriedade de root e de somente leitura ou criado durante a execução de sudo .
$ sudo echo '#!/bin/bash' >> /usr/local/bin/updater.sh
$ sudo echo 'sudo apt-get update && sudo apt-get upgrade -y' >> /usr/local/bin/updater.sh
$ sudo chmod 0755 /usr/local/bin/updater.sh
Isso deve se parecer com o seguinte:
$ ls -la /usr/local/bin/updater.sh
-rwxr-xr-x 1 root root 60 Jan 22 08:50 /usr/local/bin/updater.sh*
Estamos quase terminando!
Você precisa se lembrar de permitir esse privilégio adicionando o usuário ao grupo de funcionários.
sudo usermod -aG staff the-user
Se alguém tentar instalar algo, isso é o que recebe:
test-me@comp0:~$ sudo apt-get install test
[sudo] password for test-me:
Sorry, user test-me is not allowed to execute '/usr/bin/apt-get install test' as root on comp0.