mirror of
https://github.com/SELinuxProject/selinux
synced 2025-01-23 05:44:08 +00:00
a782abf226
Operating on a file descriptor avoids TOCTOU issues and one opened via
O_PATH avoids the requirement of having read access to the file. Since
Linux does not natively support file descriptors opened via O_PATH in
fgetxattr(2) and at least glibc and musl does not emulate O_PATH support
in their implementations, fgetfilecon(3) and fsetfilecon(3) also do not
currently support file descriptors opened with O_PATH.
Inspired by CVE-2013-4392: https://github.com/systemd/systemd/pull/8583
Implementation adapted from: 2825f10b7f
%5E%21/
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
Acked-by: James Carter <jwcart2@gmail.com>
75 lines
1.9 KiB
Groff
75 lines
1.9 KiB
Groff
.TH "getfilecon" "3" "1 January 2004" "russell@coker.com.au" "SELinux API documentation"
|
|
.SH "NAME"
|
|
getfilecon, fgetfilecon, lgetfilecon \- get SELinux security context of a file
|
|
.
|
|
.SH "SYNOPSIS"
|
|
.B #include <selinux/selinux.h>
|
|
.sp
|
|
.BI "int getfilecon(const char *" path ", char **" con );
|
|
.sp
|
|
.BI "int getfilecon_raw(const char *" path ", char **" con );
|
|
.sp
|
|
.BI "int lgetfilecon(const char *" path ", char **" con );
|
|
.sp
|
|
.BI "int lgetfilecon_raw(const char *" path ", char **" con );
|
|
.sp
|
|
.BI "int fgetfilecon(int "fd ", char **" con );
|
|
.sp
|
|
.BI "int fgetfilecon_raw(int "fd ", char **" con );
|
|
.
|
|
.SH "DESCRIPTION"
|
|
.BR getfilecon ()
|
|
retrieves the context associated with the given path in the file system, the
|
|
length of the context is returned.
|
|
|
|
.BR lgetfilecon ()
|
|
is identical to
|
|
.BR getfilecon (),
|
|
except in the case of a symbolic link, where the
|
|
link itself is interrogated, not the file that it refers to.
|
|
|
|
.BR fgetfilecon ()
|
|
is identical to
|
|
.BR getfilecon (),
|
|
only the open file pointed to by filedes (as returned by
|
|
.BR open (2))
|
|
is interrogated in place of path. Since libselinux 3.4 a file opened via
|
|
.I O_PATH
|
|
is supported.
|
|
|
|
.BR getfilecon_raw (),
|
|
.BR lgetfilecon_raw ()
|
|
and
|
|
.BR fgetfilecon_raw ()
|
|
behave identically to their non-raw counterparts but do not perform context
|
|
translation.
|
|
|
|
The returned context should be freed with
|
|
.BR freecon (3)
|
|
if non-NULL.
|
|
.
|
|
.SH "RETURN VALUE"
|
|
On success, a positive number is returned indicating the size of the
|
|
extended attribute value. On failure, \-1 is returned and
|
|
.I errno
|
|
is set appropriately.
|
|
|
|
If the context does not exist, or the process has no access to
|
|
this attribute,
|
|
.I errno
|
|
is set to
|
|
.BR ENODATA .
|
|
|
|
If extended attributes are not supported by the filesystem, or are
|
|
disabled,
|
|
.I errno
|
|
is set to
|
|
.BR ENOTSUP .
|
|
|
|
The errors documented for the
|
|
.BR stat (2)
|
|
system call are also applicable here.
|
|
.
|
|
.SH "SEE ALSO"
|
|
.BR selinux "(8), " freecon "(3), " setfilecon "(3), " setfscreatecon "(3)"
|