web-dev-qa-db-fra.com

Comment donner à nopasswd accès à plusieurs commandes via sudoers?

Voici ce que je sais:

Je dois ajouter la ligne ci-dessous dans le fichier sudoers pour accorder des droits à l'utilisateur pour une tâche particulière.

user_name ALL=NOPASSWD: /usr/bin/apt-get install

Dans ce cas, je souhaite donner à cet utilisateur accès au redémarrage de 2 services (c'est-à-dire Apache et MySQL) avec tous les droits d'installation.

En utilisant la ligne ci-dessus, je lui ai donné tous les droits d'installation. Dois-je maintenant ajouter la même ligne deux fois de plus pour donner les droits aux services? Ou puis-je simplement ajouter ces commandes dans la même ligne, séparées par une virgule ou quelque chose?

43
Hrish

J'ai résolu le problème en créant un nouveau groupe doté de droits d'administration limités ... le nom de ce groupe est LimitedAdmins après que j'ai mis à jour le fichier sudoers comme ci-dessous.

La ligne que j'ai ajoutée est la suivante:

%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/Apache2 restart

Ceci est le fichier complet /etc/sudoers:

# This file MUST be edited with the 'visudo' command as root.    
#   
# Please consider adding local content in /etc/sudoers.d/ instead of directly modifying   his file.   
#   
# See the man page for details on how to write a sudoers file.  
# 
Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group Sudo to execute any command
%Sudo   ALL=(ALL:ALL) ALL  

#includedir /etc/sudoers.d
%domain_name\\administrators ALL=(ALL) ALL
%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/Apache2 restart

Cela fonctionne parfaitement au cas où votre système est un domaine ou non.

46
Hrish

Vous avez besoin d'une virgule.

Cmnd_Alias ​​PRINTING =/usr/sbin/lpc,/usr/bin/lprm
...
user3 ALL = PRINTING

Source

10
Karthik T

Ce que j'ai fini par faire était (semblable à ce que vous recherchez):

## PRTG monitoring
Cmnd_Alias PRTG = /bin/cat /proc/loadavg, /bin/df, /var/prtg/scripts/check_proc.sh
prtg ALL = NOPASSWD: PRTG

À l'intérieur: /etc/sudoers.d/666-prtg

(666, parce que ... bien ... prtg IS un outil de surveillance basé sur Windows que vous connaissez)

2
Mark Maas