Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: st_dimitrov в Mar 12, 2006, 21:53



Титла: Mysql chroot
Публикувано от: st_dimitrov в Mar 12, 2006, 21:53
цял ден се опитвам да заключа mysql в chroot но все ми бяга...

Примерен код

root@darkstar:/backup/chroots/mysql# chroot /backup/chroots/mysql/ /usr/local/mysql/bin/mysqld_safe --user=mysql
chown: `mysql': invalid user
Starting mysqld daemon with databases from /usr/local/mysql/data
STOPPING server from pid file /usr/local/mysql/data/darkstar.pid
060312 19:49:23  mysqld ended

root@darkstar:/backup/chroots/mysql#


Примерен код

root@darkstar:/backup/chroots/mysql# chroot /backup/chroots/mysql/ /bin/bash
I have no name!@darkstar:/# cat /etc/passwd | grep mysql
mysql:x:1000:100::/home/mysql:
I have no name!@darkstar:/# exit
exit
root@darkstar:/backup/chroots/mysql#  


?! Рових се известно време в гугъл и намерих един пич, който е имал същия проблем, но е с  бсд  явно... препратка

Помагайте  ???


Титла: Mysql chroot
Публикувано от: daf в Mar 12, 2006, 22:45
Нямам линукс под ръка но си мисля, че може да е проблем с pam модулите. Копирай в chroot-a `id` и пробвай `id mysql`... вероятно ще ти изкара грешка, която ще те насочи към решението.


Титла: Mysql chroot
Публикувано от: st_dimitrov в Mar 12, 2006, 23:13
root@darkstar:/backup/chroots/mysql# chroot /backup/chroots/mysql/ /bin/bash

I have no name!@darkstar:/# echo `id mysql`
id: mysql: No such user

I have no name!@darkstar:/# echo `id`
uid=0 gid=0 groups=0,1,2,3,4,6,10,11
I have no name!@darkstar:/# exit
exit
root@darkstar:/backup/chroots/mysql#


Титла: Mysql chroot
Публикувано от: daf в Mar 13, 2006, 02:59
пробвай да копираш /etc/pam.d в chroot-а.


Титла: Mysql chroot
Публикувано от: st_dimitrov в Mar 13, 2006, 07:11
Нямам PAM ;)


Титла: Mysql chroot
Публикувано от: vesselinkolev в Mar 13, 2006, 10:04
Понеже гледам, че никой не дава един нормален отговор (това с PAM беше наистина много сърцераздирателно, все едно в chroot ще имаш процеси на удостоверяване).

Схемата е следната. В chroot трябва да имаш glibc, или поне онази част от този пакет, която да ти дава възможност да работиш с nsswitch.conf.

Виж както ще ти даде като списък с библиотеки следния команден ред:

$ ldd /usr/local/mysql/bin/mysqld_safe

Вземи този списък и файловете от него копирай chroot директорията, в поддиректориите, в които следва да бъдат библиотеките. Т.е. всичко, което е в /lib, отива в ${CHROOT_DIR}/lib и т.н.

Само предположение (не съм заключвал mysql), но в /etc поддиректорията в chroot, трябва да имаш задължително следните файлове:

group
host.conf
hosts
hosts.allow
hosts.deny
localtime
nsswitch.conf
passwd
resolv.conf
services

Именно в passwd ще опишеш потребителя, с чиито права ще стартираш mysql процеса. Не те съветвам в chroot средата да слагаш каквито и да са командни интерпретатори. В твоя случай това може даже да е опасно. Т.е. в ${CHROOT_DIR}/bin не бива да има примерно bash, sh и т.н. интерпретатори.


Титла: Mysql chroot
Публикувано от: st_dimitrov в Mar 13, 2006, 13:42
mysql-a ми е от готов пакет - статично компилиран... лд и лдд нищо не ми връщат ;) интерпретатора съм го сложил за да мога от самия затвор да достигам по-лесно базата данни.. когато оправя всичко ги махам...

mysqld_safe представлява един шел скрипт, като реално изпълнимия файл е mysqld

root@darkstar:/backup/chroots/mysql# ldd usr/local/mysql/bin/mysqld
        not a dynamic executable
root@darkstar:/backup/chroots/mysql#  

root@darkstar:/backup/chroots/mysql# ld usr/local/mysql/bin/mysqld
ld: warning: cannot find entry symbol _start; defaulting to 00000000080480e0
root@darkstar:/backup/chroots/mysql#  

root@darkstar:/backup/chroots/mysql# head usr/local/mysql/bin/mysqld -c 29 && echo ""
ELF4
root@darkstar:/backup/chroots/mysql#

приемам всякакви насоки  :huh:


Титла: Mysql chroot
Публикувано от: vesselinkolev в Mar 13, 2006, 18:59
Цитат (st_dimitrov @ Март 13 2006,14:42)
mysql-a ми е от готов пакет - статично компилиран... лд и лдд нищо не ми връщат ;) интерпретатора съм го сложил за да мога от самия затвор да достигам по-лесно базата данни.. когато оправя всичко ги махам...

Това не променя много задачата. Няма да гадая (не знам с каква дистрибуция си), но можеш първо да копираш /lib в ${CHROOT_DIR}/lib. След това указаните от мен файлове в предишния ми отговор от /etc/ в ${CHROOT_DIR}/etc.

Може да се наложи да направиш и някой устройства в ${CHROOT_DIR}/dev (прмерно /dev/null, /dev/zero, /dev/random и /dev/urandom).


Титла: Mysql chroot
Публикувано от: st_dimitrov в Mar 17, 2006, 07:22
Проблема се оказа в библиотечката libnss_compat.so.2 :)