web-dev-qa-db-fra.com

Comment autoriser un utilisateur à exécuter uniquement la commande apt-get update avec sudo?

Je ne vois pas comment autoriser un utilisateur (dans ce cas, test) à exécuter uniquement la commande apt-get update avec le fichier sudoers. Chaque fois que j'essaye d'ajouter l'utilisateur puis de le tester, il ne permet toujours pas à l'utilisateur d'exécuter la commande.

Quelqu'un peut-il m'aider s'il vous plaît? J'ai fait des recherches à ce sujet toute la journée et je ne peux toujours pas le comprendre. Je suis probablement en train de taper quelque chose qui ne va pas.

J'utilise Ubuntu 14.04.

7
Alex Lowe

En regardant la réponse de Andre Herman Bezerra, le seul problème avec cela est signalé dans les commentaires ceci NE (()) n'impose pas à l'utilisateur de se mettre à jour uniquement (ils peuvent installer/supprimer des paquets).

Si vous souhaitez empêcher un utilisateur de pouvoir uniquement mettre à jour , il est préférable de procéder comme suit.

Créez un groupe ou utilisez le groupe %staff.

Dans cet exemple, je choisis d'utiliser le groupe d'utilisateurs du personnel.

Mettez à jour le document sudoers.

export editor="vi" && Sudo visudo

Créez un Cmnd_Alias qui définira un script bash autorisé.

Cmnd_Alias UPDATER_ONLY = /usr/local/bin/updater.sh

Vous devez définir comment cette commande est autorisée.

# 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

Enfin, vous devez créer le shell.

Pour empêcher toute personne modifiant le fichier, celle-ci doit appartenir à root et à une lecture seule , ou être créée en cours d’exécution 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

Cela devrait ressembler à ceci:

$ ls -la /usr/local/bin/updater.sh
-rwxr-xr-x 1 root root 60 Jan 22 08:50 /usr/local/bin/updater.sh*

Nous avons presque terminé!

N'oubliez pas d'autoriser ce privilège en ajoutant l'utilisateur au groupe d'employés.

Sudo usermod -aG staff the-user

Si quelqu'un tente d'installer quelque chose, voici ce qu'il recevra:

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.
2
ash

Commencez par éditer le /etc/sudoers uniquement avec visudoname__

Vous pouvez définir l'autorisation sur l'utilisateur joepour la commande apt-get en ajoutant uniquement la ligne suivante:

%joe your_hostname=(root):/usr/bin/apt-get

Une fois connecté en tant que joename__, vous pouvez vérifier les autorisations:

Sudo -l

Edit: l'utilisateur pourra utiliser apt-get update, upgrade, install, etc. puisque ce ne sont que des drapeaux pour la commande apt-get.

8