Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/09/2011, à 21:18

Arcans

[Résolu] sudo et $PATH root

Bonsoir,

Depuis quelque temps (peut-être en raison d’une mise à jour), sudo me pose quelque problème, je l’ai avant tout repéré lorsque j’ai tenté une mise à jour :

dpkg : avertissement : « ldconfig » introuvable dans la variable PATH ou non exécutable
dpkg : avertissement : « start-stop-daemon » introuvable dans la variable PATH ou non exécutable
dpkg: error: 2 expected programs not found in PATH or not executable.
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)

Bon, je n’avais pas compris sur le coup, puis c’est quand j’ai remarqué que l’autocomplétion en fonctionnait plus et qu’il ne trouvait pas les programmes quand j’entrais moi-même le nom. J’ai relu ça et ai compris. Après investigation, le sudoers était bien complété comme il faut, et les $PATH me semble pourtant être indiqués correctement dans /etc/profile :

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

export PATH

umask 022

Après de nouvelles investigations, et si j’ai bien compris le fonctionnement de sudo —ça, je n’oserais pas en être certain—, il semblerait que le problème vienne plutôt du fait que mon user ne soit plus dans groupe root. J’ai essayé d’y remédier tant par adduser et usermod -aG, mais selon le résultat de groups, mon user n’est pas dans le groupe root, et sudo ne fonctionne toujours pas.

Là, je coince en solution. J’ai bien pensé compléter les $PATH de l’user, mais je me suis dit que c’était carrément crade comme solution. Donc j’en viens à demander un coup de main, car je suis un peu au bout de mes ressources personnelles, et j’en arrive au point où je crains de faire une grosse bêtise.

Y aurait-il donc un moyen de récupérer un sudo fonctionnel ?

En vous remerciant de votre attention,
Arcanus

NB : Je suis sous Sid. A priori, je ne pense pas que ça change grand chose, et vu que je suis plutôt un habitué de forum, c’est ici que je demande dans un premier temps. Si le problème s’avère spécifique à Debian, j’irai demander là-bas, si je retrouve mes login. ^^'

Dernière modification par Arcans (Le 04/09/2011, à 23:16)


« Mais je ne suis pas spécialement mécontent de ne pas être cela dit. »
     — Arcans
« Axiome de base de la théorie des ensembles : s'il existe dans un ensemble X un élément x ayant des propriétés potentiellement casse-couille, c'est de la faute d'Arcans. »
    — Le Rouge

Hors ligne

#2 Le 04/09/2011, à 21:26

FRUiT

Re : [Résolu] sudo et $PATH root

Déjà là il y a un grave problème conceptuel :

if [ "`id -u`" -eq 0 ]; then

On ne compare pas des chaines de caractères avec des entiers quand même !!

La bonne syntaxe est :

if [ `id -u` -eq 0 ]; then

Ou

if [ $(id -u) -eq 0 ]; then

A la rigueur si tu veux comparer des chaines de caractères (non conseillé) :

if [ "$(id -u)" = "0" ]; then

D'autre part le PATH est plus généralement défini dans le fichier /etc/environment et non dans le profil du shell...

Dernière modification par FRUiT (Le 05/09/2011, à 01:03)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#3 Le 04/09/2011, à 21:30

Arcans

Re : [Résolu] sudo et $PATH root

C’est un fichier apparemment créé automatiquement, donc je n’ai rien à voir quant à cette erreur. ^^'
Ça, c’est dit.

Et je viens de vérifier, le /etc/environment est vide chez moi… Ceci expliquerait cela ?


« Mais je ne suis pas spécialement mécontent de ne pas être cela dit. »
     — Arcans
« Axiome de base de la théorie des ensembles : s'il existe dans un ensemble X un élément x ayant des propriétés potentiellement casse-couille, c'est de la faute d'Arcans. »
    — Le Rouge

Hors ligne

#4 Le 04/09/2011, à 21:34

FRUiT

Re : [Résolu] sudo et $PATH root

Ce serait étonnant que l'équipe debian fasse des erreurs aussi grossières mais bon si tu le dis...

Mon fichier /etc/environment :

PATH="/sh:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Après moi je suis sous ubuntu, peut-être que debian n'utilise pas ce fichier mais bon ça ne coûte rien d'essayer... (il faut redémarrer et commenter le if entier dans /etc/profile sinon ça ne sert à rien).

Dernière modification par FRUiT (Le 04/09/2011, à 21:44)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#5 Le 04/09/2011, à 21:45

Arcans

Re : [Résolu] sudo et $PATH root

Ben, je suis sûr de moi quand je dis que je n’ai jamais été trifouillé dans ce fichier, et surtout pas au point d’aller jouer dans ce genre de détail que je connais/comprends tout simplement pas. neutral

Est-ce qu’il y a en fait le même truc dans /etc/environment que dans /etc/profile ?
(Comme ça, je trouverais étonnant de devoir juste mettre PATH=… sans rien d’autre, c’est pour ça que je demande.)
Avant d’effectuer quelque chose, je vais quand même chercher un rien.


« Mais je ne suis pas spécialement mécontent de ne pas être cela dit. »
     — Arcans
« Axiome de base de la théorie des ensembles : s'il existe dans un ensemble X un élément x ayant des propriétés potentiellement casse-couille, c'est de la faute d'Arcans. »
    — Le Rouge

Hors ligne

#6 Le 04/09/2011, à 22:17

grim7reaper

Re : [Résolu] sudo et $PATH root

FRUiT a écrit :

Ce serait étonnant que l'équipe debian fasse des erreurs aussi grossières mais bon si tu le dis...

Et pour cause, ce n’est pas une erreur !

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

a bien le comportement attendu…

Après ce ça soit moche ou pas la bonne façon de faire je veux bien (le bash c’est pas mon trip donc je ne saurais juger si c’est une bonne pratique ou pas), mais toujours est-il que ça fonctionne.



Sinon pour le problème originel, je n’ai pas trop d’idée hmm

Arcans a écrit :

il semblerait que le problème vienne plutôt du fait que mon user ne soit plus dans groupe root

Chez moi le groupe des admins ce n’est pas root mais wheel.
Cela dit, il me semble que Debian a une politique particulière vis‑à‑vis de wheel donc je ne pense pas que ça soit d’une grande aide dans le cas présent…

Dernière modification par grim7reaper (Le 04/09/2011, à 22:19)

Hors ligne

#7 Le 04/09/2011, à 22:45

Arcans

Re : [Résolu] sudo et $PATH root

Je ne suis pas plus dans le groupe wheel que dans root note. ^^
Et en fait, après vérification, le groupe wheel n’existe carrément pas… neutral
Bon, en cherchant un peu plus sur le /etc/environment, j’ai trouvé deux-trois choses allant dans le sens de FRUIT, donc j’ai complété le fichier. Mais je pense que je ne redémarrerai pas avant demain matin, je dois changer mon clavier, j’en profiterai pour faire d’une pierre deux coup.


« Mais je ne suis pas spécialement mécontent de ne pas être cela dit. »
     — Arcans
« Axiome de base de la théorie des ensembles : s'il existe dans un ensemble X un élément x ayant des propriétés potentiellement casse-couille, c'est de la faute d'Arcans. »
    — Le Rouge

Hors ligne

#8 Le 04/09/2011, à 23:11

Veterini

Re : [Résolu] sudo et $PATH root

Bonsoir,

Je suis sous Debian aussi (testing pour ma part), et j'ai eu le même problème aujourd'hui, suite à une mise à jour durant laquelle j'ai refusé de remplacer le fichier /etc/sudoers par une version plus récente (j'y avais en effet apporté de petites modifications)

Après quelques recherches, j'ai trouvé la solution ici : http://cksum.org/blog/149-dpkg-warning- … executable


Si non confectus, non reficiat

Hors ligne

#9 Le 04/09/2011, à 23:16

Arcans

Re : [Résolu] sudo et $PATH root

Ça marche. \o/
Merci. smile


« Mais je ne suis pas spécialement mécontent de ne pas être cela dit. »
     — Arcans
« Axiome de base de la théorie des ensembles : s'il existe dans un ensemble X un élément x ayant des propriétés potentiellement casse-couille, c'est de la faute d'Arcans. »
    — Le Rouge

Hors ligne

#10 Le 05/09/2011, à 00:30

Pylades

Re : [Résolu] sudo et $PATH root

FRUiT a écrit :

Déjà là il y a un grave problème conceptuel :

if [ "`id -u`" -eq 0 ]; then

On ne compare pas des chaines de caractères avec des entiers quand même !!
[…]

Euh… si.

En fait, en bash, tout est chaîne de caractères. C’est justement pour cela que l’on a des opérateurs différents, = et -eq pour comparer des chaînes en tant que chaînes ou en temps que nombres. Donc 0 et "0" sont strictement équivalents. Et mieux vaut préférer les 'simple quotes' à l’abus de "double quotes".

En fait, ici, on effectue une substitution de processus pour utiliser la sortie d’une commande en temps qu’argument pour une ligne de shell. Le souci, c’est que généralement on veut obtenir cette sortie en un seul mot alors que si elle comporte des séparateurs de champ, elle sera divisée en plusieurs mot. C’est pour cela que l’on utilise les "double quotes" pour grouper cette sortie en un seul mot.
Bien évidemment, pour cette commande particulière (ne renvoyant que des chiffres), on voit mal elle pourrait afficher des séparateurs de champs (usuellement une espace), et ce d’autant plus que nous sommes dans un script qui assume un environnement « classique » ; mais cela reste toutefois une bonne habitude à avoir, et comme ici cela ne gène en rien le script, cette écriture est tout à fait correcte. wink


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#11 Le 05/09/2011, à 01:10

FRUiT

Re : [Résolu] sudo et $PATH root

Πυλάδης a écrit :

Euh… si.

Euh non...

Correcte dans le sens ou ça marche quand même, d'accord (heureusement que le shell est ultra permissif), mais c'est totalement illogique. Mais bon moi en programmation on m'a appris à  être rigoureux et en mathématiques on m'a appris à ne pas comparer des pommes et des poires... Toi tu as surement d'autres standards de rigueur grand bien t'en fasse.

Donc je me répète, si on veut comparer des chaines il fallait écrire :

FRUiT a écrit :

A la rigueur si tu veux comparer des chaines de caractères (non conseillé) :

if [ "$(id -u)" = "0" ]; then

Ca c'est logique.

Et on utilise pas préférentiellement des simples quotes au lieu de doubles c'est n'importe quoi. Chaque type de quotes a son utilisation particulière. Notamment il n'y a pas de développement dans de simples quotes...


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne