linux-only jail possible?

John Nielsen lists at jnielsen.net
Tue Mar 16 00:46:49 UTC 2010


On Sunday 07 March 2010 05:44:37 am Ed Schouten wrote:
> * Alexander Leidinger <Alexander at Leidinger.net> wrote:
> > On Sat, 6 Mar 2010 19:15:12 +0100 Ed Schouten <ed at 80386.nl> wrote:
> > > I am still in doubt what to do. Maybe we could consider committing
> > > a patch like this:
> >
> > [...]
> >
> > > This is a bit more complete. What it does, is that it creates a
> > > symlink from /proc/%d/fd to /dev/fd, only if the calling process
> > > matches. Then when you mount fdescfs on /dev/fd, it also does the
> > > right thing, because it will always readlink() on a character
> > > device, which also returns an error code.
> > >
> > > Comments, suggestions anyone?
> >
> > Looks better than the one before. :)
>
> Great. Just committed it to SVN:
>
> 	http://svn.freebsd.org/viewvc/base?view=revision&revision=204825

I finally tried the patch from SVN today and it does NOT resolve the 
openpty issue on FreeBSD 8-STABLE amd64 + CentOS 5.4 i386 jail + OpenSSH 
4.3p2. I still (or again) get the "fatal: openpty returns device for 
which ttyname fails." message.

Your prior patch from this thread (below) still works fine.

JN

On Saturday 06 March 2010 12:41:59 pm John Nielsen wrote:
> On Saturday 06 March 2010 03:12:38 Ed Schouten wrote:
> > Behold, another way to fix this. Still not beautiful, but in my
> > opinion not too bad.
>
> Pretty or not the hack does the job. Thanks again!
>
> > Index: sys/compat/linprocfs/linprocfs.c
>
> ===================================================================
>
> > --- sys/compat/linprocfs/linprocfs.c	(revision 204763)
> > +++ sys/compat/linprocfs/linprocfs.c	(working copy)
> > @@ -1312,6 +1312,8 @@
> >  	    NULL, NULL, NULL, PFS_RD);
> >  	pfs_create_file(dir, "status", &linprocfs_doprocstatus,
> >  	    NULL, NULL, NULL, PFS_RD);
> > +	/* XXX: Hack to make ttyname() work. */
> > +	pfs_create_file(dir, "fd", NULL, NULL, NULL, NULL, PFS_RD);
> >
> >  	/* /proc/scsi/... */
> >  	dir = pfs_create_dir(root, "scsi", NULL, NULL, NULL, 0);
> >
> > This creates a bogus file called /proc/%d/fd. Because of this, the
> > readlink() call will return ENOTDIR.


More information about the freebsd-emulation mailing list