[profile.d] pb de chargement des variables d'environnement

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
eolim
newbie
Messages : 9
Inscription : dim. 03 août 2008, 15:20

[profile.d] pb de chargement des variables d'environnement

Message par eolim »

Bonjour,

Depuis quelques temps, j'ai un problème avec le chargement des variables d'environnement contenues dans les fichiers du répertoire /etc/profile.d/

Code : Tout sélectionner

 $ ls /etc/profile.d/
glest.sh   glib2.sh  ladspa.sh  mozilla-common.sh  qt3.sh    xorg.sh
glib2.csh  jre.sh    locale.sh  perlbin.sh         texmf.sh
En fonction du compte sous lequel je me connecte, ce n'est pas la même chose.

Ainsi, en utilisateur "normal", j'ai ceci :

Code : Tout sélectionner

 $ env
SHELL=/bin/bash
TERM=xterm
WINDOWID=27264158
USER=sylphe
SESSION_MANAGER=local/hobbes:/tmp/.ICE-unix/3815
PATH=./:/bin:/usr/bin:/usr/local/bin:/usr/bin
MAIL=/var/mail/sylphe
PWD=/home/sylphe
HOME=/home/sylphe
SHLVL=2
LOGNAME=sylphe
XDG_DATA_DIRS=/usr/local/share:/usr/share:/usr/share
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-mfGLJGHCIy,guid=cff42ff46e3d00aad0240a1948c19596
DISPLAY=:0.0
COLORTERM=Terminal
XAUTHORITY=/home/sylphe/.Xauthority
_=/usr/bin/env
Quand je passe en root,

Code : Tout sélectionner

 $ su -
Password:
 # env
MANPATH=/usr/man:/usr/share/man:/usr/X11R6/man
XDG_DATA_HOME=/root/.local/share
SHELL=/bin/bash
TERM=xterm
QT_XFT=true
QTDIR=/opt/qt
USER=root
COLUMNS=80
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins:/opt/mozilla/lib/plugins
XDG_CONFIG_DIRS=/etc/xdg
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin:/opt/glest/bin:/opt/java/jre/bin:/usr/bin/perlbin/site:/usr/bin/perlbin/vendor:/usr/bin/perlbin/core:/opt/qt/bin
JAVA=/opt/java/jre/bin/java
LC_COLLATE=C
INPUTRC=/etc/inputrc
PWD=/root
LIBXCB_ALLOW_SLOPPY_LOCK=true
JAVA_HOME=/opt/java/jre
LANG=en_US.utf8
PS1=[\u@\h \W]\$ 
LINES=24
PS2=> 
LESSCHARSET=latin1
SHLVL=1
HOME=/root
XDG_CONFIG_HOME=/root/.config
XDG_CACHE_HOME=/root/.cache
LESS=-R
LOGNAME=root
XDG_DATA_DIRS=/usr/share:/usr/local/share
CLASSPATH=:/opt/java/jre/lib
PKG_CONFIG_PATH=:/opt/qt/lib/pkgconfig
DISPLAY=:0.0
TEXMFHOME=/root/.texmf
LADSPA_PATH=/usr/lib/ladspa/
J2REDIR=/opt/java/jre
G_BROKEN_FILENAMES=1
XAUTHORITY=/home/sylphe/.Xauthority
_=/usr/bin/env
Un certain nombre de variables ne sont pas initialisées comme celles qui sont relatives à Mozilla ou Java. Ainsi, les plugins ne sont pas utilisables sous Firefox.

Merci d'avance,
eolim


PS : Je n'arrive pas non plus à modifier PATH en tant qu'utilisateur normal pour retirer ./ des chemins possibles.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

ca le fait aussi chez un autre utilisateur?

sinon, le ./, c'est toi qui l'a rajouté à un moment ou un autre? parce que c'est un enorme trou de sécurité sur une machine multi user
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Message par chipster »

tuxce a écrit :ca le fait aussi chez un autre utilisateur?

sinon, le ./, c'est toi qui l'a rajouté à un moment ou un autre? parce que c'est un enorme trou de sécurité sur une machine multi user
Pourquoi c'est un énorme trou de sécurité ? (désolé pour la question con mais ...)
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

le ./ au début permet d'executer la commande du répertoire courant avant celle du système, après, avec un script qui s'appellerait "ls" (ou autre commande usuelle) et un peu d'imagination, on peut facilement choper discretement le shell de l'utilisateur.
eolim
newbie
Messages : 9
Inscription : dim. 03 août 2008, 15:20

Message par eolim »

Bonjour,
tuxce a écrit :sinon, le ./, c'est toi qui l'a rajouté à un moment ou un autre? parce que c'est un enorme trou de sécurité sur une machine multi user
Non, ce n'est pas moi. Je ne l'aurais jamais ajouté pour les raisons de sécurité évoquées.

Ce qui m'ennuie, c'est que j'arrive pas à trouver le fichier de configuration dans lequel est initialisé la variable PATH en tant qu'utilisateur "normal".

eolim
Avatar de l’utilisateur
Calimero
Elfe
Messages : 692
Inscription : ven. 02 mai 2008, 18:16
Localisation : Nantes (44)

Message par Calimero »

/etc/profile ?
Mes trucs : LiveCD http://ctkarch.org/ ; Blog, guide Arch, etc… http://calimeroteknik.free.fr/
In a world without walls and fences, who needs windows and gates ?
Avatar de l’utilisateur
chipster
Maître du Kyudo
Messages : 2063
Inscription : ven. 11 août 2006, 22:25
Localisation : Saint-Étienne (42)
Contact :

Message par chipster »

tuxce a écrit :le ./ au début permet d'executer la commande du répertoire courant avant celle du système, après, avec un script qui s'appellerait "ls" (ou autre commande usuelle) et un peu d'imagination, on peut facilement choper discretement le shell de l'utilisateur.
Ok, merci pour l'info :wink:
eolim
newbie
Messages : 9
Inscription : dim. 03 août 2008, 15:20

Message par eolim »

Bonjour,
Calimero a écrit :/etc/profile ?
Je ne le vois pas dans ce fichier.

Code : Tout sélectionner

#
# /etc/profile
#

export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin"

export MANPATH="/usr/man:/usr/share/man:/usr/X11R6/man"
export LESSCHARSET="latin1"
export INPUTRC="/etc/inputrc"
export LESS="-R"

export LC_COLLATE="C"

export COLUMNS LINES

export PS1='[\u@\h \W]\$ '
export PS2='> '

umask 022

if [ "$TERM" = "xterm" -o "$TERM" = "xterm-color" -o "$TERM" = "rxvt" -o "$TERM" = "xterm-xfree86" ]; then
  PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
fi

# load profiles from /etc/profile.d
#  (to disable a profile, just remove execute permission on it)
if [ `ls -A1 /etc/profile.d/ | wc -l` -gt 0 ]; then
  for profile in /etc/profile.d/*.sh; do
    if [ -x $profile ]; then
      . $profile
    fi
  done
  unset profile
fi
# End of file
eolim
Avatar de l’utilisateur
Calimero
Elfe
Messages : 692
Inscription : ven. 02 mai 2008, 18:16
Localisation : Nantes (44)

Message par Calimero »

Bah comme j'avais vu ça, je croyais...

Code : Tout sélectionner

[calimero@webgine ~]$ cat /etc/profile
...
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
export PATH
...
J'imagine que je suis à côté de la plaque. :lol:

Mais il me semble bien vieux, ton /etc/profile !

Regarde spécialement les commentaires sur MANPATH :

Code : Tout sélectionner

[calimero@webgine ~]$ cat /etc/profile
#
# /etc/profile
#
# This file is intended to be used for ALL common
# Bourne-compatible shells. Shell specifics should be
# handled in /etc/profile.$SHELL where $SHELL is the name
# of the binary being run (discounting symlinks)
#
# Sections taken from SuSe's /etc/profile
# Note the explicit use of 'test' to cover all bases
#  and potentially incompatible shells

#Determine our shell without using $SHELL, which may lie
shell="sh"
if test -f /proc/mounts; then
   case $(/bin/ls -l /proc/$$/exe) in
        *bash) shell=bash ;;
        *dash) shell=dash ;;
        *ash)  shell=ash ;;
        *ksh)  shell=ksh ;;
        *zsh)  shell=zsh ;;
    esac
fi

# Load shell specific profile settings
test -f "/etc/profile.$shell" &&  . "/etc/profile.$shell"

#Set our umask
umask 022

# Set our default path
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
export PATH

# Some readline stuff that is fairly common
HISTSIZE=1000
HISTCONTROL="erasedups"

INPUTRC="/etc/inputrc"
LESS="-R"
LC_COLLATE="C"

export HISTSIZE HISTCONTROL INPUTRC LESS LC_COLLATE

export LESSCHARSET="utf-8"
export G_FILENAME_ENCODING="@locale,UTF-8,ISO-8859-15"
export LC_ALL="fr_FR.UTF-8"

# Load profiles from /etc/profile.d
if test -d /etc/profile.d/; then
    for profile in /etc/profile.d/*.sh; do
        test -x $profile && . $profile
    done
    unset profile
fi

# Termcap is outdated, old, and crusty, kill it.
unset TERMCAP

# Man is much better than us at figuring this out
unset MANPATH
Mes trucs : LiveCD http://ctkarch.org/ ; Blog, guide Arch, etc… http://calimeroteknik.free.fr/
In a world without walls and fences, who needs windows and gates ?
eolim
newbie
Messages : 9
Inscription : dim. 03 août 2008, 15:20

Message par eolim »

Bonjour,

D'accord. Merci pour le renseignement.

eolim
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

eolim a écrit : Ce qui m'ennuie, c'est que j'arrive pas à trouver le fichier de configuration dans lequel est initialisé la variable PATH en tant qu'utilisateur "normal".
/etc/profile, /etc/profile.d puis les fichiers de démarrage de ton shell (la section FILE du man de ton shell)
Répondre