Date: Tue, 03 May 2011 23:16:10 +0200 From: Uffe Jakobsen <uffe@uffe.org> To: freebsd-jail@freebsd.org Subject: Re: Getting hostname from jail_getid(3) or ezjail(5) Message-ID: <4DC0709A.4040705@uffe.org> In-Reply-To: <20110208173032.38e0a073@adolfputzen> References: <20110208173032.38e0a073@adolfputzen>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2011-02-08 17:30, Julian Fagir wrote: > Hi, > > I wanted to write a tool starting a shell in a jail. I know, jexec > accomplishes this too, but I want to compile the name of the jail into the > program, no commandline-parameters (more about this topic will be posted on > this list soon). > Thus, I used libjail, more specific jail_getid(3) to get the id of the jail > and start a shell in it. > The name of the jail is 'jail2', it was created by ezjail(5), and the > important lines in /usr/local/etc/ezjail/jail2 are: > export jail_jail2_hostname="zweihorn2" > export jail_jail2_ip="IPADDRESS" > export jail_jail22_rootdir="/usr/jails/jail2" > > Anyway, when starting the jail, `jls` bravely shows as the hostname of the > jail 'jail2'. > > But when I compile this program (with `cc -ljail jexec_sh.c -o jexec_sh`) > > #include<sys/types.h> > #include<sys/param.h> > #include<sys/jail.h> > > #include<string.h> > #include<unistd.h> > #include<stdio.h> > #include<jail.h> > > #define JAIL_NAME "jail2" > > int > main(int argc, char* argv[]) { > char *jname; > int jid; > > jid = jail_getid(JAIL_NAME); > printf("Jail 2 is running: %d\n", jid); > jname = jail_getname(jid); > printf("Jailname: '%s' to jid %d\n", jname, jid); > return(0); > } > > jail_getid returns -1; meaning the jailname does not exist. When setting > JAIL_NAME to "1" (or "2", etc., according to the jid, if I restarted it), the > jid is correctly returned: > zweihorn1# /home/julian/jexec_sh > Jail 1 is running: 1 > Jailname: '1' to jid 1 > > Am i missing something? jail_getid/jail_getname should return exactly the > output I expected?! ezjail must be setting the name right as jls returns the > correct name. jls does nearly the same, though requesting directly the params > without libjail, but libjail does that internally, too. > > > Regards, Julian jail_name and jail_hostname are not the same thing - jls without options does not display jail_name only hostname - try to look at the output of "jls -v" This (pending) patch enabled setting of jail_name from rc.d/rc.conf framework http://www.freebsd.org/cgi/query-pr.cgi?pr=conf/150599 /Uffe
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4DC0709A.4040705>