security_compute_av, security_compute_av_flags, security_compute_create, security_compute_create_name, security_compute_relabel, security_compute_member, security_compute_user, security_validatetrans, security_get_initial_context — query the SELinux policy database in the kernel


#include <selinux/selinux.h>

int security_compute_av(char *scon, char *tcon, security_class_t tclass, access_vector_t requested, struct av_decision *avd);

int security_compute_av_raw(char *scon, char *tcon, security_class_t tclass, access_vector_t requested, struct av_decision *avd);

int security_compute_av_flags(char *scon, char *tcon, security_class_t tclass, access_vector_t requested, struct av_decision *avd);

int security_compute_av_flags_raw(char *scon, char *tcon, security_class_t tclass, access_vector_t requested, struct av_decision *avd);

int security_compute_create(char *scon, char *tcon, security_class_t tclass, char **newcon);

int security_compute_create_raw(char *scon, char *tcon, security_class_t tclass, char **newcon);

int security_compute_create_name(char *scon, char *tcon, security_class_t tclass, const char *objname, char **newcon);

int security_compute_create_name_raw(char *scon, char *tcon, security_class_t tclass, const char *objname, char **newcon);

int security_compute_relabel(char *scon, char *tcon, security_class_t tclass, char **newcon);

int security_compute_relabel_raw(char *scon, char *tcon, security_class_t tclass, char **newcon);

int security_compute_member(char *scon, char *tcon, security_class_t tclass, char **newcon);

int security_compute_member_raw(char *scon, char *tcon, security_class_t tclass, char **newcon);

int security_compute_user(char *scon, const char *username, char ***con);

int security_compute_user_raw(char *scon, const char *username, char ***con);

int security_validatetrans(char *scon, const char *tcon, security_class_t tclass, char *newcon);

int security_validatetrans_raw(char *scon, const char *tcon, security_class_t tclass, char *newcon);

int security_get_initial_context(const char *name, char **con);

int security_get_initial_context_raw(const char *name, char **con);

int selinux_check_access(const char *scon, const char *tcon, const char *class, const char *perm, void *auditdata);

int selinux_check_passwd_access(access_vector_t requested);

int checkPasswdAccess(access_vector_t requested);


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 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. It is mainly used by get_ordered_context_list().

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 name

security_compute_av_raw(), security_compute_av_flags_raw(), security_compute_create_raw(), security_compute_create_name_raw(), security_compute_relabel_raw(), security_compute_member_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() for the source and target security contexts.

checkPasswdAccess() is a deprecated alias of the selinux_check_passwd_access() function.

Return Value

Returns zero on success or -1 on error.

See Also

selinux(8), getcon(3), getfilecon(3), get_ordered_context_list(3)

Referenced By

avc_add_callback(3), avc_compute_create(3), avc_has_perm(3), avc_open(3), get_ordered_context_list(3).

The man pages checkPasswdAccess(3), security_compute_av_flags(3), security_compute_av_flags_raw(3), security_compute_av_raw(3), security_compute_create(3), security_compute_create_name(3), security_compute_create_name_raw(3), security_compute_create_raw(3), security_compute_member(3), security_compute_member_raw(3), security_compute_relabel(3), security_compute_relabel_raw(3), security_compute_user(3), security_compute_user_raw(3), security_get_initial_context(3), security_get_initial_context_raw(3), selinux_check_access(3) and selinux_check_passwd_access(3) are aliases of security_compute_av(3).

1 January 2004 SELinux API documentation