All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Serge E. Hallyn" <serue@us.ibm.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: Xavier Toth <txtoth@gmail.com>, SELinux List <selinux@tycho.nsa.gov>
Subject: Re: problem with capabilities inheritance and auditing in python
Date: Tue, 10 Feb 2009 15:30:59 -0600	[thread overview]
Message-ID: <20090210213059.GA11776@us.ibm.com> (raw)
In-Reply-To: <1234300127.7397.27.camel@localhost.localdomain>

Quoting Stephen Smalley (sds@tycho.nsa.gov):
> On Tue, 2009-02-10 at 14:59 -0600, Xavier Toth wrote:
> > On Tue, Feb 10, 2009 at 2:33 PM, Stephen Smalley <sds@tycho.nsa.gov> wrote:
> > > On Tue, 2009-02-10 at 14:20 -0600, Xavier Toth wrote:
> > >> On Tue, Feb 10, 2009 at 12:34 PM, Serge E. Hallyn <serue@us.ibm.com> wrote:
> > >> > Quoting Xavier Toth (txtoth@gmail.com):
> > >> >> I was not putting capabilities on the script but rather on a compiled
> > >> >> wrapper which execs a python script in which I need to do auditing.
> > >> >> Will this not work?
> > >> >
> > >> > No, because of the way capabilities are re-calculated on exec().
> > >> >
> > >> >        pI' = pI
> > >> >        pP' = (X&fP) | (pI & fI)
> > >> >        pE' = fE ? pP' : 0
> > >> >
> > >> > So since the interpreter has fI=fP=fE=0 and is not setuid root (which
> > >> > would fill in fP and/or fE to emulate privileged root), pP' and pE' will
> > >> > be empty after exec().
> > >> >
> > >> > Now you could use a wrapper as follows:  Have the wrapper fill pI,
> > >> > and then fill fI on the python interpreter.  Any user who has an
> > >> > empty pI (which generally is all users) will execute python scripts
> > >> > with no privilege, but when the wrapper execs the script, pP' will
> > >> > be filled with (pI&fI) = full.
> > >> >
> > >> > -serge
> > >> >
> > >>
> > >> Thanks for the clarification.
> > >> For anyone one that is interested I've included some test code. The
> > >> wrapper is a modified version of a wrapper Stephen sent me a link to.
> > >> Basic steps to test are:
> > >> 1) edit the wrapper to set the path to the audit_test.py script
> > >> 2) compiler the wrapper
> > >>     gcc -o audit-wrapper audit-wrapper.c -lcap
> > >> 3) set the capabilities on the wrapper and python
> > >>     setcap cap_audit_write,cap_setfcap=epi audit-wrapper
> > >
> > > Why cap_setfcap (set file capability)?
> > 
> > The wrapper adds the 'i' back to cap_audit_write as it goes away when
> > audit-wrapper runs. I was printing the capabilities in the wrapper for
> > debug purposes when I noticed that it capabilities were "=
> > cap_audit_write,cap_setfcap+ep". I think without the i cap_audit_write
> > can't be inherited by the child process.
> 
> cap_setfcap controls setting of file capabilities via setxattr(2).
> cap_setpcap may have an effect on setting of process capabilities, but I
> don't think it is required if you are just setting inheritable to
> something in your permitted set.

Right, to be able to put cap_audit_write in pI, you either need to
have cap_audit_write in pP, or to have cap_setpcap in pP.

-serge

--
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:[~2009-02-10 21:30 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-05 17:08 problem with capabilities inheritance and auditing in python Xavier Toth
2009-02-05 18:10 ` Stephen Smalley
2009-02-06 21:56   ` Xavier Toth
2009-02-09 14:02     ` Stephen Smalley
2009-02-09 16:42       ` Xavier Toth
2009-02-09 20:17         ` Stephen Smalley
2009-02-09 20:42           ` Serge E. Hallyn
2009-02-10 17:00             ` Xavier Toth
2009-02-10 18:34               ` Serge E. Hallyn
2009-02-10 20:20                 ` Xavier Toth
2009-02-10 20:33                   ` Stephen Smalley
2009-02-10 20:59                     ` Xavier Toth
2009-02-10 21:08                       ` Stephen Smalley
2009-02-10 21:30                         ` Serge E. Hallyn [this message]
2009-02-10 21:38                       ` Serge E. Hallyn
2009-02-10 21:45                         ` Xavier Toth
2009-02-10 21:25                   ` Stephen Smalley
2009-02-10 21:37                     ` Xavier Toth
2009-02-10 21:38                       ` Stephen Smalley
2009-02-10 21:46                       ` Serge E. Hallyn
2009-02-10 21:44                     ` Serge E. Hallyn

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=20090210213059.GA11776@us.ibm.com \
    --to=serue@us.ibm.com \
    --cc=sds@tycho.nsa.gov \
    --cc=selinux@tycho.nsa.gov \
    --cc=txtoth@gmail.com \
    /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.