[RESOLU] MYSQL & CHROOT pb configuration

Salutation tout le monde!
(g pas vu ca dans les postes, et pas trouvé de docs qui regle mon pb)

J’ai déjàs eprisonné apache2…mais mysql c’est une autre paire de manche…
la prison a été faites avec makejail, en ajoutant le package mysql-server-4.1, le dev/null, les libs manquantes, et diverses autres indispenssables… J’ai juste un probleme de configuration. Et comme je ne sait absolument pas comment fonctionne en dure mysql, je suis noyé, et j’ai du reinstaller trois foi mysql avant de comprendre qu’il vaut mieux sauver ses fichier de conf avant de les bidouiller. :blush:

Bref me voivci avec une prison…des fichiers de conf initiaux qui tourne hors de le prison…mais… des que je décommente dans my.cnf:

chroot=/chroot/mysql

[quote]root /chroot/mysql/etc/mysql>/etc/init.d/mysql start
Starting MySQL database server: mysqld…failed.
Please take a look at the syslog.
/usr/bin/mysqladmin: connect to server at ‘localhost’ failed
error: 'Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)'
Check that mysqld is running and that the socket: ‘/var/run/mysqld/mysqld.sock’ exists!
[/quote]

[quote]tail /var/log/syslog
Jun 1 20:11:11 dominfo mysqld[1238]: 060601 20:11:11 [ERROR] Aborting
Jun 1 20:11:11 dominfo mysqld[1238]:
Jun 1 20:11:11 dominfo mysqld[1238]: 060601 20:11:11 [Note] /usr/sbin/mysqld: Shutdown complete
Jun 1 20:11:11 dominfo mysqld[1238]:
Jun 1 20:11:11 dominfo mysqld_safe[1240]: ended
Jun 1 20:11:17 dominfo /etc/init.d/mysql[1303]: 0 processes alive and ‘/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping’ resulted in
Jun 1 20:11:17 dominfo /etc/init.d/mysql[1303]: ^G/usr/bin/mysqladmin: connect to server at ‘localhost’ failed
Jun 1 20:11:17 dominfo /etc/init.d/mysql[1303]: error: 'Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)'
Jun 1 20:11:17 dominfo /etc/init.d/mysql[1303]: Check that mysqld is running and that the socket: ‘/var/run/mysqld/mysqld.sock’ exists!
Jun 1 20:11:17 dominfo /etc/init.d/mysql[1303]:
[/quote]
c’est la panique a bord, mysql ne se lance pas, et myadmin perd le socket…bhouhouuuuu comment qu’faut faire pour my.conf et init.d/mysql?
please

pour info, avant d’aller plus loin, c’est quoi le tuto que tu as suivi pour l’install de mysql ?
et c’est quoi ce chroot/ ?

les tuto que j’ai trouvé sont pour BSD, REDHAT et autre…rien pour ma debianouette…

[ul]
securityfocus.com/infocus/1726
security.linux.com/security/04/0 … d=2&tid=74
cgsecurity.org/Articles/mysql.html
[/ul]

alors avec ca si ca marche po…je ne vois pas…

le /chroot, c’est une partition que j’ai monté specialement pour acceuillir les prisons logique pour les application ouverte vers l’exterieur (chrooté). normalement c’est /var/chroot mais ca me plait pas ^^…et de toute facon ca change rien ca se configure.

bon j’ai bidouillé deux trois trucs…
apparement c’est le service des log mysql-bin.1 qui manque au démarrage…j’ai mis en commentaire les lignes du my.cnf qui correspondent. et le service demarre( mais init.d/mysql note “…failed”), me reste plus qu’a trouver comment modifier init.d/mysql afin qu’il demmarre les test “myadmin” dans la prison pour qu’il puisse trouver le socket. qui existe et est bien placé. sans compté le fait qu’il faut aussi que “init.d/mysql stop” fonctionne…
si ca marche je poste le my.cnf et le init.d/mysql ici…

par contre j’ai un pid /var/lib/mysql/.pid
c’est quoi son histoire au /.pid ? c quoi se délirium… ^^ ?

Les bonnes volontés sont les bienvenues avec leurs eventuels config…
pour me faire une idée plus juste de la chose a faire.

Je viens d’installer mysql-server en local pour developper un site web distant et donc faire des tests en local d’abord.
L’idée du chroot m’interesse, à la limite je pourrai laisser mysql en local si il est chrooté.
Je l’ai fait sur ssh sans tutos en m’aidant de ldd et de strace -f , ca m’a pris 1h.

C’est pas la même chose, sql c’est plus compliqué mais ces deux commandes devraient bien aider.

Ze vais regarder ca

je ne sais pas trop comment resoudre le pb, mais il me semble que si tu fais un chroot dans /chroot/mysql, il va tenter de créer son socket dans /chroot/mysql/var/run/mysqld/mysqld.sock (dans son chroot, c’est bien /var/run/mysqld/mysqld.sock).
Si tu n’as pas fait un mkhierdir /chroot/mysql/var/run/mysqld, et si tu n’as pas les bons droits dessus…
Par ailleurs, une fois mysql demarré, mysqladmin, c’est pareil: si tu ne le lance pas en chroot, il faut lui preciser ou il doit aller chercher son socket.

(pour chrooter avec une deb, y a un outils genial (mais pas fini), c’est makejail, tu l’obtient avec apt-get…par contre il te faut faire des modification dans les fichier exemple “.py” pour configurer les packages et les fichiers a copier. je fait une doc en parallelle de mon etude de la mise en place mysql chrooté et apache zossi d’ailleurs)…je la mettrait en ligne des que c’est réglé.
j’ai juste un probleme de config et ca m’ennerve, creer la prison c apma prit 5 minutes, la config au bout de 7 jours j’y suis encore…

statut: le demon mysqld demmarre convenablement dans sa prison une foi ce systeme de log retiré

# log-bin                     = /var/log/mysql/mysql-bin.log
# max_binlog_size         = 104857600

peut être devrais je pour corriger ceci changer le path en /chroot/mysql/…(nan ca marche po)

Jun  2 16:50:19 dominfo mysqld[3933]: ^G/usr/sbin/mysqld: File '/var/log/mysql/mysql-bin.1' not found (Errcode: 13)
Jun  2 16:50:19 dominfo mysqld[3933]: 060602 16:50:19 [ERROR] Could not use /var/log/mysql/mysql-bin for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
Jun  2 16:50:19 dominfo mysqld[3933]: 060602 16:50:19 [ERROR] Aborting
Jun  2 16:50:19 dominfo mysqld[3933]:
Jun  2 16:50:19 dominfo mysqld[3933]: 060602 16:50:19 [Note] /usr/sbin/mysqld: Shutdown complete

Ca a le merite d’être clair…je le retir j’usqu’a se que l’on me dise a quoi sert se truc et comment on le refait fonctionner.

Voici les erreurs affichés:

root ~>/etc/init.d/mysql start
Starting MySQL database server: mysqld.
Checking for crashed MySQL tables in the background.
root ~>/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

et le syslog…

se qui est en soit un progres… le start et le stop fonctionnent , j’approche de l’instant de grâce…et des doigts de pieds en eventail sur du sable chaud, carressé par une brise revigorante…l’ecume marin dans les narines…^^

Et si tu changes le chemin du socket dans le my.cnf ?

déjas essayé, en fait c’est pas mysqld qui genere cette erreur, c’est les test effectué avec mysqdadmin dans init.d/mysql… il ne tient pas compte de laprison et recherche un pid en dehors de la prison…

mais un liens symbolique entre /chroot/mysql/var/run/mysqld/mysqld.pid et /ver/run/mysqld/mysqd.pid pourrait regler le probleme… j’ai tester avec un lien autre, le fichier disparue le lien est cassé, mais si il réapparait le lien est denouveau actif…c magique ^^ hop on contourne le pb… mais evidement…ca marche po avec les socket et les pid…

quote="megs"
statut: le demon mysqld demmarre convenablement dans sa prison une foi ce systeme de log retiré

# log-bin                     = /var/log/mysql/mysql-bin.log
# max_binlog_size         = 104857600

peut être devrais je pour corriger ceci changer le path en /chroot/mysql/…(nan ca marche po)

Jun  2 16:50:19 dominfo mysqld[3933]: ^G/usr/sbin/mysqld: File '/var/log/mysql/mysql-bin.1' not found (Errcode: 13)
Jun  2 16:50:19 dominfo mysqld[3933]: 060602 16:50:19 [ERROR] Could not use /var/log/mysql/mysql-bin for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
Jun  2 16:50:19 dominfo mysqld[3933]: 060602 16:50:19 [ERROR] Aborting
Jun  2 16:50:19 dominfo mysqld[3933]:
Jun  2 16:50:19 dominfo mysqld[3933]: 060602 16:50:19 [Note] /usr/sbin/mysqld: Shutdown complete

Ca a le merite d’être clair…je le retir j’usqu’a se que l’on me dise a quoi sert se truc et comment on le refait fonctionner.
(…)[/quote]à obtenir le détail de ton execution de mysql. tu as pensé à créer /chroot/mysql/var/log/mysql/, à donner les bons droits d’ecriture pour que le process mysql puisse gèrer les fichier dedans ?
Tu y a recopié ce que tu trouvais dans /var/log/mysql/ ?

Et /var/run/mysqld/mysqld.sock existe t’il, alors dans le chroot ?

[quote=“megs”]

mais un liens symbolique entre /chroot/mysql/var/run/mysqld/mysqld.pid et /ver/run/mysqld/mysqd.pid pourrait regler le probleme… j’ai tester avec un lien autre, le fichier disparue le lien est cassé, mais si il réapparait le lien est denouveau actif…c magique ^^ hop on contourne le pb…[/quote]

Ca peut pas marcher ca, un lien qui sort de ta prison, il faut que tu fasse un mount -o bind qui fait pointer /chroot/mysql/var/run/mysqld/ vers /ver/run/mysqld/

[quote=“BorisTheButcher”][quote=“megs”]

mais un liens symbolique entre /chroot/mysql/var/run/mysqld/mysqld.pid et /ver/run/mysqld/mysqd.pid pourrait regler le probleme… j’ai tester avec un lien autre, le fichier disparue le lien est cassé, mais si il réapparait le lien est denouveau actif…c magique ^^ hop on contourne le pb…[/quote]

Ca peut pas marcher ca, un lien qui sort de ta prison, il faut que tu fasse un mount -o bind qui fait pointer /chroot/mysql/var/run/mysqld/ vers /ver/run/mysqld/[/quote]
+1, je suis cretin:mount --bind /var/run/mysqld/ /chroot/mysql/var/run/mysqld/

oky, pour les log, c’est vrais dasn mon elant j’ai pas coopier le rep avec les droits… j’ai du faire un cp -Rf standard… j’ai repassé un “cp -Rf --preserve=mode,ownership [source] [destination]” et maintenant ca marche en retablissant la fonction dans le my.cnf.
merci infiniment d’avoir mis le doigt sur mon aveuglement…

pour le mount je fait le nécéssaire merci aussi…

Je n’ai pas tout lu le post mais rapidement, dans le cas de mysql, il y a des communications par port et par socket. Pour les ports, cela ne posera pas de pbms, mais pour les sockets, veille à monter en bind les repertoires où les sockets sont crées. Au pire, tu peux toujours installer un debootstrap minimal avec mysql dedans et monter en «bind» les repertoires de communications.

je viens d emonter en bind(par init.d) le repertoire /var/run/mysql sur la prison, du coup au démarrage mysqladmin trouve le socket et tout le monde est content a bord…

bonne idée le bind, je n’y pense pas assez souvent…
je vais faire de même pour le repertoire de la BDD, de cette facon je pourrait y acceder avec webmin… c impec ca…

sinon je vais faire une doc pour ceux que ca interresse… je la posterais a la suite. il y aurrat surement plein de fautes. mais le monde n’est pas parfait.

quote="megs"
bonne idée le bind, je n’y pense pas assez souvent…[/quote]Oui, mais fondamentalement, le chroot a pour but d’isoler. Si on commence à faire des trous dans cette cage, c’est plus une cage :wink:[quote=“megs”]je vais faire de même pour le repertoire de la BDD, de cette facon je pourrait y acceder avec webmin… c impec ca…[/quote]Dis moi: installer les démons en chroot, et utiliser webmin, c’est pas trés cohérent :laughing: J’éspère au moins que tu démarres ton webmin manuellement.[quote=“megs”]sinon je vais faire une doc pour ceux que ca interresse… je la posterais a la suite. il y aurrat surement plein de fautes. mais le monde n’est pas parfait.[/quote]Merci d’avance. La section “Trucs et Astuces” te tend les bras.

piour webmin c’est essentiellement pour configurer le firewall iptables… je ne sait pas encore m’en servir correctement en ligne de commande…alors j’ai foutu webmin, accessible uniquement par une seule ip du reseau local…la mienne… et oui je ne le lance uniquement quand j’en ai besoin ^^…
j’ai déjas fait l’erreur de lancer une deb avec un serveur counterstrike source sans firewall (avec Xserver et export display possible), et bizarrement j’ai eu un urilisateur inaccessible, puis un autre…
puis tout a coup le root n’existe plus ^^… j’ai compris la lecon…y a une vingtaine de ligne dans les services actifs (ps-e) juste le nécéssaire ^^…

mais chose étrange une foi mon apache2 chrooté est tombé sans raison dans sa prison… à la place j’ai eu le droit a un sshd sur pt0 lancé sans que je soit loggué dessus…étrange… (en se momient j’ai des intrusions a répétition sur mon routeur…pas fini de m’amuser j’ai l’impression) mais un jour c’est moi qui aurrait ma vangeance ^^…
enfin bref me revoici apres un vautrage de carte mere…triste la vie ^^… voici la doc tant attendu (si vous avez des remarques a faire dessus, des allègements sur les libs a installer etc…(les fautes).

en se qui conserne les montages je ne vois pas ou sont les trous… c’est une prison pour mysql, par pour le root, ni les admins. le point de montage est a l’exterieur de la prison, pour pointé sur l’interieur de la prison, y a pas de trou…, mais perso je prefere les liens sur les repertoire vers la prison, c’est moin acrobatique.

quote="megs"
en se qui conserne les montages je ne vois pas ou sont les trous…[/quote]C’est une question de principe: si tu fais un chroot, ce n’est pas pour donner accès à l’exterieur. Mais je te l’accorde, tant que tu ne fais pas un bind sur /dev, /sys, ou /proc…[quote=“megs”]c’est une prison pour mysql, par pour le root, ni les admins.[/quote]ni même pour les utilisateurs de la machine si tu vas par là.[quote=“megs”]le point de montage est a l’exterieur de la prison, pour pointé sur l’interieur de la prison, y a pas de trou…[/quote]si tu donnes accés à quelquechose qui n’est pas physiquement dans ton chroot, c’est un accés vers l’exterieur. Sur le principe, c’est un trou, même si ce n’est pas forcément un trou exploitable.[quote=“megs”]mais perso je prefere les liens sur les repertoire vers la prison, c’est moin acrobatique.[/quote]Comprends pas. :confused:

PS: j’ai deplacé le tuto dans trucs et astuces ici: forum.debian-fr.org/viewtopic.php?p=28418

arf je l’avais déjas mis…et ajourné en plus… ^^

non pour le montage, je voulait dire que : comme les points de montage sont a l’exterieur de la prison, mais que les données réelles sont dans la prison, le montage ne concerne uniquement que les utilisateurs hors de la prison.
donc il n’y a aucune faille…(du moin dans le principe)

par contre si je faisait un montage dans la prison en ciblant un repertoire externe a la prison, le montage concerne l’utilisateur de la prison, et c’est un fait…c’est pas genial…

En parlant de ca, j’ai remarqué que en chrootant apache2, makejail creer un montage sur /proc, et je trouve ca tres inquiétant… là c’est un veritable probleme… et une faille immonde…

heu oui pardon ^^… je voulais dire par là que je prefere faire un lien symbolique d’un repertoire hors de la prison vers le repertoire de la prison (pour /var/run/mysqld/ par exemple) plutot qu’un montage qui ajoute des entrées dans la mtab et apparait peniblement avec un df…c’est un peu redondant…et inutile… alors un lien symbolique suffit largement et n’offre pas de faille de sécurité (point de vue interne de la prison), et a le merite d’être une solution simple et sans acrobatie de montage.

vala j’espere avoir été plus clair dans mes propos vaseux ^^…