Autoriser certains invités à exécuter certaines commandes

19

Je voudrais créer un nouvel utilisateur sur certains de mes hôtes Debian / Ubuntu qui est capable de mettre à jour le serveur en utilisant les commandes apt-get updateet apt-get dist-upgrade, mais je ne veux pas leur donner un accès sudo complet pour pouvoir faire autre chose. Est-ce possible? Peut-être existe-t-il un moyen de créer un script qu'ils ne peuvent pas modifier mais peuvent exécuter, qui sera exécuté en tant qu'utilisateur root?

Programster
la source
2
Voir man sudoerset sudo cat /etc/sudoers.
goldilocks
Merci @goldilocks J'avais toujours pensé que le fichier sudoers était juste pour permettre aux gens d'obtenir un accès root auparavant.
Programster du

Réponses:

30

Sudoet le /etc/sudoersfichier ne sert pas uniquement à accorder aux utilisateurs un accès root complet.

Vous pouvez éditer le fichier sudoers avec un utilisateur sudo existant, avec la commande sudo visudo

Vous pouvez regrouper les commandes auxquelles vous souhaitez accorder l'accès comme ci-dessous:

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

Vous pouvez ensuite donner un privilège utilisateur spécifique à ces commandes comme ceci:

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

Cela peut être vu dans l'image ci entrez la description de l'image ici- dessous :

Maintenant, si vous essayez sudo apt-get updateou sudo apt-get dist-upgradeces commandes s'exécuteront sans demander de mot de passe . Si vous souhaitez être invité à entrer un mot de passe, supprimez le NOPASSWDbit où vous accordez à un utilisateur l'accès aux groupes de commandes.

Si vous essayez d'exécuter autre chose en tant sudoqu'utilisateur, vous serez invité à entrer un mot de passe et échouerez.

Les références

Programster
la source
6
Notez que donner aux utilisateurs la permission d'exécuter apt-get, ou même simplement apt-get upgrade, leur donne un accès root complet ! De nombreux scripts de mise à niveau permettent à l'utilisateur interactif d'exécuter un shell, par exemple lorsqu'un fichier de configuration a changé. Pour être sûr, limitez-vous apt-getà certaines commandes et forcez-le à ne pas être interactif. Voir Est-il sûr que mon utilisateur ssh reçoive un sudo sans mot de passe pour apt-get updateet apt-get upgrade?
Gilles 'SO- arrête d'être méchant'
Dans mon cas, je devais mettre la ligne après%sudo ...
Aleksey
Existe-t-il un moyen de le faire uniquement à partir de la ligne de commande?
Kamil Dziedzic