OVH Cloud OVH Cloud

samba et preexec

4 réponses
Avatar
Pascal Legrand
j'ai repompé sur internet un script permettant de tester si un utilisateur est déjà connecté :


resultat=$(/usr/local/samba/bin/net status sessions |grep $1 | awk '{print$2}')
if [ "X${resultat}" == X ]; then
exit 0
else
exit 1
fi



dans le smb.conf au niveau du partage home j'ai rajouté les lignes
suivantes :
[home]
root preexec = /usr/local/samba/bin/check-session %u
root preexec close = yes

lorsque je teste le script en dehors de samba, c'est à dire que je lance la commande :
/usr/local/samba/bin/net status sessions |grep utilisateur | awk '{print$2}'
le résultat est cohérent, c'est à dire qu'un utilisateur non connecté n'apparait pas et un
utilisateur connecté apparait bien
Lorsque je l'utilise avec les lignes ajoutées dans le smb.conf, il n'y a plus moyen de se connecter,
le résultat dans les logs est toujours le même :
[2005/01/04 11:13:27, 1] smbd/service.c:make_connection_snum(616)
root preexec gave 1 - failing connection

quelque soit l'état d'un utilisateur (connecté ou non) le retour de preexec donne 1

quelqu'un peut t'il me renseigner
d'avance merci

4 réponses

Avatar
Bruno Patri
j'ai repompé sur internet un script permettant de tester si un
utilisateur est déjà connecté :


resultat=$(/usr/local/samba/bin/net status sessions |grep $1 | awk
'{print$2}')
if [ "X${resultat}" == X ]; then
exit 0
else
exit 1
fi



dans le smb.conf au niveau du partage home j'ai rajouté les lignes
suivantes :
[home]
root preexec = /usr/local/samba/bin/check-session %u
root preexec close = yes

lorsque je teste le script en dehors de samba, c'est à dire que je lance
la commande :
/usr/local/samba/bin/net status sessions |grep utilisateur | awk
'{print$2}'
le résultat est cohérent, c'est à dire qu'un utilisateur non connecté
n'apparait pas et un utilisateur connecté apparait bien
Lorsque je l'utilise avec les lignes ajoutées dans le smb.conf, il n'y a
plus moyen de se connecter, le résultat dans les logs est toujours le
même :
[2005/01/04 11:13:27, 1] smbd/service.c:make_connection_snum(616)
root preexec gave 1 - failing connection

quelque soit l'état d'un utilisateur (connecté ou non) le retour de
preexec donne 1


Une question, que se passe -t-il en enlevant la directive root preexec
close = yes ?

--
Bruno

Avatar
Pascal Legrand
-------- Message original --------

j'ai repompé sur internet un script permettant de tester si un
utilisateur est déjà connecté :


resultat=$(/usr/local/samba/bin/net status sessions |grep $1 | awk
'{print$2}')
if [ "X${resultat}" == X ]; then
exit 0
else
exit 1
fi



dans le smb.conf au niveau du partage home j'ai rajouté les lignes
suivantes :
[home]
root preexec = /usr/local/samba/bin/check-session %u
root preexec close = yes

lorsque je teste le script en dehors de samba, c'est à dire que je lance
la commande :
/usr/local/samba/bin/net status sessions |grep utilisateur | awk
'{print$2}'
le résultat est cohérent, c'est à dire qu'un utilisateur non connecté
n'apparait pas et un utilisateur connecté apparait bien
Lorsque je l'utilise avec les lignes ajoutées dans le smb.conf, il n'y a
plus moyen de se connecter, le résultat dans les logs est toujours le
même :
[2005/01/04 11:13:27, 1] smbd/service.c:make_connection_snum(616)
root preexec gave 1 - failing connection

quelque soit l'état d'un utilisateur (connecté ou non) le retour de
preexec donne 1


Une question, que se passe -t-il en enlevant la directive root preexec
close = yes ?

l'idée étant d'empêcher un utilisateur de se connecter plusieurs fois simultanément sur le serveur à

partir de plusieurs postes, si j'enlève root preexec close = yes, je n'ai plus cette fonctionalité.
Normalement le script test si l'utilisateur est déjà connecté s'il ne l'est pas il renvoit "0" donc
il peut se connecter, s'il l'est le script renvoit "1" et l'utilisateur est rejeté.
Merci pour votre réponse


Avatar
Bruno patri


-------- Message original --------


j'ai repompé sur internet un script permettant de tester si un
utilisateur est déjà connecté :


resultat=$(/usr/local/samba/bin/net status sessions |grep $1 | awk
'{print$2}')
if [ "X${resultat}" == X ]; then
exit 0
else
exit 1
fi



dans le smb.conf au niveau du partage home j'ai rajouté les lignes
suivantes :
[home]
root preexec = /usr/local/samba/bin/check-session %u
root preexec close = yes

lorsque je teste le script en dehors de samba, c'est à dire que je
lance la commande :
/usr/local/samba/bin/net status sessions |grep utilisateur | awk
'{print$2}'
le résultat est cohérent, c'est à dire qu'un utilisateur non connecté
n'apparait pas et un utilisateur connecté apparait bien
Lorsque je l'utilise avec les lignes ajoutées dans le smb.conf, il
n'y a plus moyen de se connecter, le résultat dans les logs est
toujours le même :
[2005/01/04 11:13:27, 1] smbd/service.c:make_connection_snum(616)
root preexec gave 1 - failing connection

quelque soit l'état d'un utilisateur (connecté ou non) le retour de
preexec donne 1



Une question, que se passe -t-il en enlevant la directive root preexec
close = yes ?

l'idée étant d'empêcher un utilisateur de se connecter plusieurs fois

simultanément sur le serveur à partir de plusieurs postes, si j'enlève
root preexec close = yes, je n'ai plus cette fonctionalité.
Normalement le script test si l'utilisateur est déjà connecté s'il ne
l'est pas il renvoit "0" donc il peut se connecter, s'il l'est le script
renvoit "1" et l'utilisateur est rejeté.
Merci pour votre réponse


Ok, je comprends l'idée ;-)
Le probleme c'est que si un utilisateur machin ouvre une session sur un
poste du domaine, il est compté comme connecté une fois par net status
sessions. Si en plus son repertoire /home/machin est mappé comme lecteur
réseau cela fait une seconde connexion. Connexion qui est refusée par
les directives placées dans la section [home].
Autrement dit dans cette situation machin peut ouvrir autant de sessions
qu'il veut sur les postes du domaine par contre il n'aura jamais accès a
son repertoire /home/machin.
Il faudrait essayer de mettre ces directives dans la section [global] et
tester. En principe un utilisateur ne devrait pouvoir ouvrir qu'une
session sur un poste.

--
Bruno



Avatar
Pascal Legrand
Ok, je comprends l'idée ;-)
Le probleme c'est que si un utilisateur machin ouvre une session sur un
poste du domaine, il est compté comme connecté une fois par net status
sessions. Si en plus son repertoire /home/machin est mappé comme lecteur
réseau cela fait une seconde connexion. Connexion qui est refusée par
les directives placées dans la section [home].
Autrement dit dans cette situation machin peut ouvrir autant de sessions
qu'il veut sur les postes du domaine par contre il n'aura jamais accès a
son repertoire /home/machin.
Il faudrait essayer de mettre ces directives dans la section [global] et
tester. En principe un utilisateur ne devrait pouvoir ouvrir qu'une
session sur un poste.



net status sessions ne renvoie qu'une ligne par utilisateur quelques soient le nombre de partages
montés.
Le problème est plutôt que quelque soit l'état de l'utilisateur (connecté ou non), l'option preexec
renvoit toujours 1.
De plus apparemment samba "coupe" la session de temps en temps (on le visualise sur l'explorateur
par une petite croix rouge sur le disque mappé).
Donc je ne suis pas vraiment sur la bonne voie pour limiter le nombre de connexion par utilisateurs