web-dev-qa-db-fra.com

PATH n'est pas affecté par .pam_environment

Sous Ubuntu 13.04, j'essaie d'ajouter des variables à PATH pour la session, ce qui est recommandé de le faire à l'intérieur de .pam_environment , mais rien ne semble fonctionner. Voici à quoi ça ressemble:

Java_HOME          DEFAULT=/usr/lib/jvm/Java-7-Oracle
IDEA_HOME          DEFAULT=/usr/local/idea-IU-129.451/bin
LIGHTTABLE_HOME    DEFAULT=/usr/local/LightTable
CLOUDIFY_HOME      DEFAULT=/home/eliranm/builds/gigaspaces-cloudify
PATH               DEFAULT=${PATH}    OVERRIDE=${PATH}:${Java_HOME}:${IDEA_HOME}:${LIGHTTABLE_HOME}:${CLOUDIFY_HOME}

Il semble que toutes les variables sont définies à l'exception de PATH ou qu'elle est remplacée d'une manière ou d'une autre. J'ai essayé d'ajouter ou d'ajouter la variable ${PATH}, d'utiliser DEFAULT seulement, OVERRIDE uniquement, j'ai essayé de définir un chemin codé en dur comme valeur, sans résultat.

Je suis les recommandations de la communauté d'aide Ubuntu et je veux éviter de concaténer des chemins codés en dur vers le PATH à l'intérieur de /etc/environment car ce n'est pas la bonne portée, de plus, il sera difficile à maintenir. sans variables.

D'autres peuvent être concernés par ce problème, comme indiqué ici , mais personne n'a fourni de solution à ce jour.

Comment faire ce travail?

3
Eliran Malka

Je pense que l'utilisation de la variable $PATH à l'intérieur de la portée de /etc/environment ou ~/.pam_environment ne soit pas résolue, mais assignée telle quelle.

En fait, je vois utiliser $PATH ou n'importe quelle variable à l'intérieur de ~/.pam_environment étant découragé dans la plupart des posts que je lis comme ici: Pourquoi ma variable d'environnement n'est-elle pas définie .

Donc, je ne sais pas vraiment pourquoi ici ( variables d'environnement de session ) ils disent d'utiliser $PATH en elle.

Je sais que Debian a supprimé l'analyse syntaxique du ~/.pam_environment local car il s'agit d'un risque de sécurité élevé.

Quoi qu'il en soit, pour ma compréhension, les deux fichiers /etc/environment et ~/.pam_environment utilisent une syntaxe plus simple (paires simples KEY=VAL pour chaque ligne), puis /etc/security/pam_env.conf (VARIABLE [DEFAULT=[value]] [OVERRIDE=[value]]). Donc, peut-être aucune référence à la variable ne peut être faite à l'intérieur de celle-ci.

3
MaKr0

Je me suis également heurté à ce problème parce que j'essayais de le faire comme le dit la documentation (j'utilise traditionnellement les systèmes Redhat).

Je pense que l’utilisation de $ {PATH} ne fonctionne que si votre chemin a été défini à l’origine dans le fichier /etc/security/pam_env.conf. Il me semble que le chemin d’origine est défini dans /etc/login.defs, puis qu’il n’est pas disponible.

Je suis revenu à la définition des valeurs dans ~/.profile, j'ai passé trop de temps à déboguer cette chose apparemment simple. Je me demande ce que font les autres utilisateurs Ubuntu. Nous ne pouvons pas être les premiers à vouloir ajouter la variable de chemin. Je suppose qu'ils ont fait la même chose et ont ignoré ~/.pam_environment.

2
Mark E. Scott Jr.