All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel J Walsh <dwalsh@redhat.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: SELinux <selinux@tycho.nsa.gov>, Eric Paris <eparis@redhat.com>,
	Chad Sellers <csellers@tresys.com>
Subject: Re: We need libselinux to lie...
Date: Tue, 22 Jun 2010 16:59:33 -0400	[thread overview]
Message-ID: <4C212435.9070806@redhat.com> (raw)
In-Reply-To: <1277235172.28715.122.camel@moss-pluto.epoch.ncsc.mil>

On 06/22/2010 03:32 PM, Stephen Smalley wrote:
> On Tue, 2010-06-22 at 13:06 -0400, Daniel J Walsh wrote:
>> When building packages within mock/livecd.
>>
>> We really want the processes running within the chroot to not do SELinux
>> stuff.
>>
>> We want libselinux to tell them that SELinux is disabled.
>>
>> For example if we install selinux-policy package within a mock chroot or
>> livecd we do not want it to try to load_policy.  Other rpms try chcon or
>> restorecon in post installs.  These are get turned off if the tools
>> think SELinux is disabled.  We are not doing this for security reasons.
> 
> I understand not wanting to load policy.  Not so sure that you want to
> suppress all labeling during the rpm installation though.
> 
>> We have been hacking this out, but replaceing $CHROOT/proc/filesystem
>> with a version that does not include filesystem, but we have found this
>> to require large privs for mock. (mount -o bind /tmp/filesystem
>> $CHROOT/proc/filesystem; requires mock_t to read /dev/loop which is
>> labeled fixed_disk_device_t)
> 
> I don't quite understand this.  Why can't you simply do:
> mount -o bind /dev/null /proc/filesystems
> if you just want an empty /proc/filesystems?
> 
> Or you could just create an empty file and do the same.  Why
> is /dev/loop involved?
> 

grep -v selinuxfs /proc/filesystems  > /tmp/filesystems
strace -o /tmp/out mount -o bind /tmp/filesystems /mnt/dan
 grep loop /tmp/out
stat("/dev/loop", 0x7fff70495750)       = -1 ENOENT (No such file or
directory)
open("/dev/loop0", O_RDONLY)            = 3
open("/dev/loop0", O_RDWR)              = 4
mount("/dev/loop0", "/mnt/dan", 0x7fb82aa32474, MS_MGC_VAL|MS_BIND,
NULL) = 0
write(5, "/dev/loop0 /mnt/dan none rw,bind"..., 37) = 37

We tried this in mock, and we ended up needing

allow mock_t fixed_disk_device_t:file read;

/dev/null does not use /dev/loop but might cause other scripts to blow up.


>> We have considered playing tricks with libselinux.so but those seem a
>> little dangerous.
> 
> $ cat libnoselinux.c
> int is_selinux_enabled(void)
> {
> 	return 0;
> }
> $ gcc -fPIC -c libnoselinux.c 
> $ ld -shared -soname libnoselinux.so -o libnoselinux.so -lc libnoselinux.o
> $ LD_PRELOAD=./libnoselinux.so sestatus
> SELinux status:                 disabled
> 
We considered this also, shipping libselinux_disabled.so with libselinux
and then playing this trick.  Which is fine with me.  We had concerns
about possibly polluting rpmbuild, into adding a requires
libselinux_disabled.so


>> Eric has come up with an idea of adding a field to
>> $CHROOT/etc/selinux/config to tell is_selinux_enabled() to return false.
>>
>> SPECIAL_ENABLED=force_off
>>
>> Then mock could just set this flag in the config file and all apps would
>> think SELinux is disabled.
>>
>> Does this seem reasonable?
> 
> Doesn't seem necessary.  Harmless though as long as it can only by set
> via admin-controlled config.  What we do not want is an environment
> variable or the like, whereby an untrusted caller could turn off SELinux
> permission checking in passwd by making it appear that SELinux was
> disabled.
> 

I could go with either solution.

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

  reply	other threads:[~2010-06-22 20:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-22 17:06 We need libselinux to lie Daniel J Walsh
2010-06-22 17:34 ` Chad Sellers
2010-06-22 17:39   ` Daniel J Walsh
2010-06-22 19:32 ` Stephen Smalley
2010-06-22 20:59   ` Daniel J Walsh [this message]
2010-06-23 12:46     ` Stephen Smalley
2010-06-23  8:03 ` Paul Howarth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C212435.9070806@redhat.com \
    --to=dwalsh@redhat.com \
    --cc=csellers@tresys.com \
    --cc=eparis@redhat.com \
    --cc=sds@tycho.nsa.gov \
    --cc=selinux@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.