Page 1 sur 1

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

Publié : ven. 05 sept. 2008, 23:22
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.

Publié : ven. 05 sept. 2008, 23:45
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

Publié : sam. 06 sept. 2008, 09:10
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 ...)

Publié : sam. 06 sept. 2008, 10:12
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.

Publié : sam. 06 sept. 2008, 11:53
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

Publié : sam. 06 sept. 2008, 14:02
par Calimero
/etc/profile ?

Publié : sam. 06 sept. 2008, 17:05
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:

Publié : dim. 07 sept. 2008, 10:58
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

Publié : dim. 07 sept. 2008, 12:54
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

Publié : dim. 14 sept. 2008, 11:08
par eolim
Bonjour,

D'accord. Merci pour le renseignement.

eolim

Publié : dim. 14 sept. 2008, 16:05
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)