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 19/10/2016, à 22:51

sam82

[Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Bonjour,

J'ai essayé vainement de monter un répertoire utilisateur situé sur mon NAS sur le PC en insérant la ligne suivante dans le fichier /etc/fstab :

192.168.1.10:/volume1/homes/$USER	/media/NAS/Documents	nfs	defaults,user,auto,noatime,intr 0 0

Je précise que la commande suivante marche parfaitement :

192.168.1.10:/volume1/homes/sam	/media/NAS/Documents	nfs	defaults,user,auto,noatime,intr 0 0

Le but est de monter le répertoire personnel du NAS de chaque utilisateur du PC automatiquement dans sa session, en utilisant la variable $USER (les login sont identiques sur les 2 systèmes).

Comme ce n'est pas possible de le faire depuis le fstab, je souhaite réaliser la mêùe chose sous forme de script au démarrage.
- quelle ligne de commande utiliser dans le script pour monter le répertoire NFS ?
- ou placer le script pour qu'il s'exécute à la fin du démarrage du PC ?

Merci d'avance pour votre aide,

Sam

Dernière modification par sam82 (Le 05/11/2016, à 16:27)

Hors ligne

#2 Le 20/10/2016, à 11:54

sam82

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Bonjour,

J'ai progressé en suivant cette file :
https://forum.ubuntu-fr.org/viewtopic.php?id=85281

j'ai créé un script "montenfsNAS.sh"dans le dossier /etc/ini.d/, que j'ai rendu exécutable, puis j'ai lancé la commande "sudo update-rc.d montenfsNAS.sh defaults" pour qu'il soit bien lancé au démarrage.

Voici son contenu :

#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi

NAME="montenfsNAS"
DESC="Monte dossier NFS utilisateur"
mount -t nfs 192.168.1.10:/volume1/homes/$USER /media/NAS/Documents -o defaults,user,auto,noatime,intr
mount.nfs: /media/NAS-salon/Documents

Après quelque adaptation (droits et groupe du point de montage), j'accède bien au dossier du NAS, ... mais pas au bon endroit !
Le montage pointe au niveau juste supérieur (192.168.1.10:/volume1/homes/), ce qui me laisse penser que la variable $USER est "vide" lorsque la ligne de commande s'exécute dans le script ?...

Que modifier pour résoudre ce problème ?

Sam

Hors ligne

#3 Le 20/10/2016, à 12:27

Watael

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

salut,

if test "$INIT_D_SCRIPT_SOURCED" != "true"; then

habituellement, on place la variable à tester à gauche.
et on met des guillemets autour des chaînes pour éviter les erreurs d'interprétation à la lecture du script.

quand tu sources un script, il n'a pas besoin d'être exécutable, et/ou d'avoir un shebang (#!), puisqu'il est exécuté dans "l'environnement appelant".

Dernière modification par Watael (Le 20/10/2016, à 12:29)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 20/10/2016, à 12:36

MicP

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Bonjour

Si tu veux pouvoir utiliser la variable $USER du compte utilisateur il faudra que le script s'exécute après que l'utilisateur ait ouvert sa session et depuis son compte utilisateur.

Il faudra aussi penser à dé-monter le système de fichiers à la fermeture de la session utilisateur

Dernière modification par MicP (Le 20/10/2016, à 12:42)

Hors ligne

#5 Le 20/10/2016, à 13:06

jplemoine

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Pour compléter :
Au démarrage du poste, il n'y a aucun utilisateur connecté : là, tu met ton script. Et tu voudrais que $USER soit égal à l'utilisateur avec lequel tu VAS te connecter...
Donc, il faut le mettre après la connexion d'un utilisateur pour que $USER soit égal à l'utilisateur avec lequel tu t'ES DEJA connecté...
+1 pour une déconnexion propre à la fermeture de la session et/ou de l'arrêt du poste.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#6 Le 20/10/2016, à 15:01

littlejohn75

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Sam82 a écrit :

Le but est de monter le répertoire personnel du NAS de chaque utilisateur du PC automatiquement dans sa session, en utilisant la variable $USER (les login sont identiques sur les 2 systèmes).

Comme l'ont fait remarqué différents intervenants, tant qu'un utilisateur n'a pas ouvert une session la varaiable $USER associée n'est pas définie.
D'autre part, passer par le fichier /etc/fstab n'est pas le plus judicieux car cela interfère avec négativement avec l'ouverture de session si, pour une raison quelconque (NAS éteint ou inaccessible), le montage échoue.
En plus, le problème de la déconnexion à la fermeture de la session demeure.

Ces difficultés sont dues au fait que vous formulez votre demande sous la forme : je veux que le montage se fasse automatiquement à l'ouverture de session.  Si vous reformulez en « j'aimerais que la ressource disque répertoire personnel du NAS de chaque utilisateur soit disponible à la demande (quand on en a besoin) », vous enlevez la contrainte sur l'ouverture de session et vous ne préjugez pas des détails d'implémentation pour satisfaire votre demande.

Je vous conseille donc d'installer le paquet autofs qui devrait vous permettre de réaliser le montage (et démontage) à la demande.
Par  exemple, pour que ce qui est dans /volume1/homes/$USER sur le NAS apparaisse automatiquement dans /nas_docs/$USER vous pouvez

  • Créer le point de montage parent (mettre un nom à votre convenance)

    sudo mkdir /nas_docs
  • Créer une entrée dans /etc/auto.master  du genre

    /nas_docs  /etc/auto.nas
  • Créer le fichier associé /etc/auto.nas
    Si les noms correspondent sur le NAS et les systèmes clients, vous pouvez smiplifier

    # @(#)  /nas_docs mapping for automount
    *     -rw,hard,intr,nosuid   192.168.1.10:/volume1/homes/&

Il suffit alors de redémarrer le service autofs, et de lancer

ls /nas_docs  
ls /nas_docs/sam

Ce système a aussi l'avantage de pouvoir monter ce qui appartient à un autre utilisateur (normalement sans pouvoir écrire, uniquement en consultation).

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع  تحياتي الخالصة
---
F. Petitjean
Ingénieur civil du Génie Maritime.

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. »  (R. Devos)

Hors ligne

#7 Le 22/10/2016, à 10:10

sam82

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Très intéressant l'option autofs en effet !

Je l'ai expérimenté mais je rencontre encore quelque soucis.

Déjà, j'ai pu remarquer que les variables d’environnement (comme $USER) ne sont pas utilisables (en tout cas pas de façon triviale pour moi...)
Malgré la lecture du man et de quelques forum, j'ai pas bien compris comment fonctionnait les fonctions "variable substitution" et "wildcard key".

Pour cette dernière, en reprennant l'exemple présenté :

# @(#)  /nas_docs mapping for automount
*     -rw,hard,intr,nosuid   192.168.1.10:/volume1/homes/&

- par quelle magie le caractère & "liste" les utilisateurs ?
- comment cette commande me permet de modifier ce qui est dans le sous dossier correspondant à mon utilisateur et pas aux autres ?

Dernière question plus générale sur les dossiers montés :
- les dossier sont automatiquement démontés au delà du timeout paramétrable. Comment faire en sorte que ces dossiers restent accessible en permanence sans devoir rentrer le chemin manuellement dans l'explorateur de fichiers (en ne touchant pas au timeout)?

Merci d'avance pour les précisions,

Sam

Hors ligne

#8 Le 24/10/2016, à 14:59

littlejohn75

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

sam82 a écrit :

Très intéressant l'option autofs en effet !

Je ne vous le fais pas dire.

sam82 a écrit :

j'ai pas bien compris comment fonctionnait les fonctions "variable substitution" et "wildcard key".

D'après

man autofs

certaines variables peuvent être substituées par leur valeur dans la clé (entrée dans le répertoire parent) ou dans la partie "location", autrement dit la partie source du montage. Comme il n'y a pas d'exemple, c'est bien difficile à comprendre.

sam82 a écrit :

- par quelle magie le caractère & "liste" les utilisateurs ?

la magie est dans la partie gauche (la clé '*'), c'est le joker, utilisé en dernier ressort, si on n'a pas trouvé la clé demandée dans les autres entrées de la table de correspondance.
Cela signifie que si la clé demandée est 'sam' elle servira d'entrée dans le répertoire parent (comme toute clé) et que le caractère '&' sera remplacé par 'sam' dans la source du montage.

sam82 a écrit :

- comment cette commande me permet de modifier ce qui est dans le sous dossier correspondant à mon utilisateur et pas aux autres ?

Ce n'est pas une commande, mais une entrée dans une table de correspondance, et vous ne modifiez rien du tout, vous désignez une entrée joker. J'ai l'air de pinailler mais votre formulation bâtarde est un signe que vous n'avez pas compris comment cela s'articule. sad
Tout cela, parce-que vous vous acharnez à ne vous préoccuper que de l'utilisateur courant. Les systèmes unix et Linux sont intrinsèquement multi-utilisateurs, il vous faut vous libérer du concept erroné qu'il n'y a qu'un utilisateur courant (en général sur la console graphique).
La possibilité de faire monter un répertoire exporté par un serveur NFS, est offerte à tous les utilisateurs, pas seulement l'utilisateur connecté graphiquement.
Actuellement, j'utilise SuperPutty (sous W$), j'ai une trentaine d'entrées dans le volet droit qui liste les différentes combinaisons serveurs/utilisateurs pour des connexions SSH (client puTTy).  Les utilisateurs de la grappe de calculs que j'ai l'honneur d'administrer peuvent se connecter sur n'importe laquelle des machines de la grappe, ils retrouvent leur répertoire personnel comme s'ils s'étaient connectés sur la machine (très peu puissante) qui exporte cette ressource disque. Ils lancent leurs calculs dans un répertoire /bigr/$USER  qui est lui aussi monté automatiquement, certains logiciels privateurs sont dans /opt  qui est aussi géré via autofs (en lecture seule).

sam82 a écrit :

Comment faire en sorte que ces dossiers restent accessible en permanence sans devoir rentrer le chemin manuellement dans l'explorateur de fichiers

La ressource est accessible en permanence. Pour répondre à la problématique de la paresse ultime d'un utilisateur qui ne veut pas entrer trois lettres ( s a m ) dans l'explorateur de fichiers, il y a une option --ghost pour je ne sais plus quelle commande car je ne l'a retrouve pas sur mes systèmes. L'autre réponse est

PEBKAC  problem exists between keyboard and chair

Si vous êtes dans le répertoire parent d'une table autofs, je vous déconseille fortement d'utiliser la touche tabulation pour tenter de faire deviner au système quel sous-répertoire vous voulez désigner.

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع  تحياتي الخالصة
---
F. Petitjean

« Je préfère le vin d'ici à l'au-delà »
       Pierre Dac

Hors ligne

#9 Le 25/10/2016, à 18:01

sam82

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Ok, merci pour vos explication sur le rôle du joker.

Pour le reste, je vais vous renvoyer le compliment, mais je ne comprend pas non plus votre acharnement à dénigrer mon besoin :

littlejohn75 a écrit :

Tout cela, parce-que vous vous acharnez à ne vous préoccuper que de l'utilisateur courant. Les systèmes unix et Linux sont intrinsèquement multi-utilisateurs, il vous faut vous libérer du concept erroné qu'il n'y a qu'un utilisateur courant (en général sur la console graphique).

Mon besoin est pourtant clairement énoncé dans mon premier post :

sam82 a écrit :

Le but est de monter le répertoire personnel du NAS de chaque utilisateur du PC automatiquement dans sa session, en utilisant la variable $USER (les login sont identiques sur les 2 systèmes).

Donc oui, dans mon cas je souhaite effectuer une action liée à l'utilisateur de la session graphique ...

Une autre de vos remarques :

littlejohn75 a écrit :

Pour répondre à la problématique de la paresse ultime d'un utilisateur qui ne veut pas entrer trois lettres ( s a m )

=> ce n'est pas de la paresse, c'est pour que les dossiers soient accessibles de manière transparente par mes utilisateurs, qui n'ont pas à connaitre le reste de arborescence des fichiers

littlejohn75 a écrit :

Si vous êtes dans le répertoire parent d'une table autofs, je vous déconseille fortement d'utiliser la touche tabulation pour tenter de faire deviner au système quel sous-répertoire vous voulez désigner.

=> où ai-je parler d'utiliser la touche tabulation ?

C'est dommage vos sarcasmes, car sinon vos réponses sont fouillées et très instructives.
Sam

Hors ligne

#10 Le 26/10/2016, à 12:44

littlejohn75

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

sam82 a écrit :

je souhaite effectuer une action liée à l'utilisateur de la session graphique ...

La solution que j'ai proposée n'aborde que la partie système du problème. C'est une architecture générale.
Pour la partie interface utilisateur, session graphique, tout dépend des logiciels installés et en particulier de l'explorateur de fichiers (que je ne connais pas). Paramétrer une action pour faire apparaître `/nas_docs/$USER`  ne devrait pas être très difficile smile

sam82 a écrit :

=> ce n'est pas de la paresse, c'est pour que les dossiers soient accessibles de manière transparente par mes utilisateurs, qui n'ont pas à connaitre le reste de arborescence des fichiers

On va dire que j'étais moi-même irrité de ne pas avoir trouvé l'option ghost dans l'ensemble des processus associés (peut-être a-t-elle été retirée entre temps).
Par contre, sur le fait que vos utilisateurs n'ont pas à connaître les arborescences de fichiers, I beg to differ  Si vous proposez une boîte noire qui fonctionne bien, c'est parfait, jusqu'au jour où pour une raison quelconque cela ne marche plus, et là il faudra bien revenir aux fondamentaux (comme dirait Bernard Laporte ).

L'utilisateur marie retrouve les documents stockés sur le NAS dans /nas_docs/marie, cela ne me semble quand même pas très compliqué. Si en plus, vous lui dites qu'eile peut consulter (en lecture) les documents de sam, cela me semble tout bénéfice. (En supposant une confiance mutuelle bien entendu).

Linux est un système ouvert, cela ne sert à rein de cacher les choses. Une bonne utilisation des outils passe par une compréhension minimale de comment cela marche.

sam82 a écrit :

=> où ai-je parler d'utiliser la touche tabulation ?

Nulle part, c'était simplement pour vous mettre en garde. J'ai déjà rencontré des problèmes significatifs (processus impossible à tuer) avec cela. C'est là que l'on voit les limites des montages automatiques.

sam82 a écrit :

C'est dommage vos sarcasmes,

Ce ne sont pas des sarcasmes, je tente maladroitement d'élever le niveau et de rappeler que ce n'est pas parce-que cela tourne sur un PC (Personnal Computer) que c'est mono-utilisateur, mono-*
J'essaie de vous faire profiter de mon expérience, comme par exemple les montages automatiques de HOME sous AIX 4.2 il y a un quart de siècle neutral

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع  تحياتي الخالصة
---
F. Petitjean
Ingénieur civil du Génie Maritime.

« Celui qui, parti de rien, n'est arrivé nulle part n'a de merci à dire à personne !! »
       Pierre Dac

Hors ligne

#11 Le 05/11/2016, à 16:25

sam82

Re : [Résolu] monter dossier nfs avec (ou sans !) variable d'environnement

Bonjour,

Un petit messages pour clôturer le sujet !

l'argument --ghost permet bien  de conserver les répertoires dans le dossier master.
Autofs fait ensuite le travail lorsqu'on accède à ces répertoires en le montant, puis le démonte automatiquement à l'expiration du timeout configuré.

Ceci étant, pour mon besoin particulier j'ai créé un lien symbolique pour mes utilisateurs pour accéder à leur répertoire sur le NAS. Je peux donc me passer de l'option --ghost

Merci encore pour vos conseils et le partage de votre expérience ;-)
Sam

Hors ligne