All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Reiser <reiser@namesys.com>
To: George Beshers <gbeshers@comcast.net>
Cc: David Dabbs <david@dabbs.net>, reiserfs-list@namesys.com
Subject: Re: viewprinting: what format should views be stored in?
Date: Wed, 18 Aug 2004 13:20:52 -0700	[thread overview]
Message-ID: <4123BA24.2060001@namesys.com> (raw)
In-Reply-To: <4123ABEE.9020001@comcast.net>

George Beshers wrote:

>
> Thanks for joining the discussion.  I have answered your questions
> as best I can for the moment---which in fact has been to make some
> further points and encourage you and others to ask more questions
> and make more suggestions :-)
>
>
> David Dabbs wrote:
>
>>
>> Questions
>> ----------------------------------------------------------------------
>> Handwaving for a moment over view creation and storage particulars, it
>> is pretty clear that this new security feature will rely upon reiser4 
>> for masking. Does this mean that one will only be able to mask a 
>> reiser4 filesystem, or will any VFS fs be "maskable?"
>>  
>>
> As a proof of concept reiser4---although I think that the ability to 
> work with
> multiple reiser4 mounted filesystems is relevant and important.
>
>> All file types and access methods will be supported, yes? (mmap, AIO, 
>> DIRECT, pipes, hard/sym links, etc.)
>>  
>>
> That is the plot.  Again, we are taking the point of view that the 
> proof of concept
> does not need to be complete; links however are included.
>
>> In the original proposal posted to the list Hans (I think) referred 
>> to viewprinting as "chroot on steroids." Let's assume that the mask 
>> creation tools deliver on making viewprint creation and maintainance 
>> very easy/painless for admins. In what way will viewprinting be more 
>> secure than chroot?
>>  
>>
> Basically, chroot as I at least normally use it, has a lot of baggage 
> in terms of
> disk consumption that we are planning to avoid by creating a view 
> rather than
> a copy.

Chroot lacks fall through points.

> Second, users always interact with a system via executables so
> normally the executables have taken on the security attributes of the 
> user
> (set-UID being the major exception on Unix) but, to some extent, we are
> developing a new semantic.
>
> While views for DBMS, ClearCase, etc. have been around for a long time
> attaching access lists to process seems to be semi-virgin territory, at
> least for Unix systems.
>
> Any and all pointers to references to prove me wrong appreciated :-)
>
>> If I understand the ways admins use chroot, or would like to use it, 
>> then should the design include "stackable" or "inheritable" masks? 
>> This is not unlike stackable filesystems or filter pipelines. If, for 
>> instance, most processes need to see /usr/local/lib/* and 
>> /usr/local/bin/*, then this spec is in a 'base' mask and the mask for 
>> /usr/local/bin/fooprocess would inhert from and add to this base 
>> specification.
>>  
>>
> Something like this had occurred to me, but I think that for a proof 
> of concept
> having the tools that assist the user in creating the mask make it 
> easy to
> include these but have each actual mask on disk be a standalone entity is
> the way to go.
>
> I think that inherited masks from a parent process are a much stronger
> requirement---think about restricted shell.
>
> All questions which keep me from wasting time on an overly simplistic
> approach welcome :-)
>
>> Early on in the conversation, there was discussion about "permissible 
>> functionality." At a minimum, a mask, true to its name, will effect 
>> filesystem object _visibility_. It was not completely clear whether 
>> the mask will be proscriptive viz operations. IOW, will the mask say 
>> that fooprocess "is not permitted to [attempt to] RWX object bar?" I 
>> believe this is not something masks will do, but I wanted clarification.
>>  
>>
> The attempt will be blocked with a suitable error return from the 
> system call,
> it is the responsibility of the mask administrator to get this right.
>
> There are many interesting application correctness and/or mask 
> correctness
> questions which will need a lot more thought to bring to fruition.
>
>> Hans, in your preferred approach you referred to "a format that is as 
>> if it is a subdirectory of the masked executable." Did you have
>> in mind checking for something like /usr/bin/fooprocess/metas/mask 
>> when exec() loads the exe, and if this exists then the files rooted 
>> in this directory would be set as the process's root filesystem?
>>
>> Are masks capable of explicit exclusion as well as inclusion?
>> If the answer is 'Yes,' then what are your thoughts as to how this 
>> might be accommodated when your main tool is reiser4's semantic tree 
>> layer? Inclusion would be straightforward -- if the directory exists 
>> or the name exists within the directory then fall through. But 
>> exclusion? If you are limited to the semantic layer, then there's no 
>> stat node with which to play tricks.  
>>
> I think the correct answer is "anything not explicitly included is 
> excluded"
> or on the other side of the looking glass "anything not explicitly 
> excluded
> is included".
>
> As a user friendly interface both should be supported and the 
> "compilation"
> layer handle the conversion.
>
> Maybe I am not understanding the question.

clearcase has an exclude operation for its view specifications.

>
>> I wonder if it would be feasible if masks only specified exclusions? 
>> If, for instance, the mask wanted to exclude /foo/*, then the 
>> directory foo would exist (in the mask semantic tree). To exclude 
>> /etc/passwd, passwd would exist in the directory /etc. Since you're 
>> already going to need to preempt dcache searches (aren't you?) you 
>> can insert a search of the mask tree. If the search fails, then it is 
>> not excluded and the request falls through to normal VFS handling. In 
>> the /etc/passwd case above, it would find /etc/passwd and so the file 
>> is excluded. Processing would stop there, returning some error. How 
>> does this sound? I need to sleep on this, because it is very late here.
>>  
>>
> At this time I think feasible is true and useful is an open question.
>
> To address the useful I find that known/desirable use-case scenarios
> get the most discussion.
>
> To give a couple of examples:
>     1) A given process (say a restricted shell) can not exec() an
>         executable with the set-uid bit on.
>          - directly
>          - indirectly (e.g., via bash)
>     2) Apache can only create/write files in /var/web/incoming.
>          - files created or modified can not have any execute bit set 
> and executing chmod is excluded.

this protection happens while traversing the mask or at the fall through 
point.  Hmmm, we need to accumulate a set of permissions that apply to 
something that are specific to how we got there.  That could be complex 
in the VFS details.  We can defer it to Phase II if necessary.  George, 
you should spend a day (not this week) figuring out how much work it 
would be to make that work.  It will be the details of it that will be 
dangerous....

>
> This will be the topic of many future e-mails I am sure. ;-)
>
>>
>> David
>>
>>  
>>
>
>
>


  reply	other threads:[~2004-08-18 20:20 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-18  7:52 viewprinting: what format should views be stored in? David Dabbs
2004-08-18 18:37 ` David Masover
2004-08-18 21:47   ` George Beshers
2004-08-18 19:20 ` George Beshers
2004-08-18 20:20   ` Hans Reiser [this message]
2004-08-18 21:44     ` George Beshers
2004-08-18 21:48       ` Hans Reiser
2004-08-18 23:18         ` George Beshers
2004-08-19  0:42           ` Hans Reiser
2004-08-19  2:01             ` George Beshers
2004-08-19  5:50               ` Hans Reiser
2004-08-19 12:48                 ` George Beshers
2004-08-20  6:59                   ` Hans Reiser
2004-08-20 12:36                     ` George Beshers
2004-08-20 18:14                       ` Hans Reiser
2004-08-20 21:42                         ` George Beshers
2004-08-18 19:34 ` Hans Reiser
  -- strict thread matches above, loose matches on Subject: below --
2004-08-22  5:45 David Dabbs
2004-08-21 20:48 David Dabbs
2004-08-21  7:38 David Dabbs
2004-08-21  8:59 ` Hans Reiser
2004-08-20 22:29 David Dabbs
2004-08-20 17:14 David Dabbs
2004-08-20  7:23 David Dabbs
2004-08-20 16:10 ` Valdis.Kletnieks
2004-08-20 21:04   ` George Beshers
2004-08-21  6:42     ` Hans Reiser
2004-08-19  7:40 David Dabbs
2004-08-19 11:21 ` David Greaves
2004-08-19 16:16   ` George Beshers
2004-08-20  6:19     ` Hans Reiser
2004-10-26 14:45       ` Lamont R. Peterson
2004-10-26 16:39         ` Hans Reiser
2004-10-26 16:57           ` George Beshers
2004-10-26 18:37             ` Hans Reiser
2004-10-26 20:20               ` George Beshers
2004-10-27  4:48                 ` Hans Reiser
     [not found]   ` <4124D09A.1060208@comcast.net>
2004-08-19 17:31     ` David Greaves
2004-08-20  6:52       ` Hans Reiser
2004-08-20 12:08         ` George Beshers
2004-08-20 14:07         ` David Greaves
2004-10-26 15:54         ` Lamont R. Peterson
2004-10-27  1:04           ` David Masover
2004-08-20  6:13   ` Hans Reiser
2004-08-19 14:30 ` George Beshers
2004-08-16  0:15 Hans Reiser
2004-08-16  1:48 ` George Beshers
2004-08-16  2:02   ` Hans Reiser
2004-08-16 13:47     ` George Beshers
2004-08-16 19:50     ` George Beshers
2004-08-17  7:07       ` Hans Reiser
2004-08-17 19:29         ` George Beshers
2004-08-17 20:28           ` Hans Reiser
2004-08-17 23:46             ` George Beshers
2004-08-18  2:22               ` Hans Reiser
     [not found]         ` <4121F4D6.8090506@comcast.net>
2004-08-17 19:43           ` Hans Reiser

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=4123BA24.2060001@namesys.com \
    --to=reiser@namesys.com \
    --cc=david@dabbs.net \
    --cc=gbeshers@comcast.net \
    --cc=reiserfs-list@namesys.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.