From: guido@trentalancia.com (Guido Trentalancia)
Date: Sat, 19 Mar 2011 20:54:46 +0100
Subject: [refpolicy] restorecon needs to read bin_t symlinks
In-Reply-To: <1300554772.3034.28.camel@tesla.lan>
References: <1300549506.3034.24.camel@tesla.lan>
<4D84D11C.5090909@gmail.com> <1300554772.3034.28.camel@tesla.lan>
Message-ID: <1300564486.3101.14.camel@tesla.lan>
To: refpolicy@oss.tresys.com
List-Id: refpolicy.oss.tresys.com
On Sat, 19/03/2011 at 18.12 +0100, Guido Trentalancia wrote:
> On Sat, 19/03/2011 at 16.51 +0100, Dominick Grift wrote:
> > On 03/19/2011 04:45 PM, Guido Trentalancia wrote:
> > > Hello !
> > >
> > > I have recently started to experience AVC denials due to restorecon
> > > trying to read bin_t symbolic links. It is not entirely clear to me what
> > > is triggering this, since everything has been working fine for a long
> > > time.
> > >
> > > In any case, I had to apply the following patch on my system (and I am
> > > still asking myself why not files_read_all_symlinks then ?):
> > >
> > > diff -pruN refpolicy-git-17032011/policy/modules/kernel/files.if refpolicy-git-17032011-restorecon/policy/modules/kernel/files.if
> > > --- refpolicy-git-17032011/policy/modules/kernel/files.if 2011-02-22 18:50:44.460551925 +0100
> > > +++ refpolicy-git-17032011-restorecon/policy/modules/kernel/files.if 2011-03-19 16:21:01.701636861 +0100
> > > @@ -4425,7 +4425,28 @@ interface(`files_relabelfrom_usr_files',
> > >
> > > ########################################
> > > ##
> > > -## Read symbolic links in /usr.
> > > +## Read symbolic links with type
> > > +## bin_t (usually located in /bin,
> > > +## /sbin, /usr/bin and /usr/sbin).
> > > +##
> > > +##
> > > +##
> > > +## Domain allowed access.
> > > +##
> > > +##
> > > +#
> > > +interface(`files_read_bin_symlinks',`
> >
> > This interface is already available in corecommands module:
> >
> > corecmd_read_bin_symlinks()
> >
> > can you enclose the AVC denial that you were seeing?
> >
> > It is probably this:
> >
> > ls -alZ /sbin/restorecon
> > lrwxrwxrwx. root root system_u:object_r:bin_t:s0 /sbin/restorecon
> > - -> setfiles
>
> Yes, apart from the duplicate interface, the restorecon symbolic link is
> created by the original Makefile from policycoreutils. It's fine to me
> if setfiles is just copied off instead of linked.
Actually it has nothing to do with restorecon being a symbolic link to
the setfiles binary.
Without the "read" capability restorecon is not able to relabel the
target file. This is quite bad as we could have non-standard things such
as:
ls -al /bin/example_executable
lrwxrwxrwx. root root /bin/example_executable
-> /opt/example/example_application
and example_application never getting relabelled as bin_t (but instead
falling back to usr_t).
If "file_type:lnk_file read" does not imply the ability to read the
actual content of the target file then perhaps we could even use
files_read_all_symlinks().
And by the way setfiles/restorecon might also need
logging_send_audit_msgs(setfiles_t).
Regards,
Guido