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 20/11/2010, à 18:54

teke

[résolu] pb d'umask en ssh avec screen

Bonjour,

Sur un serveur sans périphérique d'entrée sortie, sur lequel je ne me connecte qu'en ssh.

lorsque j'établis une connexion ssh j'ai bien le umask désiré (027). par contre si je travail dans un screen j'ai 0022. Ce qui ne me convient vraiment pas du tout !

Voici mes définitions :

$ grep umask /etc/profile /etc/bash* /etc/skel/.bash* /etc/skel/.profile ~/.bash* ~/.profile
/etc/profile:umask 027
/etc/bash_completion:       readlink rename rmdir stat symlink umask unlink utime caller \
/etc/skel/.profile:umask 027
/home/user/.bash_history:umask 
/home/user/.profile:umask 027
$ umask
0022

Je n'arrive pas à comprendre !!!

ps: j'ai supprimé de la sortie les lignes en commentaire.

Bon j'ai remarqué une chose... quand je me connecte directement dans une console ssh je n'ai aucune variable définie des fichiers mentionnés dans le grep ci-dessus (ce qui au passage me dérange aussi, je suis obligé de les sourcer à la main). Par contre dans le multiplexeur screen les variables et alias sont bien définie, mais le umask ne joue pas. comment est ce que je me retrouve avec cet umask là vu mes fichiers e configuration ????

Je viens de chercher tout l'après midi... sans résultat... et je n'ai pas réussi à trouver des réponses pertinentes sur le web.

D'avance un très grand merci pour toute aide !!!

exemple :

$ ssh -i ~/.ssh/admin_dsa user@serveur.net umask
0022

Mais :

$ ssh -i ~/.ssh/admin_dsa user@serveur.net
Linux nas 2.6.26-2-orion5x #1 Fri Sep 17 00:22:00 UTC 2010 armv5tel
#[snip blabla]
user@serveur:~$ umask
0027

Quelqu'un peut bien m'expliquer ???

Dernière modification par teke (Le 21/11/2010, à 10:16)

#2 Le 21/11/2010, à 02:07

chopinhauer

Re : [résolu] pb d'umask en ssh avec screen

Il y a trois sortes de shell : shell de login, interactive et non-interactive. La première lit ~/.profile, la deuxième lit ~/.bashrc et la troisième ne lit rien (version simplifiée, cf. le manuel de bash). Les shell lancées avec un - comme premier caractère sont de login, celles connectées à un terminal sont interactives, les autres sont non-interactives. Les commandes shopt et tty peuvent aussi t'aider.

Ainsi si tu te connecte par ssh, t'as une shell de login. Si tu utilises ssh pour lancer une commande elle est non-interactive (enfin ssh utilise de l'euristique pour décider si allouer un terminal ou pas). Enfin screen lance des shell interactives.

Normalement le fichier ~/.profile utilise la commande source ('.') pour inclure ~/.bashrc et le réglages non spécifiques à la connexion sont là-bas.

Dernière modification par chopinhauer (Le 21/11/2010, à 02:09)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 21/11/2010, à 10:15

teke

Re : [résolu] pb d'umask en ssh avec screen

Un super merci pour cette explication !

Cela m'a permit de comprendre qu'il suffit de mettre l'umask dans le .bashrc au lieu du .profile pour que ça fonctionne...

Il suffit donc de placer une variable d'envieusement "BASH_ENV" contenant un nom de fichier à lire pour que, même par connexion ssh, on obtienne les bonnes variables... ex : /etc/bash.bashrc

Un grand merci !

Dernière modification par teke (Le 21/11/2010, à 10:22)

#4 Le 21/11/2010, à 16:59

chopinhauer

Re : [résolu] pb d'umask en ssh avec screen

Le umask n'est pas tout à fait une variable d'environnement, mais il se comporte de manière similaire (transmis de père en fils par les processus).

Cela dit les commandes lancées par un gestionnaire de login, comme le serveur ssh (ou login et gdm par exemple) n'auront jamais l'environnement vide : les variables LOGNAME, MAIL, HOME, SHELL et PATH seront toujours définies, ainsi que la valeur de TERM si la connexion se fait sur un terminal (cf. option -t et -T de ssh). La valeur de l'umask sera prise du fichier /etc/login.defs (regarde le paramètre de configuration UMASK pour la modifier à niveau global) et un environnement supplémentaire sera ajouté depuis le fichier /etc/environment.

Donc même sans que le shell lise des fichiers de configuration, l'environnement de connexion est loin d'être vide.

En plus ssh pour se distinguer du gestionnaire de login générique te permet de définir des variables en plus dans le fichier ~/.ssh/environment (sur le serveur) ou transmettre des variables depuis le client avec les paramètres de configuration SendEnv.

Dernière modification par chopinhauer (Le 21/11/2010, à 16:59)


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#5 Le 22/11/2010, à 21:24

teke

Re : [résolu] pb d'umask en ssh avec screen

Un tout grand merci pour ces info !!!

Cela ouvre pas mal de possibilité...