Back to main site | Back to man page index

selabel_file(5)                               SELinux API documentation                               selabel_file(5)



NAME
       selabel_file  - userspace SELinux labeling interface and configuration file format for the file contexts back‐
       end

SYNOPSIS
       #include <selinux/label.h>

       int selabel_lookup(struct selabel_handle *hnd,
                          char **context,
                          const char *path, int mode);

       int selabel_lookup_raw(struct selabel_handle *hnd,
                          char **context,
                          const char *path, int mode);

DESCRIPTION
       The file contexts backend maps from pathname/mode combinations into security contexts. It is used to find  the
       appropriate  context  for  each  file  when relabeling a file system. The returned context must be freed using
       freecon(3).
       selabel_lookup(3) describes the function with its return and error codes, however the following errno is clar‐
       ified further for the file contexts backend:

              ENOENT No  context  corresponding  to the path and mode was found - This will also be returned when the
                     file contexts series of files have a context of <<none>> against the path (see the  FILE  FORMAT
                     section).

       The  path argument should be set to the full pathname of the file whose assigned context is being checked. The
       mode argument should be set to the mode bits of the file, as determined by lstat(2). mode may be zero, however
       full matching may not occur.

       Any  messages  generated  by  selabel_lookup(3) are sent to stderr by default, although this can be changed by
       selinux_set_callback(3).

       selabel_lookup_raw(3) behaves identically to selabel_lookup(3) but does not perform context translation.

       The FILES section details the configuration files used to determine a file context.

OPTIONS
       In addition to the global options described in selabel_open(3), this backend recognizes the following options:

              SELABEL_OPT_PATH
                     A non-null value for this option specifies a path to a file that will be opened in lieu  of  the
                     standard file contexts file.  This value is also used as the base name for determining the names
                     of local customization files.

              SELABEL_OPT_BASEONLY
                     A non-null value for this option indicates that any local customizations to  the  file  contexts
                     mapping should be ignored.

              SELABEL_OPT_SUBSET
                     A non-null value for this option is interpreted as a path prefix, for example "/etc".  Only file
                     context specifications with starting with a first component that prefix matches the given prefix
                     are  loaded.   This  may  increase lookup performance, however any attempt to look up a path not
                     starting with the given prefix may fail.  This optimization is no longer required due to the use
                     of file_contexts.bin files and is deprecated.


                  ory' version of the file contexts file.
                  These files have the same name as the mandatory file contexts file with the  extensions  .subs  and
                  .subs_dist added.

       If the SELABEL_OPT_BASEONLY is not set, then the following files will be processed:

              1.  The  mandatory  file  contexts  file  that  is  either  the  fully  qualified  file name from SELA‐
                  BEL_OPT_PATH.value or if NULL, then the path returned by selinux_file_context_path(3).

              2.  The optional local customizations file that has the same name as the mandatory file  contexts  file
                  with the extension .local added.
                  selinux_file_context_local_path(3) will return the default path to this file.

              3.  The  optional  user home directory customizations file that has the same name as the mandatory file
                  contexts file with the extension .homedirs added.
                  selinux_file_context_homedir_path(3) will return the default path to this file.

              4.  The optional local and distribution substitution files that perform any path aliasing  on  the  'in
                  memory' version of the file contexts file (and the .local and/or .homedirs if present). These files
                  have the same name as the mandatory file contexts file with the  extensions  .subs  and  .subs_dist
                  added.
                  selinux_file_context_subs_path(3)   and   selinux_file_context_subs_dist_path(3)  will  return  the
                  default paths to these files.

       The default file context series of files are:
              /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts
              /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.local
              /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.homedirs
              /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.subs
              /etc/selinux/{SELINUXTYPE}/contexts/files/file_contexts.subs_dist

       Where {SELINUXTYPE} is the entry from the selinux configuration file config (see selinux_config(5)).

       Only the file_contexts file is mandatory, the remainder are optional.

       The entries within the file contexts series of files are shown in the FILE FORMAT section.

FILE FORMAT
File Contexts Format
       Each line within the file_contexts and the two customization files (.local and .homedirs) is as follows:

              pathname [file_type] context

       Where:
              pathname
                     An entry that defines the pathname that may be in the form of a regular expression.
              file_type
                     An optional file type consisting of:
                            -b - Block Device      -c - Character Device
                            -d - Directory         -p - Named Pipe
                            -l - Symbolic Link     -s - Socket
                            -- - Ordinary file
              context
                     This entry can be either:


Substitution File Format
       Each line within the substitution files (.subs and .subs_dist) has the form:
              subs_pathname pathname

       Where:
              pathname
                     A path that matches an entry in one or more of the file contexts policy configuration file.
              subs_pathname
                     The path that will be aliased (considered equivalent) with pathname by the look up process.

       Example:
              # ./contexts/files/file_contexts.subs
              # pathname  subs_pathname
              /myweb      /var/www
              /myspool    /var/spool/mail

              Using the above example, when selabel_lookup(3) is passed a path of /myweb/index.html the function will
              substitute the /myweb component with /var/www, therefore the path used is:

                     /var/www/index.html

NOTES
       1.  If contexts are to be validated, then the global option SELABEL_OPT_VALIDATE must be  set  before  calling
           selabel_open(3). If this is not set, then it is possible for an invalid context to be returned.

       2.  If  the  size of file contexts series of files contain many entries, then selabel_open(3) may have a delay
           as it reads in the files, and if requested validates the entries.

       3.  Depending on the version of SELinux it is possible that a file_contexts.template file may also be present,
           however this is now deprecated.
           The  template  file  has  the  same  format  as  the  file_contexts file and may also contain the keywords
           HOME_ROOT, HOME_DIR, ROLE and USER. This functionality has now been moved to the policy store and  managed
           by semodule(8) and genhomedircon(8).

SEE ALSO
       selinux(8), selabel_open(3), selabel_lookup(3), selabel_stats(3), selabel_close(3), selinux_set_callback(3),
       selinux_file_context_path(3), freecon(3), selinux_config(5), lstat(2), selinux_file_context_subs_path(3),
       selinux_file_context_subs_dist_path(3), selinux_file_context_homedir_path(3),
       selinux_file_context_local_path(3), semodule(8), genhomedircon(8)



Security Enhanced Linux                              01 Dec 2011                                      selabel_file(5)