logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

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

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


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
utilisateurs:lebardix:tutos:primtux-partage-de-donnees [30/09/2018 23:03]
lebardix [Installation]
utilisateurs:lebardix:tutos:primtux-partage-de-donnees [30/09/2018 23:06]
lebardix [Installation]
Ligne 150: Ligne 150:
  
 <note important>​**attention** le script prend en guise de mot de passe : le nom de la classe, penser à adapter le script si vous choisissez une autre solution </​note>​ <note important>​**attention** le script prend en guise de mot de passe : le nom de la classe, penser à adapter le script si vous choisissez une autre solution </​note>​
 +==== configuration du pc primtux ====
  
-===== Utilisation =====+=== lighdm connexion ​=== 
 +Rappellons que les machines Primtux sont "​mono-utilisateur"​ **1 seul utilisateur sur 1 seule machine à la fois.** 
 +Nous monterons donc les ressources partagées (suivant une information donnée par l'​utilisateur d'​appartenance à telle ou telle classe **) 
 +avec lightdm à la connexion de l'​utilisateur. 
 +Pour cela Lighdm dispose de 2 paramêtres:​ session-setup-script et session-cleanup-script définissant des scripts exécutés par root. 
 +nous utilisons alors ces scripts pour monter et demonter nos partages 
 +[[/​etc/​lightdm/​session/​session-setup.sh]] à la connexion 
 +[[/​etc/​lightdm/​session/​session-cleanup.sh]] à la déconnexion
  
 +== Adapter l'​écran de connexion de primtux ==
 +Primtux propose une interface de connexion simplifiée pour les enfants.
 +4 images permettent de choisir l'​utilisateur parmi mini,​maxi,​super et administrateur (le maitre). Quelques boutons ​ sont disponibles pour controler le PC parmi Arreter, Hiberner, Veille, Redémarrer.
  
 +Il manque donc une liste pour la sélection de l'​appartenance de l'​utilisateur à telle ou telle classe.
 +Nous allons donc rajouter dans l'​interface de connexion ce choix avec le sélecteur de session habituel.
 +Commençons par ajouter les différentes sessions souhaitées
  
 +== Créer les sessions spécifiques par classe ==
 +il n'est prédéfini qu'une seule session "​fluxbox",​ donc pour différencier les classes nous dupliquons simplement la session existante sous d'​autres noms correspondant aux critères d'​organisation (pour l'​exemple j'ai choisi une différensation par niveau classe).
 +en root 
 +copier [[/​usr/​share/​xsessions/​fluxbox.desktop]] en /​usr/​share/​xsessions/​fluxbox-cp.desktop
 +copier [[/​usr/​share/​xsessions/​fluxbox.desktop]] en [[/​usr/​share/​xsessions/​fluxbox-ce1.desktop]]
 +...
 +copier [[/​usr/​share/​xsessions/​fluxbox.desktop]] en [[/​usr/​share/​xsessions/​fluxbox-cm2.desktop]]
 +(on pourrait imaginer une organisation avec le nom des professeurs ou tout autre choix)
  
 +ensuite on va modifier, pour chaque nouvelle session créée, le parametre Name=fluxbox avec le texte qui appraitra dans le sélecteur
 +Name=Classe de CP pour fluxbox-cp.desktop,​ et ainsi de suite...
  
 +== Modifier l'​interface de connexion ==
 +Nous allons maintenant rajouter dans l'​interface de connexion pour ajouter la liste déroulante du choix des différentes sessions que nous venons de créer.
 +La présentation de l'​écran de connexion de [[LightDm]] (dénommé greeter) est lightdm-webkit-greeter. Elle est configurable à l'aide de thèmes.
 +Primtux a été dessiné autour du theme pretty, nous allons donc retoucher le fichier [[/​usr/​share/​lightdm-webkit/​themes/​pretty/​index.html]]
 +pour ajouter le "​session selector"​
 +cf: https://​askubuntu.com/​questions/​414344/​how-to-add-a-session-type-button-to-lightdm-webkit-greeter-theme ​
  
 +<file html /​usr/​share/​lightdm-webkit/​themes/​pretty/​index.html>​
 +<​html>​
 +<​head>​
 +<link rel="​stylesheet"​ href="​css/​dock.css"​ />
 +<link rel="​stylesheet"​ href="​css/​greeter.css"​ />
 +<script type="​text/​javascript"​ src="​js/​jquery-1.8.0.min.js"></​script>​
 +<script type="​text/​javascript"​ src="​js/​greeter.js"></​script>​
  
  
 + <script type="​text/​javascript">​
 + function show_message(text)
 + {
 +    table = document.getElementById('​message_table'​);​
 +    label = document.getElementById('​message_label'​);​
 +    ​label.innerHTML = text;
 +    if (text.length > 0)
 +        ​table.style.visibility = "​visible";​
 +    else
 +        ​table.style.visibility = "​hidden";​
 + }
 +
 + loading_text = ''​
 +
 + function throbber()
 + {
 +    ​loading_text += '​.';​
 +    if (loading_text == '​....'​)
 +        ​loading_text = '​.'​
 +    label = document.getElementById('​countdown_label'​);​
 +    ​label.innerHTML = loading_text;​
 +    ​setTimeout('​throbber()',​ 1000);
 + }
 +
 + function authentication_complete()
 + {
 +    if (lightdm.is_authenticated)
 +    {
 +      ​session_list = document.getElementById('​session_list'​);​
 +      ​session = lightdm.sessions[session_list.selectedIndex];​
 +             ​lightdm.login (lightdm.authentication_user,​ session.key);​
 +    }
 +    else
 +      ​show_message ("​Authentication Failed"​);​
 +
 +    reset ();
 +    ​setTimeout('​throbber()',​ 1000);
 + }
 +
 +
 + document.write('<​table id="​user_table"​ style="​margin:​ auto;">'​);​
 + document.write('<​select id="​session_list">'​);​
 + for (i in lightdm.sessions)
 + {
 +   session = lightdm.sessions[i];​
 +   if (session.key == lightdm.default_session)
 +     document.write('<​option selected="​selected"​ value="'​ + session.key + '">'​ + session.name + '</​option>'​);​
 +          else
 +     document.write('<​option value="'​ + session.key + '">'​ + session.name + '</​option>'​);​
 + }
 + document.write('</​select>'​);​
 + document.write('</​table>'​);​
 +
 + </​script>​
 +</​head>​
  
 +<​body>​
 + <div class="​dockArea">​
 + <div class="​dock">​
 + <ul id="​dockList">​
 + </​ul>​
 + </​div>​
 + </​div>​
 + <div id="​passwordArea"​ class="​password">​
 + <table border="​0"​ align="​center">​
 + <​tr>​
 + <​td><​img src="​img/​transp.gif"​ width="​32"​ height="​32"/></​td>​
 + <​td><​img src="​img/​transp.gif"​ width="​32"​ height="​32"/></​td>​
 + <​td><​input id="​passwordField"​ type="​password"​ class="​password"/></​td>​
 + <​td><​img src="​img/​action_ok.png"​ title="​Authentification"​ onclick="​submitPassword()"/></​td>​
 + <​td><​img src="​img/​action_cancel.png"​ title="​Annuler"​ onclick="​cancelAuthentication()"/></​td>​
 + </​tr>​
 + </​table>​
 + </​div>​
 + <div id="​statusArea"​ class="​status">​
 + <table border="​0"​ align="​center">​
 + <​tr>​
 + <​td><​img src="​img/​status.png"/></​td>​
 + <​td><​span style="​font-size:​ 100%">​Erreur</​span></​td>​
 + </​tr>​
 + </​table>​
 + </​div>​
 + <div id="​timerArea"​ class="​timer"><​img src="​img/​timer.gif"/></​div>​
 + <div id="​actionsArea"​ class="​actions"></​div>​
 +        <div id="​logArea"​ class="​log"></​div>​
 +</​body>​
 +</​html>​
 +</​file>​
  
-===== configuration du serveur Samba =====+Nous retrouvons donc le sélecteur de session ​ en haut à gauche de la page de connexion 
 +{{~/​shot.resized.png}}
  
-<file config /​etc/​samba/​smb.conf>​ 
-[global] 
-   ​workgroup = WORKGROUP 
-   ​netbios name = SRV 
-   dns proxy = no 
-   ​server string = %h SAMBA     # nom du serveur samba 
-#   ​interfaces = 10.0.0.1 ​ enp5s0 
  
-   log file /​var/​log/​samba/​log.%m +== Créer les scripts de session de lightdm ​== 
-   max log size 1000 + 
-   log level +Les scripts sont identifiés dans la configuration de lightdm avec les parametres
-   panic action ​/​usr/​share/​samba/​panic-action %d +
-   server role = standalone server +
-   passdb backend = tdbsam +
-   obey pam restrictions = yes +
-   unix password sync = yes +
-   ​passwd program = /​usr/​bin/​passwd %u +
-   ​passwd chat = *Enter\snew\s*\spassword:​* %n\n *Retype\snew\s*\spassword:​* %n\n *password\supdated\ssuccessfully* . +
-   pam password change = yes +
-   map to guest = bad user +
-   ​usershare allow guests = yes +
-[homes] +
-   ​comment = Home Directories +
-   ​browseable = yes +
-   read only = no +
-   ​create mask = 0700 +
-   ​directory mask = 0700 +
-   valid users = %S +
-[forum] +
-  comment = tout public +
-  path = /​home/​forum/​ +
-  browsable =yes +
-  create mask = 0666 +
-  directory mask = 0777 +
-  writable = yes +
-  guest ok = yes +
-#  force user = nobody +
-#  force group = nobody +
-;​[printers] +
-;   ​comment = All Printers +
-;   ​browseable = yes +
-;   path = /​var/​spool/​samba +
-;   ​printable = yes +
-;   guest ok = no +
-;   read only = yes +
-;   ​create mask = 0700 +
-;[print$] +
-;   ​comment = Printer Drivers +
-;   path = /​var/​lib/​samba/​printers +
-;   ​browseable = yes +
-;   read only = yes +
-;   guest ok = no+
 '''​ '''​
 +session-setup-script= et session-cleanup-script=
 +'''​
 +Ils sont exécutés en tant que root à la connexion et à la déconnexion de l'​utilisateur,​ on les créera dans le dossier /​etc/​lightdm/​session/​
 +
 +configuration de lighdm ​
 +<file config /​etc/​lightdm.conf>​
 +[Seat:*]
 +greeter-session=lightdm-gtk-greeter
 +greeter-hide-users=false
 +user-session=fluxbox
 +#####​display-setup-script=/​root/​45x11-custom-xrandr-settings
 +session-setup-script=/​etc/​lightdm/​session/​session-setup.sh
 +session-cleanup-script=/​etc/​lightdm/​session/​session-cleanup.sh
 </​file>​ </​file>​
  
-Sur le serveur SAMBA, 
-  * il faut créer le dossier pour le partage **forum** 
-<code root>​mkdir /​home/​forum</​code>​ 
-  * il faut créer le dossier des "​**pseudos utilisateurs**"​ qui partagerons leur home directory, (on désigne un dossier particulier pour l'​ensemble de ceux-ci) et créer ces pseudos-utilisateurs 
-<code root> 
-mkdir /​home/​classes 
-groupadd classes 
-useradd -b /​home/​classes -G classes -N -s /​usr/​sbin/​nologin -d /​home/​classes/<​nomdelaclasse>​ -m <​nomdelaclasse></​code>​ 
  
-exempleuseradd -b /home/classes ​-G classes ​--/usr/sbin/nologin ​-/home/classes/cp -m cp+Le script recoit dans son environnement diverses variables,  
 + 
 +<code config retour de la commande>​ 
 +DISPLAY=:
 +USER=administrateur 
 +PWD=/ 
 +HOME=/home/administrateur 
 +SHELL=/​bin/​sh 
 +SHLVL=1 
 +LOGNAME=administrateur 
 +XAUTHORITY=/​var/​run/​lightdm/​root/:​0 
 +PATH=/​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games 
 +_=/​usr/​bin/​env 
 +</​code>​ 
 + 
 + 
 +mais le nom de session n'y est pas présent, il doit être récupéré dans le fichier .dmrc du répertoire HOME de l'​utilisateur. 
 + 
 +<file config .dmrc> 
 +[Desktop] 
 +Language=fr_FR.utf8 
 +Session=fluxbox-ce1 
 +</​file>​ 
 + 
 + 
 +On devra fournir les mots de passe des montages à réaliser dans ce script, ces mots de passe sont qui ont été définis dans le chapitre 
 +" configuration du serveur Samba " ci-dessus 
 + 
 + 
 + 
 +<file bash /​etc/​lightdm/​session/​session-setup.sh>​ 
 +#!/bin/bash 
 +# session-setup.sh 
 +#/root/​45x11-custom-xrandr-settings 
 + 
 +echo $* >/​root/​session 
 +env >>/​root/​session 
 + 
 +cat <<EOF | tee /​etc/​samba/​.credentials/​forum > /dev/null 
 +username=sharing 
 +password=tuxprof 
 +domain=WORKGROUP 
 +EOF 
 +mount /home/forum 
 + 
 +SESSION=$(grep Session $HOME/.dmrc) 
 +SESSION_LIGHTDM=${SESSION#​Session=} 
 +SESSION_USER=${SESSION_LIGHTDM##​*-
 + 
 +mount -t cifs //SRV/homes /​home/​MaClasse -o rw,​vers=2.1,​domain=WORKFLOW,​user=$SESSION_USER,​password=$SESSION_USER,​uid=$(id -u $USER),​forceuid,​gid=$(id -g $USER),​forcegid,​file_mode=0775,​dir_mode=0775 
 +</​file>​ 
 + 
 +<file bash /​etc/​lightdm/​session/​session-cleanup.sh>​ 
 +#​!/​bin/​bash 
 +# session-cleanup.sh 
 +# prls -emier test demonter dossiers partagés /​home/​MaClasse 
 +umount /​home/​MaClasse 
 +umount /​home/​forum 
 +rm /​etc/​samba/​.credentials/​* 
 +</​file>​ 
 + 
 + 
 + 
 + 
 +===== Utilisation ===== 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
-On affecte un mot de passe pour le partage samba 
-<code root>​root@srv:/​home/​administrateur#​ smbpasswd -a <​nomdelaclasse>​ 
-New SMB password: 
-Retype new SMB password:</​code>​ 
  
-Notez ce mot de passe, il devra être reporté dans [[/​etc/​lightdm/​session/​session-setup.sh]] des postes primtux 
  
-<note important>​**attention** le script prend en guise de mot de passe : le nom de la classe, penser à adapter le script si vous choisissez une autre solution </​note>​ 
  
 ===== configuration du pc primtux ===== ===== configuration du pc primtux =====
utilisateurs/lebardix/tutos/primtux-partage-de-donnees.txt · Dernière modification: 16/10/2018 02:59 par lebardix

Pied de page des forums

Propulsé par FluxBB