9eb9c93275
In attempting to enable building various part of Android with -Wall -Werror, we found that the const security_context_t declarations in libselinux are incorrect; const char * was intended, but const security_context_t translates to char * const and triggers warnings on passing const char * from the caller. Easiest fix is to replace them all with const char *. And while we are at it, just get rid of all usage of security_context_t itself as it adds no value - there is no true encapsulation of the security context strings and callers already directly use string functions on them. typedef left to permit building legacy users until such a time as all are updated. This is a port of Change-Id I2f9df7bb9f575f76024c3e5f5b660345da2931a7 from Android, augmented to deal with all of the other code in upstream libselinux and updating the man pages too. Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov> Acked-by: Eric Paris <eparis@redhat.com>
140 lines
5.4 KiB
Groff
140 lines
5.4 KiB
Groff
.TH "security_compute_av" "3" "1 January 2004" "russell@coker.com.au" "SELinux API documentation"
|
|
.SH "NAME"
|
|
security_compute_av, security_compute_av_flags, security_compute_create, security_compute_create_name, security_compute_relabel,
|
|
security_compute_member, security_compute_user, security_get_initial_context \- query
|
|
the SELinux policy database in the kernel
|
|
.
|
|
.SH "SYNOPSIS"
|
|
.B #include <selinux/selinux.h>
|
|
.br
|
|
.B #include <selinux/flask.h>
|
|
.sp
|
|
.BI "int security_compute_av(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
|
|
.sp
|
|
.BI "int security_compute_av_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
|
|
.sp
|
|
.BI "int security_compute_av_flags(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
|
|
.sp
|
|
.BI "int security_compute_av_flags_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", access_vector_t "requested ", struct av_decision *" avd );
|
|
.sp
|
|
.BI "int security_compute_create(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_create_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_create_name(char * "scon ", char * "tcon ", security_class_t "tclass ", const char *"objname ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_create_name_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", const char *"objname ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_relabel(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_relabel_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_member(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_member_raw(char * "scon ", char * "tcon ", security_class_t "tclass ", char **" newcon );
|
|
.sp
|
|
.BI "int security_compute_user(char * "scon ", const char *" username ", char ***" con );
|
|
.sp
|
|
.BI "int security_compute_user_raw(char * "scon ", const char *" username ", char ***" con );
|
|
.sp
|
|
.BI "int security_get_initial_context(const char *" name ", char **" con );
|
|
.sp
|
|
.BI "int security_get_initial_context_raw(const char *" name ", char **" con );
|
|
.sp
|
|
.BI "int selinux_check_access(const char * " scon ", const char * " tcon ", const char *" class ", const char *" perm ", void *" auditdata);
|
|
.sp
|
|
.BI "int selinux_check_passwd_access(access_vector_t " requested );
|
|
.sp
|
|
.BI "int checkPasswdAccess(access_vector_t " requested );
|
|
.
|
|
.SH "DESCRIPTION"
|
|
.BR security_compute_av ()
|
|
queries whether the policy permits the source context
|
|
.I scon
|
|
to access the target context
|
|
.I tcon
|
|
via class
|
|
.I tclass
|
|
with the
|
|
.I requested
|
|
access vector. The decision is returned in
|
|
.IR avd .
|
|
|
|
.BR security_compute_av_flags ()
|
|
is identical to
|
|
.B security_compute_av
|
|
but additionally sets the
|
|
.I flags
|
|
field of
|
|
.IR avd .
|
|
Currently one flag is supported:
|
|
.BR SELINUX_AVD_FLAGS_PERMISSIVE ,
|
|
which indicates the decision is computed on a permissive domain.
|
|
|
|
.BR 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.
|
|
|
|
.BR security_compute_create_name ()
|
|
is identical to
|
|
.BR \%security_compute_create ()
|
|
but also takes name of the new object in creation as an argument.
|
|
When
|
|
.B TYPE_TRANSITION
|
|
rule on the given class and a SID pair has object name extension,
|
|
we shall be able to obtain a correct
|
|
.I 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.
|
|
|
|
.BR 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.
|
|
|
|
.BR security_compute_member ()
|
|
is used to compute the context to use when labeling a polyinstantiated object
|
|
instance.
|
|
|
|
.BR 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
|
|
.BR get_ordered_context_list ().
|
|
|
|
.BR security_get_initial_context ()
|
|
is used to get the context of a kernel initial security identifier specified by
|
|
.I name
|
|
|
|
.BR security_compute_av_raw (),
|
|
.BR security_compute_av_flags_raw (),
|
|
.BR \%security_compute_create_raw (),
|
|
.BR \%security_compute_create_name_raw (),
|
|
.BR \%security_compute_relabel_raw (),
|
|
.BR \%security_compute_member_raw (),
|
|
.BR \%security_compute_user_raw ()
|
|
and
|
|
.BR \%security_get_initial_context_raw ()
|
|
behave identically to their non-raw counterparts but do not perform context
|
|
translation.
|
|
|
|
.BR selinux_check_access ()
|
|
is used to check if the source context has the access permission for the specified class on the target context.
|
|
|
|
.BR selinux_check_passwd_access ()
|
|
is used to check for a permission in the
|
|
.I passwd
|
|
class.
|
|
.BR selinux_check_passwd_access ()
|
|
uses getprevcon() for the source and target security contexts.
|
|
|
|
.BR checkPasswdAccess ()
|
|
is a deprecated alias of the
|
|
.BR selinux_check_passwd_access ()
|
|
function.
|
|
.
|
|
.SH "RETURN VALUE"
|
|
Returns zero on success or \-1 on error.
|
|
.
|
|
.SH "SEE ALSO"
|
|
.BR selinux "(8), " getcon "(3), " getfilecon "(3), " get_ordered_context_list "(3)"
|