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

38

... mais reste nécessaire pour les applications qui nécessitent des privilèges d’administrateur?

Pour autoriser 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             #no password asked
$                                   #works!

Pour référence, j'ai vu cette configuration sur les instances e3 d’Amazon

Une idée?

    
posée tutuca 02.05.2011 - 17:42
la source

6 réponses

49

Vous devez éditer le fichier sudoers. Sachez que le succès vous donne un système moins sécurisé et que les pannes peuvent endommager sudo. Editez TOUJOURS le fichier sudoers avec sudo visudo , car visudo vérifie les erreurs et ne sauvegardera pas le fichier s'il en trouve.

C’est une mauvaise idée de donner à tout le monde la permission d’exécuter en tant que root sans mot de passe, donc il suffit de laisser passer l’exécutable dont vous avez besoin (apache2ctl); ajoutez ce qui suit au bas du fichier:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

Vous pouvez remplacer le chemin d'accès à un exécutable par "ALL" si vous le souhaitez, en vous donnant un sudo sans mot de passe complet.

Remplacez YOURNAME par votre nom d'utilisateur et appuyez sur Ctrl + X pour enregistrer et quitter. Si une erreur survient, il vous proposera de revenir, de modifier ou de sauvegarder de toute façon.

Assurez-vous que vous utilisez le chemin complet d’un exécutable:
ie. /usr/bin/apache2ctl au lieu de apache2ctl . Ceci est important car, sans énoncer explicitement le chemin, sudo autorisera tout programme nommé apachectl sur le chemin actuel de l'utilisateur à s'exécuter en tant que root.

    
réponse donnée Mark Paskal 02.05.2011 - 18:10
la source
24

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. Ceci est expliqué en détail dans la documentation .

La réponse courte est exécutée 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 / familier. Vous devrez décider à qui vous voulez donner accès; Il peut s'agir de ALL pour tout le monde ( très mauvaise idée) , d'un utilisateur ou d'un groupe de systèmes. Les groupes sont précédés d'un signe%. Par exemple, si vous voulez donner à tous les membres du groupe des privilèges steroid_users root sans avoir besoin d'un mot de passe pour toutes les commandes, vous devez ajouter:

%steroid_users ALL=(ALL) NOPASSWD: ALL

à la fin du fichier, quittez et enregistrez le fichier. Si tout se passe bien et que vous êtes membre du groupe steroid_users, vous pourrez émettre sudo *some-command* sans avoir à entrer votre mot de passe.

N'oubliez pas que toute personne ayant accès à votre terminal lorsque vous êtes connecté - ou si vous avez configuré ssh pour une authentification par clé ou (et même pire) a activé la session sans mot de passe. logins - accès complet et sans entraves à votre système entier . Si vous avez plusieurs utilisateurs sur votre système, ou s'il s'agit d'un serveur de fichiers, tous les fichiers des utilisateurs peuvent être en danger car ils peuvent faire n'importe quoi!

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

J'espère que cela aide.

    
réponse donnée Chris 12.05.2012 - 08:03
la source
5

Vous devrez éditer le fichier '/ etc / sudoers' (il existe une commande 'visudo' pour cela) pour ajouter NOPASSWD avant la liste des commandes autorisées pour votre utilisateur ou groupe. Si votre utilisateur est dans le groupe "admin" - Vous devez suivre:

%admin ALL=(ALL) NOPASSWD: ALL

Vérifiez lien , btw.

    
réponse donnée korjjj 12.05.2012 - 07:18
la source
3

Vous pourriez ajouter l’indicateur nopasswd à la liste des utilisateurs mais cela n’élimine pas tous les mots de passe posés. Seul le premier sera demandé.

  1. Modifier les sudoers: sudo visudo (vous devez utiliser sudo. Ceci est un fichier admin.)
  2. Ajoutez votre utilisateur avec l'indicateur nopasswd après la ligne d'administration (à la fin). Par exemple:
    cyrex ALL = NOPASSWD: ALL ou cyrex ALL = (ALL) NOPASSWD: ALL
réponse donnée Luis Alvarado 02.05.2011 - 17:52
la source
2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

ou

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

Je suppose que cela le ferait.

Faites attention en supprimant les mots de passe pour sudo.

    
réponse donnée Alex 02.05.2011 - 17:59
la source
0

Maintenant, pour une réponse simple! Aucune façon possible de foirer votre installation.

Entrez simplement votre mot de passe à quelques reprises et vous n’aurez plus jamais à le saisir! Cela vous permettra d'ajouter un compte d'administrateur local au groupe "root" qui sera ensuite dés-commenté à partir d'un modèle qui permettra à l'ensemble du groupe de disposer des privilèges de super-utilisateur "root". Vous pouvez lire ma solution / problème de sécurité pour cette procédure dans la dernière partie de cet article.

% username & amp; est la variable globale de votre nom d'utilisateur (remplacez-la par le nom d'utilisateur souhaité)

Etape 1: Ouvrez une fenêtre de terminal, puis tapez " sudo usermod -a -G root %username% "

Etape 2: copiez / collez ceci ...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su'

Etape 2 OU tapez

sudo nano /etc/pam.d/su'

Allez à la ligne 19 et supprimez le "#" avant # auth sufficient pam_wheel.so trust (peut être un numéro de ligne différent pour certains)

* La première commande ajoute votre% username% au groupe "root"

Les deuxièmes / troisièmes commandes permettent à tous les membres du groupe "root" d’être un superutilisateur sans mot de passe, par opposition à l’autorisation "root" uniquement pour les authentifications.

Note de fin:

Ne vous trompez pas avec /etc/sudoers ... Il y a beaucoup de vérifications / équilibres que l'authentification 'su' doit subir. L'authentification superutilisateur utilise la même procédure pam.d que toutes les autres authentifications de connexion. "/etc/security/access.conf" a la disposition pour le contrôle d'accès via la communication tcp / ip (192.168.0.1) et les services telnet (tty1 & amp; tty2 & tty3 ... etc.). protocole. Si la sécurité est votre préoccupation, alors votre préoccupation devrait être dirigée contre les menaces à distance / par code par rapport à quelqu'un qui touche réellement votre ordinateur lorsque vous quittez la pièce !!!

De la nourriture pour la paranoïa (ne tapez pas celle-ci dans la critique):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ Cela bloque l'accès à la console pour quiconque n'est pas membre du système ou de la racine. Parfois, les programmes installent des noms d'utilisateurs / groupes exploités!

    
réponse donnée Nathaniel F. Malm 13.04.2014 - 22:22
la source

Lire d'autres questions sur les étiquettes