[AlternC-dev] [bug] connexion ftp impossible après l'installation

Retour à l'archive de la liste
Le site d'AlternC
Google Custom Search

Jonathan jonathan at globenet.org
Mer 29 Avr 12:06:25 CEST 2015


Salut,

Désolé j'ai pas accès au bugtracker (ou je sais plus comment on fait),
donc je mets les détails ici.

En résumé sur une installation toute fraiche de la version 3.2.4 je me
suis retrouvé avec une table alternc.variable remplie de doublons, ce
qui fait planter la requête utilisée par proftpd à la connexion. Le
problème se résout simplement en supprimant les lignes surnuméraires.

J'ai installé deux alternc en même temps hier et seul l'un des deux m'a
posé ce problème ...


Symptomes :

Impossibilité de se connecter en ftp.

proftpd.log :
  avril 29 10:40:50 myserver proftpd[27919] 127.0.1.1 (192.0.2.208[163.173.
  12.208]): FTP session opened.
  avril 29 10:40:54 myserver proftpd[27919] 127.0.1.1 (192.0.2.208[163.173.
  12.208]): mod_sql/4.3: unrecoverable backend error: (1242) Subquery returns mo
  e than 1 row
  avril 29 10:40:54 myserver proftpd[27919] 127.0.1.1 (192.0.2.208[163.173.
  12.208]): mod_sql/4.3: check the SQLLogFile for more details
  avril 29 10:40:54 myserver proftpd[27919] 127.0.1.1 (192.0.2.208[163.173.
  12.208]): FTP session closed.

sql.log :
  avril 29 10:40:50 mod_sql/4.3[27919]: defaulting to 'mysql' backend
  avril 29 10:40:50 mod_sql/4.3[27919]: backend module 'mod_sql_mysql/4.0.8'
  avril 29 10:40:50 mod_sql/4.3[27919]: backend api    'mod_sql_api_v1'
  avril 29 10:40:50 mod_sql/4.3[27919]: >>> sql_sess_init
  avril 29 10:40:50 mod_sql/4.3[27919]: entering  mysql cmd_defineconnection
  avril 29 10:40:50 mod_sql/4.3[27919]:   name: 'default'
  avril 29 10:40:50 mod_sql/4.3[27919]:   user: 'sysusr'
  avril 29 10:40:50 mod_sql/4.3[27919]:   host: '127.0.0.1'
  avril 29 10:40:50 mod_sql/4.3[27919]:     db: 'alternc'
  avril 29 10:40:50 mod_sql/4.3[27919]:   port: '3306'
  avril 29 10:40:50 mod_sql/4.3[27919]:    ttl: '0'
  avril 29 10:40:50 mod_sql/4.3[27919]: exiting   mysql cmd_defineconnection
  avril 29 10:40:50 mod_sql/4.3[27919]: connection 'default' successfully established
  avril 29 10:40:50 mod_sql/4.3[27919]: mod_sql engine     : on
  avril 29 10:40:50 mod_sql/4.3[27919]: negative_cache     : off
  avril 29 10:40:50 mod_sql/4.3[27919]: authenticate       : users
  avril 29 10:40:50 mod_sql/4.3[27919]: usertable          : ftpusers
  avril 29 10:40:50 mod_sql/4.3[27919]: userid field       : name
  avril 29 10:40:50 mod_sql/4.3[27919]: password field     : encrypted_password
  avril 29 10:40:50 mod_sql/4.3[27919]: UID field          : uid
  avril 29 10:40:50 mod_sql/4.3[27919]: GID field          : uid
  avril 29 10:40:50 mod_sql/4.3[27919]: homedir field      : homedir
  avril 29 10:40:50 mod_sql/4.3[27919]: shell field        : NULL
  avril 29 10:40:50 mod_sql/4.3[27919]: SQLMinUserUID      : 33
  avril 29 10:40:50 mod_sql/4.3[27919]: SQLMinUserGID      : 33
  avril 29 10:40:50 mod_sql/4.3[27919]: <<< sql_sess_init
  avril 29 10:40:54 mod_sql/4.3[27919]: >>> sql_pre_pass
  avril 29 10:40:54 mod_sql/4.3[27919]: <<< sql_pre_pass
  avril 29 10:40:54 mod_sql/4.3[27919]: >>> cmd_getpwnam
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: MySQL client version: 5.5.43
  avril 29 10:40:54 mod_sql/4.3[27919]: MySQL server version: 5.5.43-0+deb7u1
  avril 29 10:40:54 mod_sql/4.3[27919]: MySQL connection character set now 'utf8' (from 'UTF-8')
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' opened
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: cache miss for user 'login_ftp'
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_escapestring
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_select
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 2
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_open
  avril 29 10:40:54 mod_sql/4.3[27919]: query "SELECT name, encrypted_password, uid, uid, homedir FROM ftpusers WHERE (name='login_ftp') AND ((( enabled = true and true in ( select if(count(*)>0,false,(select value from variable where name='auth_ip_ftp_default_yes')) from authorised_ip_affected aia, ftpusers f where cast(aia.parameters as signed integer)=f.id and f.name='login_ftp'UNION select   ifnull(inet_aton('192.0.2.208'),inet_aton6('192.0.2.208'))     between ifnull(inet_aton(ip),inet_aton6(ip))     and  ifnull( inet_aton(ip) + if(subnet=32,0,conv( lpad('',(32-subnet),'1'), 2 , 10)) ,   inet_aton6(ip) + conv( lpad('',(128-subnet),'1'), 2 , 10)  ) from authorised_ip ai, authorised_ip_affected aia, ftpusers f where f.name='login_ftp' and cast(aia.parameters as signed integer)=f.id  and ai.id=aia.authorised_ip_id and aia.protocol='ftp' UNION select   ifnull(inet_aton('192.0.2.208'),inet_aton6('192.0.2.208'))     between ifnull(inet_aton(ip),inet_aton6(ip)
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 1
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_select
  avril 29 10:40:54 mod_sql/4.3[27919]: unrecoverable backend error
  avril 29 10:40:54 mod_sql/4.3[27919]: error: '1242'
  avril 29 10:40:54 mod_sql/4.3[27919]: message: 'Subquery returns more than 1 row'
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_exit
  avril 29 10:40:54 mod_sql/4.3[27919]: entering  mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' closed
  avril 29 10:40:54 mod_sql/4.3[27919]: connection 'default' count is now 0
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_close
  avril 29 10:40:54 mod_sql/4.3[27919]: exiting   mysql cmd_exit


Côté mysql :

  mysql> select * from variable where name='auth_ip_ftp_default_yes';
  +----+-------------------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+-----------+------+
  | id | name                    | value | comment                                                                                                                                                                                 | strata  | strata_id | type |
  +----+-------------------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+-----------+------+
  | 23 | auth_ip_ftp_default_yes | 1     | This variable set if you want to allow all IP address to access FTP by default. If the user start to define some IP or subnet in the allow list, only those he defined will be allowed. | DEFAULT |      NULL | NULL |
  | 52 | auth_ip_ftp_default_yes | 1     | NULL                                                                                                                                                                                    | DEFAULT |      NULL | NULL |
  | 81 | auth_ip_ftp_default_yes | 1     | NULL                                                                                                                                                                                    | DEFAULT |      NULL | NULL |
  +----+-------------------------+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+-----------+------+
  3 rows in set (0.00 sec)

La sous requête "select value from variable where name='auth_ip_ftp_default_yes'" retourne donc bien plusieurs variables.

Si on supprimes les variables qui semblent en trop :

  mysql> delete from variable where id=81;
  Query OK, 1 row affected (0.00 sec)

  mysql> delete from variable where id=52;
  Query OK, 1 row affected (0.00 sec)

  mysql>

Tout refonctionne.

Le souci vient donc du fait que plusieurs lignes de la table 'variables'
peuvent avoir le même nom. Est-ce qu'il ne faudrait pas demander à ce que le
champ 'name' soit unique ?

-- 
Jonathan


Plus d'informations sur la liste de diffusion Dev