From: Andy Lutomirski <luto@stanford.edu>
To: Michael Glasgow <glasgowNOSPAM@beer.net>
Cc: linux-kernel@vger.kernel.org
Subject: Re: posix capabilities inheritance
Date: Wed, 22 Oct 2003 18:57:36 -0700 [thread overview]
Message-ID: <3F973590.5040707@stanford.edu> (raw)
In-Reply-To: <200310230136.h9N1aZfn002145@dark.beer.net>
Michael Glasgow wrote:
> Andy Lutomirski wrote:
>
>>Maybe I misread the spec, but I thought it explicitly stated
>>pP' = (fP & X) | (fI & pI)
>>(I can't find it right now, though...)
>
>
> I don't see *any* rules for capabilities evolution explicitly
> defined. There are some limitations and some mandatory characteristics
> that any rules of evolution must possess, and these seem to make
> sense to me as far as they go. But there's no explicit "pP' = blah";
> perhaps there needs to be.
Section 3, line 36 or so of my copy of POSIX draft 1003.1e gives:
I1 = I0
P1 = (Pf && X) || (If && I0)
E1 = Ef && P1
[where P0 is pP and p1 is pP']
Not sure how relevant this is, though.
>>I would hope that, on a system that supports file capabilities, a
>>file w/o capabilities set and w/o setuid would behave exactly like
>>a file with some "default" capabilities. In my patch, these
>>capabilities are (=ei). In mainline Linux, there is no such
>>capability set (witness the logic in cap_binprm_set_security).
>
>
> I agree for the most part, but why would you choose (=ei) rather
> than just (=i)?
I don't really see the point of fE in any case, but, since traditional POSIX
apps have no concept of disables capabilities, I figured that all capabilities
enabled should be the default.
In any case, it could be useful to use (=i) to mean "this process shouldn't use
capabilities by default" or (=ip) to mean "this process is privileged, but it
shouldn't use those privileges without knowing what it's doing". Neither
version seems to offer any real security benefit, but if (=i) were the default,
then I don't see the benefit of (=ei).
> [...] Also, what in your opinion should be the meaning
> of (fE != 0 && fP=0) versus (fE != 0 && fP = fE)?
fP (in my mind) means "this file gets these capabilities always" while fE means
"if this file has these capabilities after exec evolution rules, then they
should be enabled _unless they were already disabled." I could easily be
convinced that I'm wrong, though.
>>With the (POSIX) rule pE' = pP' & fE, the dumpcap process would
>>have been uid=0, euid=500, and all caps effective, which is
>>inconsistant with traditional semantics. Linux currently works
>>correctly because fE and fP are dependent on initial uid and euid.
>
>
> I do not think that rule is specified by the POSIX 1003.1e draft
> either, although it is compliant. Necessary distinction because
> I believe we can change the rules in various ways and still be
> compliant, if that is important.
I don't think it really matters, but I changed my patch to be closer to the
rules quoted above. Remember that this draft is withdrawn.
> Also, it is clear that the inconsistency you point out is due to
> your assumption that a file with no capabilities is (=ei) by default.
> If it were (=i), then this problem goes away, right?
I think this just changes the problem. The POSIX rule (assuming my copy isn't
bogus) gives pE = pP' & fE, which means that (if fE==0) any program that root
wants to run with caps (most often CAP_DAC_OVERRIDE I presume) needs to either
have fE explicitly set to full or be rewritten to enable its capabilities. This
breaks userspace.
Andy
next prev parent reply other threads:[~2003-10-23 1:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.f9mv0tb.27sf3j@ifi.uio.no>
2003-10-23 1:36 ` Michael Glasgow
2003-10-23 1:57 ` Andy Lutomirski [this message]
[not found] <fa.f26d55g.1qgijbi@ifi.uio.no>
[not found] ` <fa.hq0dft9.9i0obd@ifi.uio.no>
2003-10-24 21:24 ` Andy Lutomirski
[not found] <fa.n4rmmgg.2423pm@ifi.uio.no>
[not found] ` <fa.l1oevhb.1s5k583@ifi.uio.no>
2003-10-24 8:44 ` Andy Lutomirski
2003-10-24 12:41 ` Theodore Ts'o
2003-10-24 16:44 ` Andy Lutomirski
2003-10-24 20:58 ` David Wagner
[not found] <fa.f4bs2b4.fhub0m@ifi.uio.no>
2003-10-23 22:05 ` Michael Glasgow
2003-10-23 22:59 ` Theodore Ts'o
2003-10-24 1:36 ` Ernie Petrides
2003-10-24 2:19 ` Bernd Eckenfels
2003-10-24 5:10 ` Ernie Petrides
2003-10-25 19:51 ` Pavel Machek
2003-10-23 1:41 Albert Cahalan
[not found] <fa.f36f4t9.1rg8j3v@ifi.uio.no>
2003-10-22 7:11 ` Michael Glasgow
2003-10-22 19:40 ` Andy Lutomirski
[not found] <fa.hehull9.10mmngt@ifi.uio.no>
2003-10-21 18:24 ` Andy Lutomirski
-- strict thread matches above, loose matches on Subject: below --
2003-10-21 11:26 Michael Glasgow
2003-10-23 16:46 ` Theodore Ts'o
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=3F973590.5040707@stanford.edu \
--to=luto@stanford.edu \
--cc=glasgowNOSPAM@beer.net \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome