Re: [PATCH] Permit fixfiles to skip configurable directory from relabelling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/08/2011 01:14 PM, Elia Pinto wrote:
> On Thu, Apr 7, 2011 at 5:53 PM, Daniel J Walsh <dwalsh@xxxxxxxxxx
> <mailto:dwalsh@xxxxxxxxxx>> wrote:
> 
> On 04/07/2011 11:47 AM, Elia Pinto wrote:
>> From: Elia Pinto <yersinia.spiros@xxxxxxxxx
> <mailto:yersinia.spiros@xxxxxxxxx>>
> 
>> This patch permit fixfiles to check /.autorelabel_excluded
>> for a list of directories to exclude from relabelling.
> 
>> Inspired by this blog http://danwalsh.livejournal.com/38157.html.
> 
>> Signed-off-by: Elia Pinto <yersinia.spiros@xxxxxxxxx
> <mailto:yersinia.spiros@xxxxxxxxx>>
>> ---
>>  policycoreutils/scripts/fixfiles   |   44
> ++++++++++++++++++++++++++++++++---
>>  policycoreutils/scripts/fixfiles.8 |    2 +
>>  2 files changed, 42 insertions(+), 4 deletions(-)
> 
>> diff --git a/policycoreutils/scripts/fixfiles
> b/policycoreutils/scripts/fixfiles
>> index ae519fc..ba4d4b1 100755
>> --- a/policycoreutils/scripts/fixfiles
>> +++ b/policycoreutils/scripts/fixfiles
>> @@ -28,6 +28,7 @@ FORCEFLAG=""
>>  DIRS=""
>>  RPMILES=""
>>  LOGFILE=`tty`
>> +FINDEXCLUDEDPATH=""
>>  if [ $? != 0 ]; then
>>      LOGFILE="/dev/null"
>>  fi
>> @@ -46,6 +47,24 @@ else
>>      FC=/etc/security/selinux/file_contexts
>>  fi
> 
>> +# Add an excluded path for the following
>> +# find in the function restore, relabel
>> +
>> +if [ -e /.autorelabel_excluded ]
>> +then
>> +     while read _p
>> +     do
>> +          # skip blank line and comment
>> +          # skip not absolute path
>> +          # skip not directory
>> +          [ -z "${_p}" ] && continue
>> +          [[ "${_p}" =~ "^[[:blank:]]*#" ]] && continue
>> +          [[ ! "${_p}" =~ "^/.*" ]] && continue
>> +          [[ ! -d "${_p}" ]] && continue
>> +       FINDEXCLUDEDPATH="${FINDEXCLUDEDPATH} -o -path \"${_p}\""
>> +     done < /.autorelabel_excluded
>> +fi
>> +
>>  #
>>  # Log to either syslog or a LOGFILE
>>  #
>> @@ -88,7 +107,7 @@ if [ -f ${PREFC} -a -x /usr/bin/diff ]; then
>>                 fi; \
>>              done | \
>>       while read pattern ; do sh -c "find $pattern \
>> -                   ! \( -fstype ext2 -o -fstype ext3 -o -fstype
> ext4 -o -fstype ext4dev  -o -fstype gfs2 -o -fstype jfs -o -fstype
> xfs -o -fstype btrfs \) -prune  -o \
>> +                   ! \( -fstype ext2 -o -fstype ext3 -o -fstype
> ext4 -o -fstype ext4dev  -o -fstype gfs2 -o -fstype jfs -o -fstype
> xfs -o -fstype btrfs ${FINDEXCLUDEDPATH}\) -prune  -o \
>>                     \( -wholename /home -o -wholename /root -o
> -wholename /tmp -wholename /dev \) -prune -o -print0"; \
>>                     done 2> /dev/null | \
>>        ${RESTORECON} $* -0 -f -
>> @@ -127,8 +146,9 @@ if [ ! -z "$RPMFILES" ]; then
>>  fi
>>  if [ ! -z "$FILEPATH" ]; then
>>      if [ -x /usr/bin/find ]; then
>> +        loggit "skipping the directory ${FINDEXCLUDEDPATH//-o
> -path/} from relabelling"
>>       /usr/bin/find "$FILEPATH" \
>> -         ! \( -fstype ext2 -o -fstype ext3 -o -fstype ext4 -o
> -fstype ext4dev -o -fstype gfs2 -o -fstype jfs -o -fstype xfs -o
> -fstype btrfs \) -prune  -o -print0 | \
>> +         ! \( -fstype ext2 -o -fstype ext3 -o -fstype ext4 -o
> -fstype ext4dev -o -fstype gfs2 -o -fstype jfs -o -fstype xfs -o
> -fstype btrfs ${FINDEXCLUDEDPATH}\) -prune  -o -print0 | \
>>           ${RESTORECON} ${FORCEFLAG} $* -0 -f - 2>&1 >> $LOGFILE
>>      else
>>       ${RESTORECON} ${FORCEFLAG} -R $* $FILEPATH 2>&1 >> $LOGFILE
>> @@ -137,8 +157,24 @@ if [ ! -z "$FILEPATH" ]; then
>>  fi
>>  [ -x /usr/sbin/genhomedircon ] && /usr/sbin/genhomedircon
>>  LogReadOnly
>> -${SETFILES} -q ${SYSLOGFLAG} ${FORCEFLAG} $* ${FC}
> ${FILESYSTEMSRW} 2>&1 >> $LOGFILE
>> -rm -rf /tmp/gconfd-* /tmp/pulse-* /tmp/orbit-*
>> +#
>> +#
>> +# "<<none>>" '/md/distro?(/.*)?'
>> +TEMPFILE=`mktemp ${FC}.XXXXXXXXXX`
>> +test -z "$TEMPFILE" && exit
>> +cp -p ${FC} ${TEMPFILE}
>> +FINDEXCLUDEDPATH=${FINDEXCLUDEDPATH//-o -path/}
>> +FINDEXCLUDEDPATH=${FINDEXCLUDEDPATH//\"/}
>> +for _p in $FINDEXCLUDEDPATH
>> +do
>> +     _p="${_p%/}"
>> +     _p1="${_p}(/.*)? -- <<none>>"
>> +     echo "${_p1}" >> $TEMPFILE
>> +        logit "skipping the directory ${_p} from relabelling"
>> +done
>> +
>> +${SETFILES} -q ${SYSLOGFLAG} ${FORCEFLAG} $* ${TEMPFILE}
> ${FILESYSTEMSRW} 2>&1 >> $LOGFILE
>> +rm -rf /tmp/gconfd-* /tmp/pulse-* /tmp/orbit-* $TEMPFILE
>>  find /tmp \( -context "*:file_t*" -o -context "*:unlabeled_t*" \)
> -exec chcon -t tmp_t {} \;
>>  find /var/tmp \( -context "*:file_t*" -o -context
> "*:unlabeled_t*" \) -exec chcon -t tmp_t {} \;
>>  exit $?
>> diff --git a/policycoreutils/scripts/fixfiles.8
> b/policycoreutils/scripts/fixfiles.8
>> index dfe8aa9..865aab4 100644
>> --- a/policycoreutils/scripts/fixfiles.8
>> +++ b/policycoreutils/scripts/fixfiles.8
>> @@ -29,6 +29,8 @@ new policy, or  just check whether the file
> contexts are all
>>  as you expect.  By default it will relabel all mounted ext2,
> ext3, xfs and
>>  jfs file systems as long as they do not have a security context mount
>>  option.  You can use the -R flag to use rpmpackages as an
> alternative.
>> +The file /.autorelabel_exclude can contain a list of directory path
>> +that fixfiles don't relabel.
>>  .P
>>  .B fixfiles onboot
>>  will setup the machine to relabel on the next reboot.
> 
> This file should not be in /, I think it would be better to put it in
> /etc/selinux
> 
> I have attached the current Fedora fixfiles.  Which has some similar
> fixes.

Your patch will be in policycoreutils-2.0.85-30.fc15
> I include two simple patch (-p1 were fixfiles and fixfiles.8 live) for
> adding a conf file that contain the directory to skip for relabel. I
> have followed your advice for the conf path.
> Developed with the version contained in
> policycoreutils-2.0.85-27.fc15.x86_64 (fc15 last update).

> Best Regards

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iEYEARECAAYFAk2jSgoACgkQrlYvE4MpobPxgQCcCT4QLEBKxDEPSp2RBCMAZLa5
+lkAoKtkx0ZF4z6omr657KoTYqmFwCpF
=C7Ee
-----END PGP SIGNATURE-----

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.


[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux