This family of functions is used to obtain policy decisions from the
SELinux kernel security server (policy engine). In general, direct
use of security_compute_av() and its variant interfaces is
discouraged in favor of using selinux_check_access() since the latter
automatically handles the dynamic mapping of class and permission
names to their policy values, initialization and use of the Access
Vector Cache (AVC), and proper handling of per-domain and global
permissive mode and allow_unknown.
When using any of the functions that take policy integer values for
classes or permissions as inputs, use string_to_security_class(3) and
string_to_av_perm(3) to map the class and permission names to their
policy values. These values may change across a policy reload, so
they should be re-acquired on every use or using a
SELINUX_CB_POLICYLOAD callback set via selinux_set_callback(3).
An alternative approach is to use selinux_set_mapping(3) to create a
mapping from class and permission index values used by the
application to the policy values, thereby allowing the application to
pass its own fixed constants for the classes and permissions to these
functions and internally mapping them on demand. However, this also
requires setting up a callback as above to address policy reloads.
security_compute_av() queries whether the policy permits the source
context scon to access the target context tcon via class tclass with
the requested access vector. The decision is returned in avd.
security_compute_av_flags() is identical to security_compute_av but
additionally sets the flags field of avd. Currently one flag is
supported: SELINUX_AVD_FLAGS_PERMISSIVE, which indicates the decision
is computed on a permissive domain.
security_compute_create() is used to compute a context to use for
labeling a new object in a particular class based on a SID pair.
security_compute_create_name() is identical to
security_compute_create() but also takes name of the new object in
creation as an argument. When TYPE_TRANSITION rule on the given
class and a SID pair has object name extension, we shall be able to
obtain a correct newcon according to the security policy. Note that
this interface is only supported on the linux 2.6.40 or later. In
the older kernel, the object name will be simply ignored.
security_compute_relabel() is used to compute the new context to use
when relabeling an object, it is used in the pam_selinux.so source
and the newrole source to determine the correct label for the tty at
login time, but can be used for other things.
security_compute_member() is used to compute the context to use when
labeling a polyinstantiated object instance.
security_compute_user() is used to determine the set of user contexts
that can be reached from a source context. This function is
deprecated; use get_ordered_context_list(3) instead.
security_validatetrans() is used to determine if a transition from
scon to newcon using tcon as the object is valid for object class
tclass. This checks against the mlsvalidatetrans and validatetrans
constraints in the loaded policy. Returns 0 if allowed, and -1 if an
error occurred with errno set.
security_get_initial_context() is used to get the context of a kernel
initial security identifier specified by namesecurity_compute_av_raw(), security_compute_av_flags_raw(),
security_compute_user_raw() security_validatetrans_raw() and
security_get_initial_context_raw() behave identically to their non-
raw counterparts but do not perform context translation.
selinux_check_access() is used to check if the source context has the
access permission for the specified class on the target context.
selinux_check_passwd_access() is used to check for a permission in
the passwd class. selinux_check_passwd_access() uses getprevcon(3)
for the source and target security contexts.
checkPasswdAccess() is a deprecated alias of the
This page is part of the selinux (Security-Enhanced Linux user-space
libraries and tools) project. Information about the project can be
found at ⟨https://github.com/SELinuxProject/selinux/wiki⟩. If you
have a bug report for this manual page, see
page was obtained from the project's upstream Git repository
⟨https://github.com/SELinuxProject/selinux⟩ on 2020-07-14. (At that
time, the date of the most recent commit that was found in the repos‐
itory was 2020-07-10.) If you discover any rendering problems in
this HTML version of the page, or you believe there is a better or
more up-to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not part
of the original manual page), send a mail to firstname.lastname@example.org
email@example.com 1 January 2004 security_compute_av(3)