.TH "getcon" "3" "21 December 2011" "russell@coker.com.au" "SELinux API documentation"
.SH "NAME"
getcon, getprevcon, getpidcon \- get SELinux security context of a process

freecon, freeconary \- free memory associated with SELinux security contexts

getpeercon \- get security context of a peer socket

setcon \- set current security context of a process
.
.SH "SYNOPSIS"
.B #include <selinux/selinux.h>
.sp
.BI "int getcon(char **" context );
.sp
.BI "int getcon_raw(char **" context );
.sp
.BI "int getprevcon(char **" context );
.sp
.BI "int getprevcon_raw(char **" context );
.sp
.BI "int getpidcon(pid_t " pid ", char **" context );
.sp
.BI "int getpidcon_raw(pid_t " pid ", char **" context );
.sp
.BI "int getpeercon(int " fd ", char **" context );
.sp
.BI "int getpeercon_raw(int " fd ", char **" context );
.sp
.BI "void freecon(char *" con );
.sp
.BI "void freeconary(char **" con );
.sp
.BI "int setcon(char *" context );
.sp
.BI "int setcon_raw(char *" context );
.
.SH "DESCRIPTION"
.BR getcon ()
retrieves the context of the current process, which must be free'd with
freecon.

.BR getprevcon ()
same as getcon but gets the context before the last exec.

.BR getpidcon ()
returns the process context for the specified PID.

.BR getpeercon ()
retrieves context of peer socket, and set
.BI * context
to refer to it, which must be free'd with
.BR freecon ().

.BR freecon ()
frees the memory allocated for a security context.

.BR freeconary ()
frees the memory allocated for a context array.

If
.I con
is NULL, no operation is performed.

.BR setcon ()
sets the current security context of the process to a new value.  Note
that use of this function requires that the entire application be
trusted to maintain any desired separation between the old and new
security contexts, unlike exec-based transitions performed via
.BR setexeccon (3).
When possible, decompose your application and use
.BR setexeccon (3)
and
.BR execve (3)
instead.

Since access to file descriptors is revalidated upon use by SELinux,
the new context must be explicitly authorized in the policy to use the
descriptors opened by the old context if that is desired.  Otherwise,
attempts by the process to use any existing descriptors (including
.IR stdin ,
.IR stdout ,
and
.IR stderr )
after performing the
.BR setcon ()
will fail.

A multi-threaded application can perform a
.BR setcon ()
prior to creating
any child threads, in which case all of the child threads will inherit
the new context.  However, prior to Linux 2.6.28,
.BR setcon ()
would fail if there are any other
threads running in the same process since this would yield
an inconsistency among the security contexts of threads sharing
the same memory space.  Since Linux 2.6.28,
.BR setcon()
is permitted for threads within a multi-threaded process if the
new security context is bounded by the old security context, where
the bounded relation is defined through typebounds statements in the
policy and guarantees that the new security context has a subset of
the permissions of the old security context.

If the process was being ptraced at the time of the
.BR setcon ()
operation, ptrace permission will be revalidated against the new
context and the
.BR setcon ()
will fail if it is not allowed by policy.

.BR getcon_raw (),
.BR getprevcon_raw (),
.BR getpidcon_raw (),
.BR getpeercon_raw ()
and
.BR setcon_raw ()
behave identically to their non-raw counterparts but do not perform context
translation.
.
.SH "RETURN VALUE"
On error \-1 is returned.  On success 0 is returned.
.
.SH "SEE ALSO"
.BR selinux "(8), " setexeccon "(3)"
