first step in making chroot nestable?
in looking through the code, it seems the follow_dotdot() function in fs/namei.c is the ultimate part of how the kernel keeps programs jailed into a chroot.
basically (very basic) what it appears to do is
if (place we chrooted == current place)
{
we're at the root
} otherwise we aren't
If we would have a linked list of chroot points, and whenever we hit one of those points in a walk, we treat it as a root, wouldn't this chain any fd's one brought into a chroot to the original root of that fd.
yes, there are other things that would have to be taken care of to make a chroot jail more secure, but this should be an easy thing, correct? or am I missing more.
thanks,
shaya