.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "AA_QUERY_LABEL 2" .TH AA_QUERY_LABEL 2 "2019-03-30" "AppArmor 2.13.2" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" aa_query_label \- query access permission associated with a label .PP aa_query_file_path, aa_query_file_path_len \- query access permissions of a file path .PP aa_query_link_path, aa_query_link_path_len \- query access permissions of a link path .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fB#include \fR .PP \&\fBint aa_query_label(uint32_t mask, char *query, size_t size, int *allowed, int *audited);\fR .PP \&\fBint aa_query_file_path(uint32_t mask, const char *label, size_t label_len, const char *path, int *allowed, int *audited);\fR .PP \&\fBint aa_query_file_path_len(uint32_t mask, const char *label, size_t label_len, const char *path, size_t path_len, int *allowed, int *audited);\fR .PP \&\fBint aa_query_link_path(const char *label, const char *target, const char *link, int *allowed, int *audited);\fR .PP \&\fBint aa_query_link_path_len(const char *label, size_t label_len, const char *target, size_t target_len, const char *link, size_t link_len, int *allowed, int *audited);\fR .PP Link with \fB\-lapparmor\fR when compiling. .SH "DESCRIPTION" .IX Header "DESCRIPTION" The \fBaa_query_label\fR function fetches the current permissions granted by the specified \fIlabel\fR in the \fIquery\fR string. .PP The query is a raw binary formatted query, containing the label and permission query to make. The returned \fIallowed\fR and \fIaudited\fR values are interpreted boolean values, simply stating whether the query is allowed and if it is audited. .PP The mask of the query string is a bit mask of permissions to query and is class type dependent (see \fBAA_CLASS_xxx\fR entries in \fIsys/apparmor.h\fR). .PP The format of the query string is also dependent on the \fB\s-1AA_CLASS\s0\fR and as such the \fBaa_query_xxx\fR helper functions should usually be used instead of directly using \fBaa_query_label\fR. If directly using the interface the \&\fIquery\fR string is required to have a header of \fB\s-1AA_QUERY_CMD_LABEL_SIZE\s0\fR that will be used by \fBaa_query_label\fR. .PP The \fBaa_query_file_path\fR and \fBaa_query_file_path_len\fR functions are helper function that assemble a properly formatted file path query for the \&\fBaa_query_label\fR function. The \fIlabel\fR is a valid apparmor label as returned by \fIaa_splitcon\fR with \fIlabel_len\fR being the length of the \fIlabel\fR. The \fIpath\fR is any valid filesystem path to query permissions for. For the \&\fBaa_query_file_path_len\fR variant the \fIpath_len\fR parameter specifies the number of bytes in the \fIpath\fR to use as part of the query. .PP The \fBaa_query_link_path\fR and \fBaa_query_link_path_len\fR functions are helper functions that assemble a properly formatted link path query for the \&\fBaa_query_label\fR function. The \fIlink_len\fR and \fItarget_len\fR parameters specify the number of bytes in the \fIlink\fR and \fItarget\fR to use as part of the query. .SH "RETURN VALUE" .IX Header "RETURN VALUE" On success 0 is returned, and the \fIallowed\fR and \fIaudited\fR parameters contain a boolean value of 0 not allowed/audited or 1 allowed/audited. On error, \-1 is returned, and \fBerrno\fR\|(3) is set appropriately. .SH "ERRORS" .IX Header "ERRORS" .IP "\fB\s-1EINVAL\s0\fR" 4 .IX Item "EINVAL" The requested \fImask\fR is empty. .Sp The \fIsize\fR of the query is less than the query \fB\s-1AA_QUERY_CMD_LABEL_SIZE\s0\fR .Sp The apparmor kernel module is not loaded or the kernel interface access interface is not available .IP "\fB\s-1ENOMEM\s0\fR" 4 .IX Item "ENOMEM" Insufficient memory was available. .IP "\fB\s-1EACCES\s0\fR" 4 .IX Item "EACCES" Access to the specified \fIlabel\fR or query interface was denied. .IP "\fB\s-1ENOENT\s0\fR" 4 .IX Item "ENOENT" The specified \fIlabel\fR does not exist or is not visible. .IP "\fB\s-1ERANGE\s0\fR" 4 .IX Item "ERANGE" The confinement data is too large to fit in the supplied buffer. .SH "NOTES" .IX Header "NOTES" The label permissions returned are only valid for the time of the query and can change at any point in the future. .SH "BUGS" .IX Header "BUGS" None known. If you find any, please report them at . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBapparmor\fR\|(7), \fBapparmor.d\fR\|(5), \fBapparmor_parser\fR\|(8), \fBaa_getcon\fR\|(2), \fBaa_splitcon\fR\|(3) and .