chroot+mysqlclient

SN
На сайте с 12.07.2010
Offline
9
556

Здравствуйте все.

Такая проблема:

Есть сервер с CentOS, пользователь подключаясь по SSH попадает в chroot-окружение (/home/username). Для создания окружения написал такой скрипт:


#!/bin/sh
user=/home/$1
# Создаём окружение

cd $user
mkdir dev/ bin/ etc/ lib64/
mknod dev/zero c 1 5
mknod dev/null c 1 3
chown root:wheel $user ; chmod 711 $user

# Создаём список команд которые могут использовать юзеры

cp /lib64/ld-linux-x86-64.so.2 $user/lib64
apps="/bin/bash /usr/bin/tail \
/bin/cat /bin/grep /bin/ls \
/bin/pwd /bin/touch /bin/mkdir \
/bin/rmdir /bin/rm /bin/cp
/bin/mv /bin/date /bin/tar \
/bin/sed /usr/bin/awk \
/usr/bin/diff /bin/vi /usr/bin/mysql"
for com in $apps
do
cp -f $com $user/bin/
for lib in `ldd $com | awk '{print $3}'`
do
cp -f $lib $user/lib64
done
echo -n "#"
done
echo ""

Соответственно, всё работает. кроме mysql-клиента. При попытке соедениться с сервером пишет:


[root@server /home/test ]# chroot /home/test /bin/mysql -u test -p -h myserver.ru
ERROR 2005 (HY000): Unknown MySQL server host 'myserver.ru' (3)

"Снаружи" mysql видно, вход разрешён ото всюду, то есть подключаюсь без проблем, а вот из chroot никак.

Может что-то ещё надо добавить в /bin или /lib... Делал и:

[root@server /home/test ]# cat /etc/resolv.conf > etc/resolv.conf

и

[root@server /home/test ]# echo "192.168.1.10 myserver.ru" > etc/hosts

Кто знает, помогите, пожалуйста... Второй день мучаюсь...

Google админу - друг, товарищ и man...
D
На сайте с 11.05.2010
Offline
15
#1

а что дает:

chroot /home/test /bin/mysql -u test -p -h 127.0.0.1

?

С напильником и бубном (http://kaba.org.ua)
SN
На сайте с 12.07.2010
Offline
9
#2

Как что? Пишет нет сокета. Сервер то в chroot не установлен.

D
На сайте с 11.05.2010
Offline
15
#3

А сервер в chroot и не обязателен и chroot - это НЕ jail окружение, поэтому доступ на 127.0.0.1 к mysql должен быть.

И вот эта строчка:

for lib in `ldd $com | awk '{print $3}'`
do
cp -f $lib $user/lib64
done

складируем все библиотеки, что есть в зависимостях, в директорию $user/lib64 - это конечно лихо. Так как окромя /lib64 есть еще и /usr/lib64

SN
На сайте с 12.07.2010
Offline
9
#4
Так как окромя /lib64 есть еще и /usr/lib64

Спасибо. :-)

Переместил то, что нужно в /home/test/usr/lib64, ошибка по поводу хоста пропала, но появилось другое...

Создал файл /home/test/etc/my.cnf, написал в него:

[client]

host = myserver.ru

Теперь вот такая ошибка:

[root@myserver test]# chroot /home/test usr/bin/mysql -u root -p
ERROR 1045 (28000): Access denied for user 'root'@'192.168.1.10' (using password: NO)

Но зато, если явно указать пароль (/usr/bin/mysql -uroot -ptestpassword) - то проблем никаких не возникает... Подключение появилось после перемещения либов, СПАСИБО :-)

Simon-n70 добавил 21.02.2011 в 20:23

В общем, теперь такой вопрос... Подключиться можно только так:

1. заходим в chroot

2. bash-3.2# mysql -utest -pTESTPASSWORD -h192.168.1.10

Ну, или

bash-3.2# mysql -utest -pTESTPASSWORD -hmyserver.ru

А вот, если попытаться выполнить:

bash-3.2# mysql -u test -p

ERROR 1045 (28000): Access denied for user 'test'@'myserver.ru' (using password: NO)

Может кто знает, с чем связано такое поведение?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий