web-dev-qa-db-fra.com

Ubuntu Unity 16.10 'Sudo: aucun tty présent ni programme askpass spécifié'

J'ai créé un script pour définir/désactiver le paramètre de proxy lorsque je bascule entre travail et domicile. Le script fonctionne parfaitement et maintenant je veux le lancer automatiquement chaque fois que je me connecte, alors je le mets dans mon fichier .profile (comme: source ~/bin/proxyscript.sh).

Cela fonctionne lorsque j'utilisais Ubuntu Gnome et que, lors de la connexion, je recevais un terminal qui me demandait le mot de passe Sudo. Depuis la version 16.10, j’ai installé une version propre d’Ubuntu Unity et le message d’erreur "Sudo: aucun tty présent et aucun programme askpass" n’a maintenant été indiqué lorsque je me connecte.

Dans le script, je fais quelque chose comme: service Sudo cntlm arrêter Sudo sed ..... /etc/cntlm.conf service Sudo. cntlm start

J'ai déjà regardé le fichier/etc/sudoers et ajouté ce qui suit sans obtenir un bon résultat: Défauts!/Usr/bin/sed! Requiretty Défauts!/Usr/sbin/service! Requiretty

racine ALL = (ALL: ALL) ALL jeroen ALL = NOPASSWD:/bin/sed,/usr/sbin/service

Je ne sais pas ce que je peux maintenant essayer de résoudre ce problème. Quelqu'un a une idée?

Merci.

1
JdKock

Vous ne devez pas utiliser Sudo dans un script. Vous pouvez utiliser policykit au lieu de Sudo dans votre script:

#!/bin/bash
pkexec env DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority service cntlm stop & sed whatever is missing here
pkexec env DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority service cntlm start

ou mieux encore. . . Il suffit de faire la commande sed en premier, puis de redémarrer le service pour que vous n'ayez besoin d'entrer qu'un mot de passe deux fois.

#!/bin/bash
pkexec env DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority sed 'some sed stuff' 
pkexec env DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority service cntlm restart

De plus, si vous rencontrez toujours des problèmes, je vous suggère d’exécuter le script à partir d ’" applications de démarrage "au lieu de votre fichier .profile. Vous pouvez rechercher "les applications de démarrage dans votre tableau de bord"

1
mchid

J'ai changé mon script et remplacé le Sudo par:

pkexec env DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority sed 'some sed stuff'

Cela a fonctionné, merci mchild!

Maintenant, je reçois un popup pour entrer mon mot de passe. Avec le message: Authentication is needed to run '/usr/bin/env' as the super user

Mais est-il également possible sans entrer un mot de passe?

0
JdKock