Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 04-01-2019 04:05:06

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Changer le PATH de tous les utilisateurs présents et futurs

Yop,
dans l'idée de faire une image debian, je voulais séparer mes exécutables de ceux du système (pour tout supprimer facilement, par exemple). Bêtement en ajoutant un export PATH=$PATH:montruc/bin

D'après mes recherches, tout devrait se régler dans "/etc/login.defs" avec les variables ENV_SUPATH (pour root, et ça marche en effet) et ENV_PATH pour les utilisateurs (mais là ça marche pas ; rien n'est modifié, même en créant un nouveau utilisateur).
Pareillement j'ai tenté /etc/profile et... Pareil (je reboot à chaque fois). Le "echo $PATH" me retourne pas ce que j'ai changé.

Donc je pige pas. J'ai lu un type qui disait "c'est systemd qui fait des choses peu orthodoxe", je veux bien le croire mais... Une idée de comment ça peut bien fonctionner ?

EDIT : j'ai trouvé un rapport d'erreur qui décrit exactement mon problème https://bugs.debian.org/cgi-bin/bugrepo … bug=330803
Haha. 2005.

The reason is that /etc/login.defs:*PATH is considered
obsoleted and ignored by new login package -- PAM
methods for setting this should be used instead.

Dernière modification par otyugh (04-01-2019 04:15:47)


Agenda du libre : venez aider et vous faire aider !
Arzano Informatique : mon entreprise gagne-pain.
Ma contribution au datalove

Hors ligne

#2 04-01-2019 08:58:09

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Changer le PATH de tous les utilisateurs présents et futurs

otyugh a écrit :

Yop,
dans l'idée de faire une image debian, je voulais séparer mes exécutables de ceux du système (pour tout supprimer facilement, par exemple). Bêtement en ajoutant un export PATH=$PATH:montruc/bin

D'après mes recherches, tout devrait se régler dans "/etc/login.defs" avec les variables ENV_SUPATH (pour root, et ça marche en effet) et ENV_PATH pour les utilisateurs (mais là ça marche pas ; rien n'est modifié, même en créant un nouveau utilisateur).
Pareillement j'ai tenté /etc/profile et... Pareil (je reboot à chaque fois). Le "echo $PATH" me retourne pas ce que j'ai changé.


Selon le wiki Debian /etc/login.defs c'est utilisé pour les logins avec su (donc implicitement je suppose que pas pour login graphique ou invite des commandes, mais je ne suis pas sûr)

Using su
The su command is used to become another user during a login session. It is commonly used to get root permissions temporarily from normal session. su command resets your PATH environment value to one defined in  /etc/login.defs by ENV_PATH and ENV_SUPATH variables. Please note that using Gnome helper gksu from Gnome panel by default uses su internally (i.e. you will "lose" your PATH if you do not configure it in login.defs)


Quand même , c'est qui marche bien c'est la procédure décrit plus haut dans la même page:

1) Ajouter par exemple à la fin du fichier ~/.profile

PATH="$PATH:montruc/bin"



2) Créer ou éditer ~./bash_profile et ajouter

 if [ -f ~/.profile ]; then
     . ~/.profile
 fi



3) Créer ou éditer ~/.xsessionrc et ajouter 

 if [ -f ~/.profile ]; then
     . ~/.profile
 fi



Rédémarrer session.

Pour ajouter de manière permanent à tous les utilisateurs, mètre les trois fichiers sous le répertoire /etc/.skel , qui va copier les fichiers dans leurs respectives $HOME au moment de la création des utilisateurs.

Salut

Dernière modification par empanada (04-01-2019 08:59:01)


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#3 04-01-2019 10:59:13

Freemaster
Membre
Lieu : Nord
Distrib. : Debian amd64
Inscription : 31-07-2018
Site Web

Re : Changer le PATH de tous les utilisateurs présents et futurs

empanada a écrit :

Pour ajouter de manière permanent à tous les utilisateurs, mètre les trois fichiers sous le répertoire /etc/.skel , qui va copier les fichiers dans leurs respectives $HOME au moment de la création des utilisateurs.


sauf que chaque utilisateur pourra modifier ses fichiers après coup...
et normalement c'est bien le fichier /etc/profile qui est commun à tous... étonnant que cela ne marche pas !?
en tout cas moi pour oracle database, je me sers de ce fichier, et ça marche bien

Hors ligne

#4 04-01-2019 11:02:24

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : Changer le PATH de tous les utilisateurs présents et futurs

Alors oui, ça marche, mais c'est pas vraiment la réponse à ma question. yikes
Disons que je voulais éviter de surcharger en fichiers de config placé automatiquement dans le /home de l'utilisateur autant que possible et que je cherchais une solution dans un fichier pas placé chez lui. tongue

Là on spécifie manuellement pour chaque utilisateur dans un fichier de config généré à chaque fois ce que je voulais centraliser dans un fichier de configuration unique...

Mais bon, c'est vrai que c'est ptéte de l'enculage de mouche de ma part.

/etc/profile[...] étonnant que cela ne marche pas !?


+1
J'ai d'ailleurs testé ensuite de faire dans ma session un

source /etc/profile

, et ça me change bien mon PATH comme je l'aurai voulu. Donc ça voudrait dire que /etc/profile n'est pas "honoré". Si quelqu'un veut bien tester chez-lui pour confirmer ? ^^'
->Modifier le PATH de /etc/profile (genre ajouter un endroit qui n'existe pas)
->Redémarrer, voir si le "echo $PATH" en tant qu'utilisateur a changé ou pas - si c'est comme moi, rien ne change.

Dernière modification par otyugh (04-01-2019 11:08:51)


Agenda du libre : venez aider et vous faire aider !
Arzano Informatique : mon entreprise gagne-pain.
Ma contribution au datalove

Hors ligne

#5 04-01-2019 11:20:51

Freemaster
Membre
Lieu : Nord
Distrib. : Debian amd64
Inscription : 31-07-2018
Site Web

Re : Changer le PATH de tous les utilisateurs présents et futurs

testé à l'instant

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/local/games:/usr/games:/home/jojo"
fi
export PATH



sous mon user

echo $PATH


/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/jojo

Hors ligne

#6 04-01-2019 11:30:33

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : Changer le PATH de tous les utilisateurs présents et futurs

Mhmmmmmmm.
Bon beh je vais réessayer. C'est étrange quand même, normalement je pars d'une debian stretch toute proprette, ça devrait pas me coincer sur des fichiers de config aussi classiques. é_è

EDIT : après relecture de mon code... Haha. Je modifiait le fichier de config par un sed et je l'appliquait à au mauvais fichier é_è... Bon. Ben. Mystère résolu. Faute d'inattention.
Si c'est vraiment ça, ça enfonce d'autant plus l'idée en informatique de "vaut mieux avoir la tête reposée que de s'acharner comme un guignol le soir"

Je ferme le sujet dès que j'aurais confirmé à coup sûr, mais à priori c'est ça.

EDIT2 : hé ben... En fait modifier /etc/profile modifie bien les variables dans un TTY mais pas dans la session X. Fu.

EDIT3 : mais c'est logique comme comportement.

/etc/profile is invoked only for login shells because that is its specific purpose.



Du coup, c'est pas ce que je veux é_è

Dernière modification par otyugh (04-01-2019 12:19:19)


Agenda du libre : venez aider et vous faire aider !
Arzano Informatique : mon entreprise gagne-pain.
Ma contribution au datalove

Hors ligne

#7 04-01-2019 12:56:55

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : Changer le PATH de tous les utilisateurs présents et futurs

Hééé, après plein de tests infructueux, j'ai pas la réponse mais :
*/etc/login.defs (très analogue à /etc/profile) : fonctionne exactement comme voulu (plus globale que /etc/profile, jusqu'à l'environnement X). Mais apparemment, pour une raison que j'ignore, lightdm utilise pas "login" pour se connecter et se débrouille sans /etc/login.defs. Du moins c'est mon explication du moment.

Et j'ai aucune idée d'où il sort ses valeurs par défaut, ma session lightdm. Ça me semble hardcodé, parce que je vois rien dans /etc qui contient le PATH par défaut affiché.

Je sens que je vais juste changer le truc par le /etc/environement, mais je trouvais ça moche. é_è

Dernière modification par otyugh (04-01-2019 13:00:31)


Agenda du libre : venez aider et vous faire aider !
Arzano Informatique : mon entreprise gagne-pain.
Ma contribution au datalove

Hors ligne

#8 04-01-2019 13:19:29

MicP
Membre
Inscription : 29-02-2016

Re : Changer le PATH de tous les utilisateurs présents et futurs

Bonjour

~/.profile a écrit :

 ~/.profile: executed by the command interpreter for login shells.

 

Étant donné que dans une fenêtre de terminal (depuis l'Environnement de Bureau)
on est déjà identifié vu qu'on a déjà ouvert une session graphique avec son nom de login et son mot de passe,
la fenêtre de terminal ne lance pas un "login shell" => Le fichier "profile" n'est donc pas pris en compte.

Par contre, dans une fenêtre de terminal en mode texte (accessible depuis l'environnement graphique par exemple par Ctrl+Alt+F2)
un login et son mot de passe est demandé avant de lancer le shell => c'est bien un "login shell" => le fichier "profile" est pris en compte.

=======
Voir aussi :

man login

Dernière modification par MicP (04-01-2019 13:34:16)

Hors ligne

#9 04-01-2019 22:38:54

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Changer le PATH de tous les utilisateurs présents et futurs

MicP a écrit :

Bonjour

~/.profile a écrit :

 ~/.profile: executed by the command interpreter for login shells.

 

Étant donné que dans une fenêtre de terminal (depuis l'Environnement de Bureau)
on est déjà identifié vu qu'on a déjà ouvert une session graphique avec son nom de login et son mot de passe,
la fenêtre de terminal ne lance pas un "login shell" => Le fichier "profile" n'est donc pas pris en compte.

Par contre, dans une fenêtre de terminal en mode texte (accessible depuis l'environnement graphique par exemple par Ctrl+Alt+F2)
un login et son mot de passe est demandé avant de lancer le shell => c'est bien un "login shell" => le fichier "profile" est pris en compte.

=======
Voir aussi :

man login



Pour étendre vers la session graphique, il suffit de l'invoquer sur $HOME/.xsessionrc :

empanada a écrit :

3) Créer ou éditer ~/.xsessionrc et ajouter

 if [ -f ~/.profile ]; then
     . ~/.profile
 fi


C'est essayé et ça marche bien ici hmm
Salut


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

#10 05-01-2019 11:07:43

MicP
Membre
Inscription : 29-02-2016

Re : Changer le PATH de tous les utilisateurs présents et futurs

Au cas où l'on finisse par oublier que le fichier ~/.profile est quand même lancé par le fichier ~/.xsessionrc

dans le fichier ~/.profile du ou des comptes utilisateurs concernés
il faudrait peut-être ajouter un commentaire de ce genre
à la suite des commentaires déjà existants :

# Toutefois, suite à la modification qui a été apportée au fichier ~/.xsessionrc
#  pour les fenêtres de terminal qui seront lancées dans l'interface graphique,
#  ce fichier ~/.profile sera pris en compte.
 



=======
Et si tu veux qu'à chaque création d'un nouveau compte utilisateur
le fichier ~/.xsessionrc soit automatiquement créé pour ce nouveau compte
tu peux en créer un modèle dans le répertoire  /etc/skel/

Dernière modification par MicP (05-01-2019 19:11:34)

Hors ligne

#11 05-01-2019 21:33:30

empanada
Membre
Distrib. : Debian 9 (Stretch)
Noyau : 4.9.0-7-amd64
(G)UI : LXDE
Inscription : 19-09-2018

Re : Changer le PATH de tous les utilisateurs présents et futurs

otyugh a écrit :

Alors oui, ça marche, mais c'est pas vraiment la réponse à ma question. yikes
Disons que je voulais éviter de surcharger en fichiers de config placé automatiquement dans le /home de l'utilisateur autant que possible et que je cherchais une solution dans un fichier pas placé chez lui. tongue
Là on spécifie manuellement pour chaque utilisateur dans un fichier de config généré à chaque fois ce que je voulais centraliser dans un fichier de configuration unique...


Moi par contre je préfère les configurations par utilisateur par différents motifs (par exemple essayer de changer le moindre nombre des fichiers de config qui sont dans les paquets , puisque quand les développeurs y placent une nouvelle version, on doit choisir entre perdre les configurations ou bien on risque des problèmes inconnus si on conserve l'ancien fichier).
Mais pour des goûts des couleurs roll .
Alors, pour ton préférence d'importer le fichier /etc/profile de manière globale dans les débuts de session et aussi dans les sessions graphiques, tu peux utiliser le répertoire /etc/xdg/autostart. Tu peut placer un *.desktop qui dans la ligne exec appelle un script pour importer /etc/profile. Tous les *.desktops inclus sous ce répertoire sont lis dans les débuts de session graphique des tous les utilisateurs. C'est le comportement par défaut, mais les utilisateurs peuvent annuler explicitement (sous LXDE au moins avec lxsession-default-apps)   
Salut


"blues are the roots and the other musics are the fruits" . Willie Dixon

Hors ligne

Pied de page des forums