Topic: Déconnexion lors de l'accès à un dossier

Bonjour,

il y a quatre ans, j'avais signalé ici :
http://mysecureshell.free.fr/forum/viewtopic.php?id=84
un problème de déconnexion intempestive qui a été résolu (merci).

Je rencontre aujourd'hui quelque chose d'analogue sur le même serveur, qui a un peu évolué
(debian squeeze, MSS 1.30), mais avec une configuration très proche : passwd/group/ shadow sur LDAP via nslcd
et config MSS

<Default>
        GlobalDownload                  8M
        GlobalUpload                    8M
        Download                        2M
        Upload                          2M
        Home                           /home
        StayAtHome                     true
        HideNoAccess                   true
        IgnoreHidden                   false
        LimitConnectionByIP            40
        VirtualChroot                  false
        ShowLinksAsLinks               false
        ResolveIP                      false
        ConnectionMaxLife              6h
        IdleTimeOut                    10800
        LimitConnectionByUser          10
        LimitConnection                100
        MinimumRights                  0440 1750
        MaximumRights                  0664 1775
        Charset                        UTF8
</Default>

Depuis quelques semaines, plusieurs utilisateurs me signalent ne pas pouvoir accéder à certains dossiers, cela avec plusieurs OS et clients différents. Par exemple avec Windows 7 / WinSCP, on a le message suivant

Déconnexion inattendue Résultat de la commande sur le serveur exit 128

et c'est analogue avec MacOSX et Filezilla.
Curieusement, beaucoup d'utilisateurs n'ont aucun problème, certains en ont parfois et pour quelques-uns, c'est systématique. Encore plus bizarre, personne ne se plaignait il y a quelques semaines et pourtant aucune mise à jour n'est passée par là. Il n'y a rien côté logs de MSS, si ce n'est que le client redemande une connexion.

Je penche vraiment pour un bug MSS, car en donnant (provisoirement) un shell sh et bash, le problème a bien l'air de disparaître.
En fait, il semble que la déconnexion soit liée non pas au changement de répertoire, mais plutôt à son listing, car il est possible de le reproduire via sftp en ligne de commande :

sftp> cd Perso
sftp> ls
Connection closed

Plus spécifiquement, j'ai l'impression que le plantage est lié à la vérification des droits (cf. HideNoAccess true), car il se produit quand on accède à un dossier contenant beaucoup de fichiers/dossiers avec beaucoup de propriétaires/groupes différents. Par exemple dans la séquence précédente, le dossier Perso contient 2447 dossiers personnels (avec donc 2447 propriétaires différents).

Je comprends que mes indications sont sans doute un peu trop vagues, mais j'ai bien du mal à être plus précis !
Merci de votre aide.

2 (edited by teka 2012-11-25 20:08:55)

Re: Déconnexion lors de l'accès à un dossier

Bonsoir,

Nan le descriptif est assez complet (surtout sans outil particulier...).

Je vais essayer de reproduire le soucis dès que j'aurais un peu de temps pour créer 2500 utilisateurs / home.

Je réponds dès que j'en sais plus smile

---

Bon après test, je n'ai pas de soucis.

Je pourrais avoir le résultat de la commande "MySecureShell --configtest" depuis l'utilisateur qui pose problème.

Sinon pour les répertoires, j'ai recréer ça :

total 10072
drwxr-xr-x 2501 test     test     69632 nov.  25 19:40 ./
drwxr-xr-x    7 test     test      4096 nov.  25 19:25 ../
drwxr-x--x    2 test10   test10    4096 nov.  25 19:40 test10/
drwxr-x--x    2 test100  test100   4096 nov.  25 19:40 test100/
drwxr-x--x    2 test1000 test1000  4096 nov.  25 19:40 test1000/
drwxr-x--x    2 test1001 test1001  4096 nov.  25 19:40 test1001/
drwxr-x--x    2 test1002 test1002  4096 nov.  25 19:40 test1002/
drwxr-x--x    2 test1003 test1003  4096 nov.  25 19:40 test1003/
drwxr-x--x    2 test1004 test1004  4096 nov.  25 19:40 test1004/
drwxr-x--x    2 test1005 test1005  4096 nov.  25 19:40 test1005/
drwxr-x--x    2 test1006 test1006  4096 nov.  25 19:40 test1006/
drwxr-x--x    2 test1007 test1007  4096 nov.  25 19:40 test1007/
drwxr-x--x    2 test1008 test1008  4096 nov.  25 19:40 test1008/
drwxr-x--x    2 test1009 test1009  4096 nov.  25 19:40 test1009/
drwxr-x--x    2 test101  test101   4096 nov.  25 19:40 test101/
drwxr-x--x    2 test1010 test1010  4096 nov.  25 19:40 test1010/
drwxr-x--x    2 test1011 test1011  4096 nov.  25 19:40 test1011/
drwxr-x--x    2 test1012 test1012  4096 nov.  25 19:40 test1012/
drwxr-x--x    2 test1013 test1013  4096 nov.  25 19:40 test1013/
drwxr-x--x    2 test1014 test1014  4096 nov.  25 19:40 test1014/
drwxr-x--x    2 test1015 test1015  4096 nov.  25 19:40 test1015/
...

Est-ce que je suis assez près de votre cas ? Il y a des droits ACLs sur le filesystem ? Peut-être que juste les ACLs sont actifs sur la partitions ?

Re: Déconnexion lors de l'accès à un dossier

Bonjour,

Pour "MySecureShell --configtest" ça donne

GlobalDownload        = 8388608 bytes/s
GlobalUpload          = 8388608 bytes/s
Download              = 2097152 bytes/s
Upload                = 2097152 bytes/s
StayAtHome            = true
VirtualChroot         = false
LimitConnection       = 100
LimitConnectionByUser = 10
LimitConnectionByIP   = 40
Home                  = /home
ResolveIP             = false
IdleTimeOut           = 10800s
IgnoreHidden          = false
HideNoAccess          = true
ShowLinksAsLinks      = false
SftpProtocol          = {default}
LogFile               = {default}
ConnectionMaxLife     = 21600s
Charset               = UTF8
CanChangeRights       = true
CanChangeTime         = true
MinimumRights         = 0440 1750
MaximumRights         = 0664 1775
ApplyFileSpec         = {default}
Config is valid.

mais je ne peux pas lancer la commande depuis un utilisateur avec shell MSS ??

Pour les répertoires, c'est de ce genre-là. mais avec des droits 700 sur chaque dossier. J'ai fait un peu de ménage sur le serveur et il n'y a plus que 1900 utilisateurs/dossiers et ça ne change rien. Et la déconnexion se produit aussi lors du listing de dossiers beaucoup moins remplis. J'ai bien peur que ce ne soit lié à la récupération des infos LDAP pour établir les droits d'accès.

Pas d'utilisation d'ACLs. Je ne sais pas exactement commenr vérifier si "les ACLs sont actifs sur la partition".

Le problème semble en plus s'étendre à de nouveaux utilisateurs... et la situation est critique. Personnelement, je peux reproduire la déconnexion à 100% en ligne de commande via sftp, mais ne constate rien d'anormal avec nautilus.

Voulez-vous que je vous ouvre un compte pour que vous constatiez de vous-même ?

Re: Déconnexion lors de l'accès à un dossier

Bonjour,


Alors pour répondre à certains points:

1/ Pour tester la commande avec un utilisateur MSS, je propose (sous Ubuntu):

sudo su -s "/bin/bash" -c "/bin/MySecureShell --configtest" -l utilisateur_mss

2/ Pour la partition des ACLs, chez moi c'est une option de "mount"; extrait de "mount" (sur mon pc)

/dev/sda5 on /home type ext4 (rw,acl)

3/ L'idéal pour avancer, ça serait d'avoir un dump sur une version de debug, mais sur un serveur de production je doute un peu sad

Est-il possible d'avoir accès à une copie du serveur ?

Je réfléchit à une solution à notre histoire :-/

5 (edited by teka 2012-12-03 16:36:48)

Re: Déconnexion lors de l'accès à un dossier

Bonjour,


Alors pour répondre à certains points:

1/ Pour tester la commande avec un utilisateur MSS, je propose (sous Ubuntu):

sudo su -s "/bin/bash" -c "/bin/MySecureShell --configtest" -l utilisateur_mss

2/ Pour la partition des ACLs, chez moi c'est une option de "mount"; extrait de "mount" (sur mon pc)

/dev/sda5 on /home type ext4 (rw,acl)

3/ L'idéal pour avancer, ça serait d'avoir un dump sur une version de debug, mais sur un serveur de production je doute un peu sad

Est-il possible d'avoir accès à une copie du serveur ?

Je réfléchit à une solution à notre histoire hmm


---

Toujours impossible à reproduire sous Debian, ni Ubuntu... sûrement lié à l'utilisation de LDAP sad

Re: Déconnexion lors de l'accès à un dossier

teka wrote:

1/ Pour tester la commande avec un utilisateur MSS, je propose (sous Ubuntu):

sudo su -s "/bin/bash" -c "/bin/MySecureShell --configtest" -l utilisateur_mss

Pas mal ! Je crois bien que j'obtiens la même chose :

GlobalDownload        = 8388608 bytes/s
GlobalUpload          = 8388608 bytes/s
Download              = 2097152 bytes/s
Upload                = 2097152 bytes/s
StayAtHome            = true
VirtualChroot         = false
LimitConnection       = 100
LimitConnectionByUser = 10
LimitConnectionByIP   = 40
Home                  = /home
ResolveIP             = false
IdleTimeOut           = 10800s
IgnoreHidden          = false
HideNoAccess          = true
ShowLinksAsLinks      = false
SftpProtocol          = {default}
LogFile               = {default}
ConnectionMaxLife     = 21600s
Charset               = UTF8
CanChangeRights       = true
CanChangeTime         = true
MinimumRights         = 0440 1750
MaximumRights         = 0664 1775
ApplyFileSpec         = {default}
Config is valid.
teka wrote:

2/ Pour la partition des ACLs, chez moi c'est une option de "mount"; extrait de "mount" (sur mon pc)

/dev/sda5 on /home type ext4 (rw,acl)

Le serveur est dans une machine virtuelle OpenVZ, mais pas de trace d'ACL ni dans la VM, ni dans la machine physique.

teka wrote:

3/ L'idéal pour avancer, ça serait d'avoir un dump sur une version de debug, mais sur un serveur de production je doute un peu sad
Est-il possible d'avoir accès à une copie du serveur ?

Humm... Faire  un compte avec shell MSS sur la machine de production est très simple, mais pour une copie du serveur, ça ne se fait pas en 30 secondes, il faut moi aussi que j'y réfléchisse...

Re: Déconnexion lors de l'accès à un dossier

Donc ça confirme bien que cela se situe plus de côté lié à LDAP...

Après je me doute qu'on ne fait pas une copie comme ça smile

Re: Déconnexion lors de l'accès à un dossier

Bonsoir,

du nouveau sur ce problème... J'ai demandé à des utilisateurs de déclencher la déconnexion intempestive et en faisant en même temps sur le serveur

ps faux

j'ai eu la surprise de lire ça :

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mss_user 18610 99.8  0.0   3532   876 ?        Rs   Nov24 12970:32 MySecureShell -c /usr/lib/openssh/sftp-server -u 0002

Trois choses m'étonnent :

  • Le processeur à 100% ! J'ai fait un kill -9 au bout de 10 minutes pour en sortir.

  • Le START/TIME remontant à 8 jours, alors que l'utilisateur venait juste de se connecter.

  • Le fait que le processsus MSS ne soit pas (comme je le vois habituellement) un processus fils de sshd.

Sinon, j'ai monté une copie du serveur et un utilisateur y a recréé le bug. Je vois envoie plus de précisions par mail privé.

Re: Déconnexion lors de l'accès à un dossier

Ça devait être un vieux processus MySecureShell qui a survécu à une déconnexion...

Mais qui était le processus père ?