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

1

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 lors de la connexion, j'ai un terminal qui m'a demandé 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’est spécifié» s’affiche lorsque je me connecte.

Dans le script, je fais quelque chose comme: service sudo cntlm arrêter sudo sed ..... /etc/cntlm.conf service sudo. début cntlm

J'ai déjà regardé le fichier / etc / sudoers et ajouté ce qui suit sans obtenir un bon résultat: Défaut! / 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.

JdKock
la source
vous ne devriez pas utiliser sudo dans un script
mchid

Réponses:

1

Vous ne devriez pas utiliser sudodans un script. Vous pouvez utiliser policykit au lieu de sudodans 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 même, si vous rencontrez toujours des problèmes, je vous suggère d’exécuter le script à partir d’applications de démarrage plutôt que de votre .profilefichier. Vous pouvez rechercher "les applications de démarrage dans votre tableau de bord"

mchid
la source
Je vais remplacer Sudo par ce que vous dites. Mais dois-je également conserver mes modifications dans le fichier / etc / sudoers?
JdKock
@JdKock Non, je recommanderais de remettre le fichier sudoers à la normale. Ce n’est probablement pas une bonne sécurité d’avoir des choses comme sed prêtes à exécuter sans permission. Quant au popup, il s’agit d’un message normal.
Mchid
Oke j'ai changé le fichier sudoers à la normale et prends le popup tel quel. Merci.
JdKock
0

J'ai changé mon script et remplacé le sudopour:

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?

JdKock
la source