web-dev-qa-db-fra.com

Comment exécuter une application avec Sudo sans mot de passe?

... mais toujours requis pour les applications nécessitant des privilèges d'administrateur?

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

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

Une idée?

40
tutuca

Vous devez éditer le fichier sudoers. Sachez que le succès vous donne un système moins sécurisé et qu'une défaillance peut casser Sudo. TOUJOURS éditer le fichier sudoers avec Sudo visudo, car visudo vérifie les erreurs et n'enregistre pas le fichier s'il en trouve.

Il est déconseillé de tout autoriser à s’exécuter en tant qu’utilisateur root sans mot de passe; laissez donc simplement le fichier 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 fichier exécutable par "ALL" si vous le souhaitez, ce qui vous donne la totalité de Sudo sans mot de passe.

Remplacez YOURNAME par votre nom d'utilisateur et appuyez sur Ctrl + X pour sauvegarder et quitter. Si une erreur survient, il vous proposera néanmoins de revenir en arrière, de modifier ou de sauvegarder.

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

51
Mark Paskal

La vraie réponse à cette question peut être compliquée car Sudo est très puissant et peut être configuré pour faire des choses sympas. Ceci est expliqué en détail dans le 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 sera demandé quel éditeur vous préférez. nano est généralement considéré comme le plus simple à 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 pourrait s'agir de ALL pour tout le monde (a très mauvaise idée) , un utilisateur ou un groupe de systèmes . Les groupes sont précédés du signe%. Par exemple, si vous souhaitez attribuer à tous les utilisateurs du groupe steroid_users les privilèges racine sans qu'un mot de passe soit nécessaire, 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 vous soucier d'avoir à entrer votre mot de passe.

N'oubliez pas que toute personne ayant accès à votre terminal pendant que vous êtes connecté - ou si vous avez la configuration SSH pour une authentification basée sur une clé, ou (encore pire) a activé le mot de passe connexions de session gratuites - accès complet et sans entrave à votre système complet . Si vous avez plusieurs utilisateurs sur votre système, ou s’il s’agit d’un serveur de fichiers, tous les fichiers de cet utilisateur pourraient être en danger, car la racine peut tout faire !

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 le documentation . Sudo est conçu pour donner aux utilisateurs juste assez d'accès pour faire leur travail sans avoir à exposer tout votre système. Il peut être avantageux de ne donner qu'un accès sans mot de passe pour certaines commandes.

J'espère que ça aide.

25
Chris

Vous devez modifier 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 votre groupe. Si votre utilisateur est dans le groupe 'admin' - Vous devez suivre les éléments suivants:

%admin ALL=(ALL) NOPASSWD: ALL

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

5
korjjj

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

  1. Éditez les sudoers: Sudo visudo (vous devez utiliser Sudo. C'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
3
Luis Alvarado
Sudo visudo
%<GROUP> ALL = NOPASSWD: Apache2ctl

ou

Sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/Apache2

Je suppose que cela le ferait.

Mais faites attention avec la suppression des mots de passe pour Sudo.

2
Alex

Maintenant, pour la réponse simple! Aucun moyen possible de tout gâcher ou de déconner votre installation.

Il suffit d'entrer votre mot de passe plusieurs fois et vous n'aurez plus jamais à le saisir! Cela vous permettra d’ajouter un compte d’administrateur local au groupe "racine", qui sera ensuite commenté à partir d’un modèle autorisant l’ensemble des privilèges de superutilisateur du groupe "racine". Vous pouvez lire mon problème/solution de sécurité pour cette procédure plus loin dans ce post.

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

Étape 1: Ouvrez une fenêtre de terminal et tapez "Sudo usermod -a -G root %username%"

Étape 2: Ensuite, copiez/collez ce ...

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

Étape 2 OR type

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ème/troisième commandes permettent à tous les membres du groupe "root" d'être superutilisateur sans mot de passe, par opposition à l'attribution des privilèges su à l'utilisateur "root" pour les authentifications.


Note de fin:

Ne jouez pas avec /etc/sudoers... Il y a beaucoup de vérifications/équilibres que l'authentification 'su' doit exécuter. L'authentification de 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 via les services telnet (tty1 & tty2 & tty3 ... etc). Ceci permet un filtrage plus précis par application via le protocole de transport. Si la sécurité est votre préoccupation, alors votre préoccupation devrait être dirigée contre les menaces à distance/de code plutôt que de toucher votre ordinateur lorsque vous quittez la pièce !!!

Nourriture pour paranoïaques (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

^ Ceci bloque l'accès à la console pour toute personne qui n'est pas membre du système ou de la racine. Parfois, les programmes installent des noms d'utilisateur/groupes qui sont exploités!

0
Nathaniel F. Malm