kern/58497: sysctl knob to return current process' jid
Poul-Henning Kamp
phk at phk.freebsd.dk
Fri Oct 24 14:00:41 PDT 2003
The following reply was made to PR kern/58497; it has been noted by GNATS.
From: "Poul-Henning Kamp" <phk at phk.freebsd.dk>
To: "C. Stephen Gunn" <csg at waterspout.com>
Cc: FreeBSD-gnats-submit at freebsd.org
Subject: Re: kern/58497: sysctl knob to return current process' jid
Date: Fri, 24 Oct 2003 22:57:39 +0200
>There is no easy way to tell if a process is operating in a Jail
>environment.
Yes, in fact there is:
#include <stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/param.h>
#include <sys/user.h>
/*
* Exit 0 = no
* Exit 1 = maybe
* Exit 2 = yes
*/
int
main(int argc, char **argv)
{
int mib[4];
int i, l;
struct kinfo_proc buf;
mib[0] = CTL_KERN;
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PID;
mib[3] = getpid();
l = sizeof buf;
i = sysctl(mib, 4, &buf, &l, NULL, 0);
if (i != 0 || l != sizeof buf)
exit(1);
if (buf.kp_proc.p_flag & P_JAILED)
exit(2);
exit (0);
}
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the freebsd-bugs
mailing list