41 votes

Comment exécuter une application en utilisant sudo sans mot de passe ?

... mais ils sont toujours nécessaires pour les applications qui nécessitent des privilèges d'admin ?

Afin de permettre ce qui suit :

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #aucun mot de passe demandé
$                                   #fonctionne!

Pour information, j'ai vu cette configuration sur les instances e3 d'Amazon

Une idée ?

53voto

Mark Paskal Points 2842

Vous devez éditer le fichier sudoers. Sachez que le succès vous donne un système moins sécurisé et l'échec peut casser sudo. EDIT toujours le fichier sudoers avec sudo visudo, car visudo vérifie les erreurs et ne sauvegardera pas le fichier s'il en trouve.

Il est une mauvaise idée de donner la permission de tout exécuter en tant que root sans mot de passe, alors pour laisser passer seulement l'exécutable dont vous avez besoin (apache2ctl); ajoutez ce qui suit tout en bas du fichier:

VOTRENOM TOUS = NOPASSWD: /usr/bin/apache2ctl

Vous pouvez remplacer le chemin vers un exécutable par "TOUS" si vous le souhaitez, vous donnant un sudo sans mot de passe complet.

Remplacez VOTRENOM par votre nom d'utilisateur et appuyez sur Ctrl + X pour sauvegarder et quitter. S'il y a une erreur, il vous proposera de revenir en arrière, d'éditer, ou de sauvegarder de toute façon.

Assurez-vous d'utiliser le chemin complet vers un exécutable:
c'est-à-dire /usr/bin/apache2ctl au lieu de simplement apache2ctl. C'est important car sans spécifier explicitement le chemin, sudo autorisera n'importe quel programme nommé apachectl sur le chemin actuel de l'utilisateur à s'exécuter en tant que root.

25voto

Chris Points 731

La vraie réponse à cette question peut être compliquée car sudo est très puissant et peut être configuré pour faire des choses intéressantes. Cela est expliqué en détail dans la documentation.

La réponse courte est d'exécuter sudo visudo dans un terminal. Si c'est la première fois que vous exécutez visudo, il vous demandera quel éditeur vous préférez. nano est généralement considéré comme le plus facile à utiliser, mais choisissez l'éditeur avec lequel vous êtes le plus à l'aise/connaître. Vous devrez décider à qui vous souhaitez donner accès ; cela pourrait être ALL pour tout le monde (une très mauvaise idée), un utilisateur ou un groupe système. Les groupes sont préfixés par un signe %. Par exemple, si vous voulez donner à tous les membres du groupe steroid_users des privilèges de root sans avoir besoin d'un mot de passe pour toutes les commandes, vous ajouteriez :

%steroid_users ALL=(ALL) NOPASSWD: ALL

à la fin du fichier, puis quittez et enregistrez le fichier. Si tout se passe bien, et que vous êtes membre du groupe steroid_users, vous pourrez exécuter sudo *quelque-commande* sans avoir à saisir votre mot de passe.

Gardez à l'esprit que toute personne ayant accès à votre terminal lorsque vous êtes connecté -- ou si vous avez configuré ssh pour une authentification basée sur des clés, ou (pire encore) si vous avez activé des connexions de session sans mot de passe -- a un accès complet et illimité à l'ensemble de votre système. Si vous avez plusieurs utilisateurs sur votre système, ou si c'est un serveur de fichiers, tous les fichiers des utilisateurs pourraient être en danger car root peut faire n'importe quoi!

De plus, si vous faites une erreur, visudo affichera un message d'erreur et ne sauvegardera pas les modifications apportées au fichier. Cela aidera à éviter de casser complètement sudo. Vous devriez vraiment lire la documentation. Sudo est conçu pour donner aux utilisateurs juste assez d'accès pour faire leur travail sans avoir besoin d'exposer l'ensemble de votre système. Il peut être avantageux de ne donner un accès sans mot de passe que pour certaines commandes.

J'espère que cela vous aidera.

5voto

korjjj Points 466

Vous devrez modifier le fichier '/etc/sudoers' (il existe une commande 'visudo' à cet effet.) pour ajouter NOPASSWD avant la liste des commandes autorisées pour votre utilisateur ou groupe. Si votre utilisateur est dans le groupe 'admin' - vous avez besoin de ce qui suit :

%admin ALL=(ALL) NOPASSWD: ALL

Vérifiez https://help.ubuntu.com/community/Sudoers, au fait.

3voto

Bob Points 940

Vous POURRIEZ ajouter le drapeau nopasswd à la liste des utilisateurs mais cela n'élimine pas toutes les questions demandant des mots de passe. Seule la première sera demandée.

  1. Modifier sudoers : sudo visudo (Vous DEVEZ utiliser sudo. C'est un fichier d'administration.)
  2. Ajoutez votre utilisateur avec le drapeau nopasswd après la ligne Admin (à la fin). Par exemple :
    cyrex ALL = NOPASSWD: ALL ou cyrex ALL = (TOUS) NOPASSWD: ALL

2voto

Brayden Points 15
sudo visudo
% ALL = NOPASSWD: apache2ctl

ou

sudo visudo
% ALL = NOPASSWD: /etc/init.d/apache2

Je pense que cela fera l'affaire.

Mais faites attention en supprimant les mots de passe pour sudo.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X