Hi! On Dec 13, Andrew Rucker Jones wrote: > Hi everyone, > First off, please include my personal e-mail address in any responses, > as i am not subscribed to the list. > I run MySQL with the chroot option. Up until 3.23.54, it worked fine.
Up until 3.23.54 it simply didn't work, as mysqld was able to access files outside chroot jail :( > 3.23.54 changed the ordering in which some files were accessed (before > or after chroot()), which messed up the whole system -- entire > directories have to be copied or sym linked, for example. In particular, > it seems that older versions perhaps held an open file descriptor to the > directory where the database files are (which is outside of the chroot() > environment) and was therefore able to manipulate the databases after > the call to chroot(). That's, naturally, was totally wrong, and broke the whole idea of chroot(). > 3.23.54 accesses the databases after chroot(), > which is certainly more secure, but it causes the following problem, > abbreviated from strace: > > chdir("/usr/local/var/mysql/") = 0 > chroot("/chroot/mysql") = 0 > chdir("/") = 0 > open("./mysql/host.frm", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file > or directory) > > This forces me to copy all of my databases into the root directory of > the chroot jail (or at least create sym links to all of them), and leads Symlinking doesn't work. But you can hardlink, if you'd like. > to output like the following: > > mysql> show databases; > +----------+ > | Database | > +----------+ > | etc | > | lib | > | mysql | > | tmp | > | usr | > | var | > +----------+ > 6 rows in set (0.02 sec) > > Has anyone else had this problem, and is there an obvious work around > that i'm missing? Obvious workaround is not to chroot to datadir, but to datadir/.. Regards, Sergei -- MySQL Development Team __ ___ ___ ____ __ / |/ /_ __/ __/ __ \/ / Sergei Golubchik <[EMAIL PROTECTED]> / /|_/ / // /\ \/ /_/ / /__ MySQL AB, http://www.mysql.com/ /_/ /_/\_, /___/\___\_\___/ Osnabrueck, Germany <___/ --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php