Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

script de démarrage et d'ouverture de session sur un PC Linux client d'un serve ur Samba etc.

6 réponses
Avatar
Francois Lafont
Bonjour à tous,

J'ai une Debian Lenny qui fait serveur Samba muni d'un annuaire LDAP
pour les comptes de type samba et unix. Sur le même réseau local, j'ai
une Ubuntu LTS que j'ai réussi tant bien que mal à « intégrer » au
domaine samba : je veux dire par là que je peux ouvrir une session sur
le client avec un login et un mot de passe stockés dans l'annuaire LDAP
du serveur (après installation de libnss-ldap et de libpam-pam sur le
client).

Mais je voudrais bien pouvoir personnaliser un peu la session du compte
en question, notamment en montant sur le PC client certains partages du
serveur Samba etc.

Voici mes questions :

1) Y a-t-il un moyen simple pour faire en sorte que le PC client exécute
un script :

a) au moment du démarrage (à la fin de celui-ci mais avant que quelqu'un
ouvre une session sur le client)

b) et au moment de l'ouverture de session.

Mais attention, je voudrais vraiment que les 2 scripts ne soient pas
stockés localement sur le PC client mais sur le serveur (un peu comme on
mettrait un logon.bat dans le partage NETLOGON d'un serveur Windows). Si
pour faire tout ça, je pouvais éviter de passer par PAM, ça
m'arrangerait. :-)

2) Imaginons que j'ai un magnifique script bash de logon sur mon serveur
Samba, mais le petit souci, c'est qu'il contient des mots de passe un
peu sensibles pour faire son travail. Est-il possible de rendre ce
script « illisible » : par exemple en le cryptant ou je ne sais quoi
(mais bien sûr le client doit toujours pouvoir exécuter ce script).

3) Pour l'instant, quand un utilisateur du domaine se connecte sur un
client, lorsqu'il ferme sa session son home reste présent dans /home.
Est-il possible de faire en sorte que le home soit effacé après
fermeture de session ?

Merci d'avance pour votre aide.
À+

--
François Lafont

6 réponses

Avatar
Francois Lafont
Bonjour à tous,

J'ai remarqué à plusieurs reprises que Samba ne déchaînait pas les
passions ici. ;-) Ce n'est en aucun cas un reproche.

Je vais tenter malgré tout de poser des questions plus précises car j'ai
avancé un peu.

Le 07/11/2011 18:57, Francois Lafont a écrit :

1) Y a-t-il un moyen simple pour faire en sorte que le PC client exécute
un script :

a) au moment du démarrage (à la fin de celui-ci mais avant que quelqu'un
ouvre une session sur le client)

b) et au moment de l'ouverture de session.

Mais attention, je voudrais vraiment que les 2 scripts ne soient pas
stockés localement sur le PC client mais sur le serveur (un peu comme on
mettrait un logon.bat dans le partage NETLOGON d'un serveur Windows). Si
pour faire tout ça, je pouvais éviter de passer par PAM, ça
m'arrangerait. :-)



J'ai un truc qui me plaît bien, mais j'ai encore des obstacles. Voir
plus bas.

En fait sur le client Linux, j'ai juste mis cette ligne sur /etc/fstab :

//192.168.71.2/netlogon /mnt/NETLOGON cifs ro,guest 0 0

car j'ai un partage « netlogon » sur le serveur Samba et je peux le
monter sur le client sans mot de passe. Ainsi, j'ai un accès en lecture
au dossier /mnt/NETLOGON sur le client sachant que son contenu se trouve
sur le serveur samba et j'y ai mis deux scripts :

- logon.bash # <-- lancé juste après l'authentification sur gdm3
- logout.bash # <-- lancé au moment de la fermeture de session.

En effet, sur la machine client, j'ai mis un fichier
/etc/gdm3/PostLogin/Default qui lance le script de logon :

/bin/bash /mnt/NETLOGON/logon.bash

Et j'ai mis le fichier /etc/gdm3/PostSession/Default qui lance le script
de logout :

/bin/bash /mnt/NETLOGON/logout.bash

En gros, dans le fichier de logon :

- si $LOGNAME est dans /etc/passwd, je ne fais rien ;
- si $LOGNAME n'y est pas (et donc c'est un compte issue de l'annuaire
LDAP du serveur Samba), alors je crée le dossier $HOME (avec les bons
droits) et je monte le partage samba perso de l'utilisateur courant,
appelons ce partage PERSO. (En fait, je monte ce partage sur /mnt/USER
et je crée un petit lien symbolique sur le bureau du $HOME.)

En gros, dans le fichier de logout :

- si $LOGNAME est dans /etc/passwd, je ne fais rien ;
- sinon, alors je démonte d'abord le partage PERSO et ensuite je
supprime carrément tout le $HOME.

Seulement, voilà, le souci c'est que, dans logon.bash, je dois monter le
partage PERSO de $LOGNAME en utilisant son login (ça je connais, c'est
$LOGNAME justement) et son mot de passe Samba que je ne connais pas à
l'avance (si je mets le bon mot de passe en dur pour le compte toto,ça
marche mais bien sûr pour un autre compte ça plante).

Question : comme le script est lancé par gdm3 qui a servi à
l'authentification avec login (--> $LOGNAME) et mot de passe (--> ???),
n'y a-t-il pas moyen d'avoir accès à ce mot de passe via une petite
variable pour faire un truc comme ci-dessous ? (j'ai cherché en vain.)

# Hélas, ceci ne fonctionne pas.
mount -t cifs "//192.168.71.2/homes" "/mnt/USER"
-o user=$LOGNAME,password=$PASSWD # <---- !!!!

2) Imaginons que j'ai un magnifique script bash de logon sur mon serveur
Samba, mais le petit souci, c'est qu'il contient des mots de passe un
peu sensibles pour faire son travail. Est-il possible de rendre ce
script « illisible » : par exemple en le cryptant ou je ne sais quoi
(mais bien sûr le client doit toujours pouvoir exécuter ce script).



La seule idée que j'ai trouvée est de passer par un programme en C (je
suis nul en C, hein) qui exécute des commandes bash :

//----------------------------
#include "/usr/include/stdio.h"
#include "/usr/include/stdlib.h"

int main (void)
{
system("une_commande_bash");
system("une_commande_bash");
// etc...
return 0;
}
//----------------------------

Mais non seulement c'est un peu lourding, mais en plus il parait que
c'est une hérésie au niveau sécurité de faire comme ça. Alors du coup,
je suis au point mort sur cette question.

3) Pour l'instant, quand un utilisateur du domaine se connecte sur un
client, lorsqu'il ferme sa session son home reste présent dans /home.
Est-il possible de faire en sorte que le home soit effacé après
fermeture de session ?



Trouvé grâce à /etc/gdm3/PostSession/Default vu plus haut.

--
François Lafont
Avatar
Pascal
Le 07/11/2011 18:57, Francois Lafont a écrit :
Bonjour à tous,

J'ai une Debian Lenny qui fait serveur Samba muni d'un annuaire LDAP
pour les comptes de type samba et unix. Sur le même réseau local, j'ai
une Ubuntu LTS que j'ai réussi tant bien que mal à « intégrer » au
domaine samba : je veux dire par là que je peux ouvrir une session sur
le client avec un login et un mot de passe stockés dans l'annuaire LDAP
du serveur (après installation de libnss-ldap et de libpam-pam sur le
client).

Mais je voudrais bien pouvoir personnaliser un peu la session du compte
en question, notamment en montant sur le PC client certains partages du
serveur Samba etc.

Voici mes questions :

1) Y a-t-il un moyen simple pour faire en sorte que le PC client exécute
un script :

a) au moment du démarrage (à la fin de celui-ci mais avant que quelqu'un
ouvre une session sur le client)

b) et au moment de l'ouverture de session.

Mais attention, je voudrais vraiment que les 2 scripts ne soient pas
stockés localement sur le PC client mais sur le serveur (un peu comme on
mettrait un logon.bat dans le partage NETLOGON d'un serveur Windows). Si
pour faire tout ça, je pouvais éviter de passer par PAM, ça
m'arrangerait. :-)

2) Imaginons que j'ai un magnifique script bash de logon sur mon serveur
Samba, mais le petit souci, c'est qu'il contient des mots de passe un
peu sensibles pour faire son travail. Est-il possible de rendre ce
script « illisible » : par exemple en le cryptant ou je ne sais quoi
(mais bien sûr le client doit toujours pouvoir exécuter ce script).

3) Pour l'instant, quand un utilisateur du domaine se connecte sur un
client, lorsqu'il ferme sa session son home reste présent dans /home.
Est-il possible de faire en sorte que le home soit effacé après
fermeture de session ?

Merci d'avance pour votre aide.
À+



libpam-mount ??
Avatar
Francois Lafont
Le 11/11/2011 20:48, Pascal a écrit :

libpam-mount ??



Comme je mettais dans mon premier message, j'aurais vraiment bien aimé
éviter de mettre les mains dans PAM, mais effectivement sur Debian
Squeeze ça semble la solution ad hoc. Et j'ai déjà commencé quelques
recherches sur libpam-mount.

Mais ce que je reproche à cette solution (en dehors du fait que je ne la
connais que très mal et que, par conséquent, elle me semble être un peu
une usine à gaz), c'est que cela m'oblige à inscrire en dur sur les
toutes les machines clientes la « politique » du montage-démontage des
partages (en l'occurrence dans le fichier
/etc/security/pam_mount.conf.xml de chaque client Debian, si j'ai bien
compris). Je trouve qu'avec des scripts centralisés sur le serveur
Samba, c'est beaucoup plus sympa. :-)

Mais je vais quand même essayer d'approfondir ma connaissance de
libpam-mount.

Merci pour la réponse. :-)

--
François Lafont
Avatar
Francois Lafont
Bonsoir,

Je me permets de remonter ce fil car j'ai un peu avancé entre temps mais
je tombe sur de nouveaux obstacles.

Le 11/11/2011 21:01, Francois Lafont a écrit :

Mais je vais quand même essayer d'approfondir ma connaissance de
libpam-mount.



Finalement, le configuration de pam_mount.conf.xml a été moins
compliquée que ce que j'imaginais (même si vraiment j'aurais préféré
pouvoir passer par des scripts bash). Voici une configuration qui
fonctionne plutôt bien chez moi :

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">

<pam_mount>
<debug enable="1" />
<logout wait="0" hup="0" term="0" kill="0" />
<umount>umount %(MNTPT)</umount>
<volume fstype="cifs"
server="192.168.71.2"
path="homes"
mountpoint="/mnt/USER"
options="user=%(USER),nobrl"/>
<mkmountpoint enable="1" remove="true" />
</pam_mount>

Seulement, j'ai maintenant un souci au niveau de la « gestion des
profils ». En effet, l'utilisateur qui se connecte (via un compte LDAP
du serveur) va se retrouver avec home sur la machine locale (ce que je
souhaite). Seulement, une fois déconnecté, le home local sera
complètement effacé. Du coup, l'utilisateur, pour conserver des fichiers
personnels d'une session à l'autre devra les placer dans /mnt/USER (le
partition qui est montée à l'ouverture de session justement via le
module pam_mout).

Pour lui éviter des erreurs d'inattention à cet utilisateur, je
souhaiterais que, dans le menu « Raccourcis » en haut de l'écran (je
rappelle que je suis sous Squeeze avec Gnome 2.3), le « Dossier
Personnel » ne pointe pas vers le home local comme c'est le cas
actuellement mais pointe automatiquement vers /mnt/USER. J'ai bien
cherché sur le Web, mais impossible de trouver la solution. Ajouter des
signets etc. pas de problème, mais modifier la destination de ce
raccourci « Dossier Personnel » je n'ai rien trouvé aussi bien via la
ligne de commande que via gconf-editor ou que via l'interface graphique.
Savez-vous comme s'y prendre ?

Merci d'avance pour votre aide.

--
François Lafont
Avatar
essomba84
On 27/11/2011 03:58, Francois Lafont wrote:

(...)

Merci d'avance pour votre aide.




je vais peut être dire une connerie mais automount ça ne marche pas avec
samba ? Car comme ça quand un utilisateur veut rentrer dans son home ça
monte la partition et au bout d'un moment d'inactivité (donc typiquement
après le logout), ça démonte la partition.
Avatar
Francois Lafont
Le 28/11/2011 00:02, essomba84 a écrit :

je vais peut être dire une connerie mais automount ça ne marche pas avec
samba ? Car comme ça quand un utilisateur veut rentrer dans son home ça
monte la partition et au bout d'un moment d'inactivité (donc typiquement
après le logout), ça démonte la partition.



Ce n'est sûrement pas une connerie mais par contre ce n'est plus
vraiment en rapport avec mon problème actuel. :-)
Le montage et le démontage fonctionne maintenant correctement avec
libpam-mount (à peu près correctement disons car j'ai bien eu une ou
deux fermetures de session où le démontage n'a pas eu lieu).

Mon problème actuel est que sur le tableau de bord en haut dans le menu
« Raccourcis » se trouve l'item « Dossier personnel » qui naturellement
pointe vers « /home/login » et je voudrais le faire pointer ailleurs.
Impossible pour moi de trouver le fichier où on peut paramétrer cela. Je
commence à me demander si ce n'est pas inscrit en dur dans le code
source de Gnome et/ou Nautilus.

--
François Lafont